multivolumefile (0.2.3)
Installation
pip install --index-url multivolumefileAbout this package
multi volume file wrapper library
=============== multivolumefile
.. image:: https://coveralls.io/repos/github/miurahr/multivolume/badge.svg?branch=master :target: https://coveralls.io/github/miurahr/multivolume?branch=master
.. image:: https://github.com/miurahr/multivolume/workflows/Run%20Tox%20tests/badge.svg :target: https://github.com/miurahr/multivolume/actions
MultiVolumefile is a python library to provide a file-object wrapping multiple files as virtually like as a single file. It inherit io.RawIOBase class and support some of its standard methods.
See API details at python library reference_
.. _python library reference: https://docs.python.org/3/library/io.html
Status
multivolumefile module is under active development and considered as Alpha state. It is not good idea to use it on production systems, but it may work well in a limited range of usage. Please check limitations and passed test cases.
Install
You can install it as usual public libraries, you can use pip command
pip install multivolumefile
You are also able to add it to your setup.py/cfg as dependency.
Usages
- For reading multi-volume files, that has names
archive.7z.0001,archive.7z.0002and so on, you can call multivolumefile as follows;
.. code-block::
with multivolumefile.open('archive.7z', 'rb') as vol:
data = vol.read(100)
vol.seek(500)
- For writing multi-volue files, that has names
archive.7z.0001,archive.7z.0002and so on, you can call multivolumefile as follows;
.. code-block::
data = b'abcdefg'
with multivolumefile.open('archive.7z', 'wb') as vol:
size = vol.write(data)
vol.seek(0)
you will see file archive.7z.001 are written.
Limitations and known issues
- fileno() is not supported and when call it, you will get RuntimeError exception.
- There are several non-implemented functions such as truncate() and writeline() that will raise NotimplementedError
- There are several non-implemented functions such as readlines(), readline() and readall().
- Text mode is not implemented.
- Caution: When globbing existent volumes, it glob all files other than 4-digit extensions, it may break your data.
Contribution
You are welcome to contribute the project, as usual on github projects, Pull-Requests are always welcome.
License
Multivolume is licensed under GNU Lesser General Public license version 2.1 or later.
========= ChangeLog
All notable changes to this project will be documented in this file.
Unreleased_
Added
Changed
Fixed
Deprecated
Removed
Security
v0.2.3_
Added
- implement readall()
Chnaged
- lint with black
v0.2.2_
Added
- Add py.typed file for type hinting.
v0.2.1_
Added
- Add
nameproperty that indicate basename of volumes - Add
stat()that returnstat_resultwhich has as mostly same methods asos.stat_resultclass except for platform dependent methods.
v0.2.0_
Added
- Type hint information bundled.
Fixed
- Seek() returns current position.
Changed
- Explanation of unsupported methods an modes in README
v0.1.4_
Fixed
- Fix append mode bug.
v0.1.3_
Fixed
- Fix added volume size become wrong
v0.1.2_
Fixed
- Fix append mode (#1)
v0.1.1_
Fixed
- Fin NotImplementedError when writing boudning of target files
v0.1.0_
- API changed
Added
- Add mode 'x', 'xb' and 'xt'
- Add mode 'a', 'ab' and 'at'
- Support flush()
Changed
- Change API: file argument of 'r' and 'rb' now single basename instead of list of files
v0.0.5_
- Support context manager
- Support read functions.
.. History links .. _Unreleased: https://github.com/miurahr/py7zr/compare/v0.2.2...HEAD .. _v0.2.2: https://github.com/miurahr/py7zr/compare/v0.2.1...v0.2.2 .. _v0.2.1: https://github.com/miurahr/py7zr/compare/v0.2.0...v0.2.1 .. _v0.2.0: https://github.com/miurahr/py7zr/compare/v0.1.4...v0.2.0 .. _v0.1.4: https://github.com/miurahr/py7zr/compare/v0.1.3...v0.1.4 .. _v0.1.3: https://github.com/miurahr/py7zr/compare/v0.1.2...v0.1.3 .. _v0.1.2: https://github.com/miurahr/py7zr/compare/v0.1.1...v0.1.2 .. _v0.1.1: https://github.com/miurahr/py7zr/compare/v0.1.0...v0.1.1 .. _v0.1.0: https://github.com/miurahr/py7zr/compare/v0.0.5...v0.1.0 .. _v0.0.5: https://github.com/miurahr/py7zr/compare/v0.0.1...v0.0.5