Releases: markokr/rarfile
Releases · markokr/rarfile
rarfile v4.2
rarfile v4.1
Features:
- Support 7zip/p7zip as decompression backend. [#71]
- RAR5: check password before trying to read file (chigusa) [#79]
New APIs:
- Make get_rar_version a public function (Safihre) [#63]
- New option:
part_only
forRarFile
, to read only single file and allow it to be middle-part of multi-volume archive. - Add
RarFile.printdir
, use it in dumprar. Needed to examine FILE_COPY or HARD_LINK entries that do not contain data.
Fixes:
- Use OS separator to access filename. Should fix subdirectory entry access on Windows. [#96]
- DirectReader: check seek position on each read. Fixes read reading from multiple entries in parallel on RarFile backed by file object. [#81]
- DirectReader: properly disable CRC check when seeking. [#73]
- Reset _hdrenc_main before processing a new volume. Fixes CRC checks on multi-volume reads. [#80]
- Adapt to Python 3.10 argparse (MeggyCal) [#85]
- SFX: Handle volume numbering special cases better.
- nsdatetime: support pypy internal use
- Throw error if backend does not support passwords.
Cleanups:
- ci: Use proper unrar on Windows. MingW one tolaretes paths with
/
better than upstream build. - ci: Add Python 3.10 to the testing (Christian Clauss) [#76]
- Avoid isascii, not in 3.6
rarfile v4.0
Main goals are:
- Increased
zipfile
-compatibility, thus also achieving smaller difference between RAR3 and RAR5 archives. - Implement
RarFile.extract
on top ofRarFile.open
instead usingunrar x
directly, thus making maintenance of alternative backends more manageable. Negative aspect of that is that there are features that internal extract code does not support - hard links, NTFS streams and junctions.
Breaking changes:
- Directory names will have "/" appended. [#31]
RarFile.extract
operates only on single entry, so when used on directory it will create directory but not extract files under it.RarFile.extract
/RarFile.extractall
/RarFile.testrar
will not launch special unrar command line, instead they are implemented on top ofRarFile.open
.- Keyword args in top-level APIs were renamed to match zipfile:
- RarFile(rarfile) -> RarFile(file)
- RarFile.setpassword(password) -> .setpassword(pwd)
- RarFile.getinfo(fname) -> .getinfo(name)
- RarFile.open(fname, mode, psw) -> .open(name, mode, pwd)
- RarFile.read(fname, psw) -> .read(name, pwd)
PATH_SEP
cannot be changed from "/".
New features:
RarFile.extract
will return final sanitized filename for target file. [#42, #52]RarInfo.is_dir
is now preferred spelling ofisdir()
. Old method kept as alias. [#44]- New
RarInfo.is_file
andRarInfo.is_symlink
methods. Only one of~RarInfo.is_file
,~RarInfo.is_dir
or~RarInfo.is_symlink
can be True. RarFile.printdir
hasfile
argument for output.RarFile.__iter__
loops overRarInfo
entries.- RAR3: throw
NeedFirstVolume
exception with current volume number, like RAR5 does. [#58] - Nanosecond timestamp support. Visible as
nsdatetime
instance. - Minimal CLI when run as script:
python3 -m rarfile
- Skip old file versions in versioned archive.
Cleanups:
- Use PBKDF2 implementation from
hashlib
. - Improve test coverage.
rarfile v3.3
Fixes:
- Add the .sfx test files to MANIFEST.in for inclusion in pypi tarball. [#60]
- Add all files in git to tarball.
rarfile v3.2
New features:
- Support
unar
as decompression backend. It has much better support for RAR features thanbsdtar
. [#36] - Support SFX archives - archive header is searched in first 2MB of the file. [#48]
- Add
HACK_TMP_DIR
option, to force temp files into specific directory. [#43]
Fixes:
- Always use "/" for path separator in command-line, gives better results on Windows.
Cleanups:
- Drop module-level options from docs, they create confusion. [#47]
- Drop support for Python 2 and 3.5 and earlier. Python 2 is dead and requiring Python 3.6 gives blake2s, stdlib that supports pathlib, and ordered dict without compat hacks.
- Replace PyCrypto with PyCryptodome in tests.
- Use Github Actions for CI.