./archivers/py-rarfile, RAR archive reader for Python

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 4.2, Package name: py312-rarfile-4.2, Maintainer: pkgsrc-users

This is Python module for RAR archive reading. The interface is made as zipfile
like as possible. Licensed under ISC license.

Features:

* Supports both RAR3 and RAR5 format archives.
* Supports multi volume archives.
* Supports Unicode filenames.
* Supports password-protected archives.
* Supports archive and file comments.
* Archive parsing and non-compressed files are handled in pure Python code.
* Compressed files are extracted by executing external tool: either unrar from
RARLAB or bsdtar from libarchive.
* Works with both Python 2.7 and 3.x.


Required to run:
[devel/py-setuptools] [archivers/bsdtar] [lang/python37]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 149.879 KB

Version history: (Expand)


CVS history: (Expand)


   2024-11-11 08:29:31 by Thomas Klausner | Files touched by this commit (862)
Log message:
py-*: remove unused tool dependency

py-setuptools includes the py-wheel functionality nowadays
   2024-06-11 11:04:30 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-rarfile: updated to 4.2

Version 4.2 (2024-04-03)

Features:

* Support ``unrar-free`` >= 0.2.0.
* Add :meth:`RarFile.is_solid` to check if archive uses
  solid compression.

Fixes:

* Support old multi-volume archives better where ENDARC
  does not contain NEXTVOL.

Cleanups:

* ci: Drop Python 3.7, add 3.12
* ci: upgrade actions
   2024-01-12 06:34:59 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-rarfile: updated to 4.1

Version 4.1 (2023-09-17)

Features:

* Support 7zip/p7zip as decompression backend.
* RAR5: check password before trying to read file (chigusa)

New APIs:

* Make get_rar_version a public function (Safihre)
* New option: ``part_only`` for :class:`RarFile`,
  to read only single file and allow it to be middle-part
  of multi-volume archive.
* Add :meth:`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.
* DirectReader: check seek position on each read.
  Fixes read reading from multiple entries in parallel
  on RarFile backed by file object.
* DirectReader: properly disable CRC check when seeking.
* Reset _hdrenc_main before processing a new volume.
  Fixes CRC checks on multi-volume reads.
* Adapt to Python 3.10 argparse (MeggyCal)
* 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)
* Avoid isascii, not in 3.6
   2022-10-14 13:48:48 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-rarfile: updated to 4.0

rarfile v4.0

Main goals are:

Increased zipfile-compatibility, thus also achieving smaller difference between \ 
RAR3 and RAR5 archives.
Implement RarFile.extract on top of RarFile.open instead using unrar 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.
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 of RarFile.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.
RarInfo.is_dir is now preferred spelling of isdir(). Old method kept as alias.
New RarInfo.is_file and RarInfo.is_symlink methods. Only one of \ 
~RarInfo.is_file, ~RarInfo.is_dir or ~RarInfo.is_symlink can be True.
RarFile.printdir has file argument for output.
RarFile.__iter__ loops over RarInfo entries.
RAR3: throw NeedFirstVolume exception with current volume number, like RAR5 does.
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.
   2022-01-04 21:55:40 by Thomas Klausner | Files touched by this commit (1595)
Log message:
*: bump PKGREVISION for egg.mk users

They now have a tool dependency on py-setuptools instead of a DEPENDS
   2021-10-26 11:57:20 by Nia Alarie | Files touched by this commit (140)
Log message:
archivers: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and SHA512
hashes.
   2021-10-07 15:06:15 by Nia Alarie | Files touched by this commit (140)
Log message:
archivers: Remove SHA1 distfiles hashes
   2020-07-29 14:10:46 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-rarfile: updated to 3.3

rarfile v3.3

Fixes:
Add the .sfx test files to MANIFEST.in for inclusion in pypi tarball.
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 than bsdtar.
Support SFX archives - archive header is searched in first 2MB of the file.
Add HACK_TMP_DIR option, to force temp files into specific directory.

Fixes:
Always use "/" for path separator in command-line, gives better \ 
results on Windows.

Cleanups:
Drop module-level options from docs, they create confusion.
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.