
unrar2-cffi -- Work with RAR files.
Description
unrar2-cffi is a python extension that exposes unrar library
functionality through a zipfile
-like interface.
This is a fork/modified version of unrar-cffi that supports modern Python starting from 3.9+
This build also target unrar 7.x instead of unrar 5.x from the original unrar-cffi project.
Difference
This packages has some difference to the original one:
- Added typing information
- Added
__slots__
to improve performance a bit. - Moved all the
RarInfo
into at-property data
- Now you can access the raw header data by using
file._header
- Added docstring to most functions.
- Implement
RarFile.printdir()
Features
The package implements the following RarFile
functions:
namelist()
infolist()
getinfo()
read()
open()
testrar()
rarfile.is_rar_file()
Usage
-
Install with PIP:
pip install unrar2-cffi
-
Use from code:
from unrar.cffi import rarfile
rar = rarfile.RarFile('sample.rar')
assert rar.testrar() == None
for filename in rar.namelist():
info = rar.getinfo(filename)
print("Reading {}, {}, {} bytes ({} bytes compressed)".format(info.filename, info.date_time, info.file_size, info.compress_size))
data = rar.read(filename)
print("\t{}...\n".format(data[:100]))
Build
Requirements
Linux/macOS:
- gcc compiler suite (
build-essential
packages should be enough) - docker (only for
buildmanylinux
)
Windows:
- VS2022 Build Tools (PLATFORM_TOOLSET=v143)
- Visual C++ compiler suite
vswhere
Compile and test
./build.sh init
./build.sh build
./build.sh test
If you have docker installed, you can build all the manylinux
wheels:
./build.sh within [manylinux docker image] buildmanylinux
./build.sh within [manylinux docker image] testmanylinux
By deafult the image quay.io/pypa/manylinux2010_x86_64
will be used.
Use $DOCKER_IMAGE
and $PLAT
variables to customize the build.
Problems
Windows:
- If you need to retarget solution, apply the
0001-build-retarget-to-vs2022-10.0-v143.patch
that will utilize the latest version.
macOS:
- The macOS version are monkeypatching unrar 6.x makefile to utilize C++11