Skip to main content

A libarchive wrapper for Python supporting password protection.

Project description

ci pypi

A SmartFile Open Source project.

SmartFile

Overview

A complete wrapper for the libarchive library generated using SWIG. Also included in the package are compatibility layers for the Python zipfile and tarfile modules.

Libarchive supports the following:

  • Reads a variety of formats, including tar, pax, cpio, zip, xar, lha, ar, cab, mtree, rar, and ISO images.

  • Writes tar, pax, cpio, zip, xar, ar, ISO, mtree, and shar archives.

  • Automatically handles archives compressed with gzip, bzip2, lzip, xz, lzma, or compress.

For information on installing libarchive and python-libarchive, see Building.

Introduction

There are actually two APIs exposed by this library.

The first API is a high level pythonic class-based interface that should seem comfortable to Python developers. If you are just getting started with python-libarchive, this is probably where you should start.

The second API is a low-level wrapper around libarchive. This wrapper provides access to the C API exposed by libarchive. A few additions or changes were made to allow easy consumption from Python, but otherwise, most libarchive example code will work (although with Python syntax). This API will be useful to those familiar with libarchive, or those that need functionality not available in the high level API.

Using the high-level API

The high level API provides a pythonic class-based interface for working with archives. On top of this is a very thin compatibility wrapper for the standard Python zipfile and tarfile modules. Since the standard Python zipfile and tarfile modules both present a different interface, so do the compatibility wrappers.

These compatibility wrappers are provided so that python-libarchive can be a drop-in replacement for the standard modules. A reason to use libarchive instead of the standard modules is that it provides native performance and better memory consumption. So if you already have code using one of these modules, you can sin many cases just replace the standard module with the libarchive alternative.

However, if you are developing a new project, it is recommended that you forgo the compatibility wrappers. Using the high-level API directly means you can support the many archive formats that libarchive does through the same standard interface.

The workhorse of the high-level API is the Archive class. This is a forward-only iterator that allows you to open an archive of any supported formant and iterate it’s contents.

import libarchive

a = libarchive.Archive('my_archive.zip')
for entry in a:
    print entry.pathname
a.close()

python-libarchive is also a context manager, so the above could be written as:

import libarchive

with libarchive.Archive('my_archive.zip') as a:
    for entry in a:
        print entry.pathname

You can also extract files. However, you can only extract the current item. Once you have iterated past an entry, there is no going back.

import libarchive

with libarchive.Archive('my_archive.zip') as a:
    for entry in a:
        if entry.pathname == 'my_file.txt':
            print 'File Contents:', a.read()

Besides the read() method, there is also readpath() and readstream(). Readpath() will extract the file to a path or already opened file. Readstream() will return a file-like object that can be used to read chunks of the file. Larger files being read from the archive should probably use one of these functions instead of read() which will read then entire contents into memory.

Writing archives is also straightforward. You open an Archive() class then add files to it using one of the write() methods.

import libarchive

with libarchive.Archive('my_archive.zip', 'w') as a:
    for name in os.listdir('.'):
        a.write(libarchive.Entry(name), file(name, 'r').read())

Again, there is also a writepath() method which will write a file-like object or path directly to the archive. The above example could have been written as the following.

import libarchive

with libarchive.Archive('my_archive.zip', 'w') as a:
    for name in os.listdir('.'):
        a.writepath(libarchive.Entry(name), name)

In addition to the Archive class. There is also SeekableArchive. This class provides random access when reading an archive. It will remember where entries are located within the archive stream, and will close/reopen the stream and seek to the entry’s location. So, you can extract an item directly. The first example can be written as follows.

import libarchive

with libarchive.SeekableArchive('my_archive.zip') as a:
    print 'File Contents:', a.read('my_file.txt')

There is overhead involved in using the SeekableArchive, so it is suggested that you use the Archive in cases that you don’t need random access to an archives entries. In fact, the above example was probably better off using the Archive class.

Using the low-level API

Using the low-level API leaves all the work to you. You will need to be careful to create and free libarchive structures yourself. You will also need to be well-versed in the return codes and expected parameters of libarchive. In fact, if you are not, then you probably should stop reading now.

from libarchive import _libarchive

a = _libarchive.archive_read_new()
_libarchive.archive_read_support_filter_all(a)
_libarchive.archive_read_support_format_all(a)
_libarchive.archive_read_open_fd(a, f.fileno(), 10240)
while True:
    e = _libarchive.archive_entry_new()
    try:
        r = _libarchive.archive_read_next_header2(a, e)
        if r != _libarchive.ARCHIVE_OK:
            break
        n = _libarchive.archive_entry_pathname(e)
        if n != 'my_file.txt':
            continue
        l = _libarchive.archive_entry_size(e)
        s = _libarchive.archive_read_data_into_str(a, l)
        print 'File Contents:', s
    finally:
        _libarchive.archive_entry_free(e)
_libarchive.archive_read_close(a)
_libarchive.archive_read_free(a)

As you can see this is a lot more work for little benefit. But as stated before, you may end up interacting with the low-level API if some of the functionality you require is not covered in the high-level API.

And as always, patches are appreciated!

Installing libarchive

Many Linux distributions include libarchive 2. This extension only works with libarchive 3. In these cases, you must install libarchive to a /usr/local. This will allow it to co-exist with the version installed with your distribution. To install libarchive using autoconf, follow the instructions below.

Prerequisites.

You will need either automake or cmake to install libarchive. Also required is python-dev. In addition, you will also need a compiler and some other tools. To install these prerequisites do the following:

On Debian/Ubuntu:

# Install compiler and tools
$ sudo apt-get install build-essential libtool python-dev

# Install automake
$ sudo apt-get install automake

# Or install cmake
$ sudo apt-get install cmake

Or CentOS/Fedora:

# Install compiler and tools
$ sudo yum groupinstall "Development Tools"
$ sudo yum install python-devel libtool

# Install automake
$ sudo yum install automake

# Or install cmake
$ sudo yum install cmake

You should now be able to install libarchive.

$ wget https://libarchive.org/downloads/libarchive-3.6.1.tar.gz
$ tar xzf libarchive-3.6.1.tar.gz

# Configure using automake...
$ cd libarchive-3.6.1/
$ build/autogen.sh
$ ./configure --prefix=/usr/local

# Or configure using cmake...
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../libarchive-3.6.1

# Now compile and install...
$ make
$ sudo make install

Now that the library is installed, you need to tell ld where to find it. The easiest way to do this is to add /usr/local/lib to the ld.so.conf.

$ sudo sh -c 'echo /usr/local/lib > /etc/ld.so.conf.d/libarchive3.conf'
$ sudo ldconfig

Now libarchive 3.6.1 is installed into /usr/local/. The next step is to build and install python-libarchive.

Installing python-libarchive

Now that libarchive is installed, you can install the python extension using the steps below.

$ wget https://files.pythonhosted.org/packages/1b/ab/f7791f241675e5041a7e466f6990dcb0a58ff9fb7a3495644aef3612ba40/python-libarchive-4.2.0.tar.gz
$ tar xzf python-libarchive-4.2.0.tar.gz
$ cd python-libarchive-4.2.0/
$ sudo python setup.py install

You can also install using pip.

$ pip install python-libarchive

setup.py will explicitly link against version 3.6.1 of the library.

Hacking / Running the Test Suite

The test suite is located in the root directory. This is done purposefully to make hacking easier. If you make changes to the library, you can run the test suite against the local copy in the libarchive/ subdirectory rather than the version installed on your system.

However, this means you need to have the extension compiled in this same directory. You will also need SWIG for this step. You can accomplish this using the following commands.

On Debian/Ubuntu:

$ sudo apt-get install swig

Or CentOS/Fedora:

$ sudo yum install swig

Now you can re-SWIG the interface and recompile the extension.

$ cd libarchive/
$ make
$ cd ..

Now you can run the test suite from the main directory.

$ python tests.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-libarchive-4.2.1.tar.gz (58.5 kB view details)

Uploaded Source

Built Distributions

python_libarchive-4.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (516.9 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (517.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (517.0 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-cp311-cp311-musllinux_1_1_x86_64.whl (658.5 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

python_libarchive-4.2.1-cp311-cp311-musllinux_1_1_i686.whl (677.4 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

python_libarchive-4.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

python_libarchive-4.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (644.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-cp310-cp310-musllinux_1_1_x86_64.whl (651.9 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

python_libarchive-4.2.1-cp310-cp310-musllinux_1_1_i686.whl (671.3 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

python_libarchive-4.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

python_libarchive-4.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (637.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-cp39-cp39-musllinux_1_1_x86_64.whl (651.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

python_libarchive-4.2.1-cp39-cp39-musllinux_1_1_i686.whl (671.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

python_libarchive-4.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

python_libarchive-4.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (637.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-cp38-cp38-musllinux_1_1_x86_64.whl (650.6 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

python_libarchive-4.2.1-cp38-cp38-musllinux_1_1_i686.whl (670.3 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

python_libarchive-4.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

python_libarchive-4.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (633.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl (647.1 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

python_libarchive-4.2.1-cp37-cp37m-musllinux_1_1_i686.whl (666.9 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

python_libarchive-4.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

python_libarchive-4.2.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (631.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

python_libarchive-4.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl (646.1 kB view details)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

python_libarchive-4.2.1-cp36-cp36m-musllinux_1_1_i686.whl (666.0 kB view details)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

python_libarchive-4.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

python_libarchive-4.2.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (631.7 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

File details

Details for the file python-libarchive-4.2.1.tar.gz.

File metadata

  • Download URL: python-libarchive-4.2.1.tar.gz
  • Upload date:
  • Size: 58.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for python-libarchive-4.2.1.tar.gz
Algorithm Hash digest
SHA256 966c40723dcb2ea4a38b29b0d4b130ad0961b9142314528edd7fceff44e8ad3f
MD5 d8af34402220a75ba0f7e54ebebf19d9
BLAKE2b-256 472f4dc8be4fa6f835786c359b918d131ab748727446336e9030ad5b41603740

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ddd285fc76b69f29be6974b4858d46249d45ee49d0e42ebc9443ff1d6a46fd2
MD5 3f3378a5108e65a5fe4280dbdcf82241
BLAKE2b-256 f69f05557912dc2b888bb50b20f8a205e359459e7392f6417c00e88744b8a34d

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3bbc38afa283510ee99823b90b4c4c59de8df22a481e0707bbc8bb96017e5a2f
MD5 6c0b5dcec22e88689699738d8a064bc4
BLAKE2b-256 18c84dfbf73fdfa478ed98be0e0a9f95de6aaa93d4189558656ad5db0c3f0d38

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2cc1ce22b62f46912368d110b61d88a1ca5b958e4a3d648202463aa7e9303de4
MD5 c101a6f54889b41a3828ef77f2dc4125
BLAKE2b-256 a166805ef94132dadbdc741b1385bb57f739b6eca58e5c7ffe45d96a9c9dfae3

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1dc3ace1570878b459ab51ed83a6d558923c15ca3fa1a9a6c5ec9bf87bce4ca6
MD5 a496ea71934e6c5b25ef3f903c277c36
BLAKE2b-256 26598a9ea6b42c25a60960686c94b68d106170497923af176967b470f4f1b20f

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0c747238dc38b78993bc0539e8273bb51c9e334f9f2f7b0cbfe4568fa3d1ce7
MD5 5d3e14172cc621294dd311e53d723398
BLAKE2b-256 8de4a90d44e20bc289192e2befbf4060e845b3b3526ca8eca58e2b1c712a81fb

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5770d7cb8d2b549870c71bebd8d3af7d00d003913b15193f1d7d52d1e18ee8a0
MD5 6b25c30a57bcf39ead9195bc735fd94e
BLAKE2b-256 6e5735f70e1de221f552ff51685656ccb954fe2ed47ee6fb57e72310a23ac841

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 177185bb63d867fea65191a3fc6d730527de81a78cecc7c8db9531c5102ff9c4
MD5 b944defa9f0c0d2753c009626f3761e7
BLAKE2b-256 59e048bc5481edfd73c536d1c4ee8f5614e114fdde205ad9848e7feffb60f136

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 742ac08c9572bddafa87601efbc32b2c9a48fcd15f1936fb2813b37d2d96c645
MD5 f0af06905806877b62abec71f999f62a
BLAKE2b-256 d1077335eff54c7b4165bf6709cda48aa340a39c12501932505f4a4eb49956d0

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 23188e7b97a313e0eeb071a8b94c9d902603c05388d6a4ee9da27b92cd8d91d7
MD5 4659518d1b3103359c042442563a880b
BLAKE2b-256 3106058b513e68adf8c3606c40327836f92b7c8000c91cb979baed7c10349973

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 10baa7763b6a6360400fb80012683e6066cfba63846cd077268c58c93f190f95
MD5 d45f16f95ba1305b1dc7dfdf48ea781d
BLAKE2b-256 50d4acb7cb83ea8dd51017b8ae0f4ba1b1e18168ff539e8499c0b199c6163ba6

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 66209e78cedb3b35b81c272575b1dde66d5aabb82a435eb0529976ee4f481b7f
MD5 1918b55977e0f3a4d8697beb544a4e32
BLAKE2b-256 2a81ff446da6da9507890acb881c5fd680d8a5c9eec98a0170dc61396b2bf1d8

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 09a011df6628618d2c7f46e388d4a18c2e735436508618bcb6c54f1c2dce2ed2
MD5 481863e197049181293502093fa26021
BLAKE2b-256 d3e1856fc1e5e3e00768f7e5c71986ed11e1a3a736c2d0d417d358e482c41901

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6491820a128ffd1700df0e60b86689af53989b01a9d68b9392eef16c83f78b25
MD5 1ae2e91c356147f2aaafde4755fb171a
BLAKE2b-256 dd2e41a1b194ad91838c8d390dd8497b5503c4eb647b5f7c90f06d83e613fd2f

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 17db8f8a093880a1b09f926f4335fe31e262e7970a6cbdeb965e5fc9a5eee7b6
MD5 469ee555cc19ee179877fc724389029d
BLAKE2b-256 d073b33db36a81c9de5e3fe1a4a087621d6135141a68c4be249a3180d7ca14fd

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5c1deeb34285334c4eb7e3a07327c6e014083794cf729dd5bc9e0a3a31348004
MD5 1bb474c19d3e3248d5ffe8947ac6b528
BLAKE2b-256 511c9888f206b39daff2e1b391992e4307841b2a787acf794c36fd8fe9d4da5b

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 57f3b2debcb61d3379125af400f79e6940865c8426a1db8d01739e409d4381c1
MD5 35b20d18cffd7155a7001db1057da879
BLAKE2b-256 e7b2405a914d666d2788570bd8fccb2044abe8f9baa77d58264f337511aee691

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 876d009dd9716b40a48395e3de30a6291dd49cdc789d437059c6d8edfe210ad9
MD5 64efebfd79a5019aa41461ccf514d187
BLAKE2b-256 bd9107ba92c2de8f750de9ba8c449329979207e94c362dd29ead840cb9e321e4

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8779e59dc6c0f7aa16c1900c697c4bc7debbcec17f021333cc6b3b6992caf7a8
MD5 d31103020300ef231957b2a02765a066
BLAKE2b-256 ce8e91df74392f901ab7bc241796be8530a6a31f48f6092fe932ab92f5990d8a

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f0e8d5a8936ad1845e1b1ac0d333ef35e7e6005cde2bc543c1ae7972d80e4445
MD5 0f9a1de82df643a50f3589439ecf9379
BLAKE2b-256 dd8dc9232466d47d20e4f7cbbcd31e8dca00eaa150346d2bd0d227aa53f0d086

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 3489a0b7b6a215ee668dcf08bd69eacbb063de5eb35dd627b71292909821c5bb
MD5 a612baa36a6eacdde85a686f69a2014e
BLAKE2b-256 c8c7566e1f14586fc619e1b1cb1a5c46a05188c04b824742469c6ec903e71e33

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7147b37bdae0d39afb97197f3c102c0e71335da579f78e23ff601f8a1b62f26
MD5 9c09e4457976b3b23645f01f71d82b7c
BLAKE2b-256 328c23a84651e4226459be87fdadf2d362756aebb2089a799a9e185b4cdbff21

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7053bc44c65d1b6bc82e6d54422a53a1610347ee3cc177dc9f4be2357fcadcf8
MD5 40a1211aea5b8a8028a8a4ca4df2a097
BLAKE2b-256 edf758935c7fc826b2264eb129dd16bd4aee240714a574b460deb1e28cbb2823

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 17d327ccd5fa0cbc2bc565cb3c039a9fe792eb18273d3573d78642daab5f752c
MD5 d42f2b36f4d0de4ee5f2fe5ecaa44b2a
BLAKE2b-256 9f5fe5f82c3f3da67b6fbf9fcbc732c2c01b9fcdda312ba3802a8127ba721c82

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 de110cc6ec67d70a537a4987b792c8ca77daa07f764fb9c071c79627aa429460
MD5 92b75748dc7083faa82a2619f4d5001a
BLAKE2b-256 e076eca4926ccc385c7eb654b3ecbefa33d9ef1996c44fb7ae3596b8a85967c0

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 51f006893ea61ea595340e985ae108c15aab206b70fe105b97c44a2319120b5f
MD5 9b45664b08a7532d9ba1c03ba469eb6e
BLAKE2b-256 9d23f25407a3d46181a57a0d12f32e70e3bee6734e8f979f84341e66db0674c2

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c6b2169bf5da1a7a3df0557e607ffe002676e8cb22d7bfc976cc2e470cff9b95
MD5 4e479cac04c6025efe17b5fae527e20c
BLAKE2b-256 9051af4817be955f0efecf8f68459844e81338ea9894dc1a13a6025176c9a9a2

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8f7bfd5270590ada47f1410b3fc9f7f77c4c768b06265abeffbd3270cc86fc05
MD5 dfaa82dfb74707d38f4335021fe74ef8
BLAKE2b-256 1b3a51e0cd8f369c4f546eb29a7c6f2115a4b6922481d00cf7371ebe6d2a0d3f

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp36-cp36m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 0c5bd7a1ef901a16c36ea73befef1aef2993a0cfe903aa5846a5a178935f55da
MD5 fd909c0484e41dce8f5fa313cde730e7
BLAKE2b-256 91b67dc00438a1cf4335267a6d860179bd82a4b5acc4dff010b8e2fb7aa39754

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb2de67eec18dbeeadb9b6ca71aa0bdfdc2994c82d2900329df32a2c2f974131
MD5 1312200e68c2ff53e6147e1bd97e5497
BLAKE2b-256 359d1b8dd4a9e702634f4a1d7cd7f30e2e5b5aa694ae346a18ddd33f182e7f1f

See more details on using hashes here.

File details

Details for the file python_libarchive-4.2.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_libarchive-4.2.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5ad106808f4e401027a2777c945cac2a850f2aef82ef7c2f1364012502775632
MD5 7c185f8ebb374c3f5012cdefccddc7e5
BLAKE2b-256 be001e03e465c9573290d59127550a7e7f9c76c9a41d431b3c1bd99c8d5938d3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page