Skip to main content

A fast, efficient, portable erasure coding tool

Project description

Generate redundant blocks of information such that if some of the blocks are lost then the original data can be recovered from the remaining blocks. This package includes command-line tools, C API, Python API, and Haskell API.

Package Build Tests on Intel hardware Tests on ARM qemu-emulated environment Haskell API Unit tests Tools PyPI release status

Intel benchmark chart

Intro and Licence

This package implements an “erasure code”, or “forward error correction code”.

You may use this package under the GNU General Public License, version 2 or, at your option, any later version. You may use this package under the Transitive Grace Period Public Licence, version 1.0 or, at your option, any later version. (You may choose to use this package under the terms of either licence, at your option.) See the file COPYING.GPL for the terms of the GNU General Public License, version 2. See the file COPYING.TGPPL.rst for the terms of the Transitive Grace Period Public Licence, version 1.0.

The most widely known example of an erasure code is the RAID-5 algorithm which makes it so that in the event of the loss of any one hard drive, the stored data can be completely recovered. The algorithm in the zfec package has a similar effect, but instead of recovering from the loss of only a single element, it can be parameterized to choose in advance the number of elements whose loss it can tolerate.

This package is a fork of zfec library, which is largely based on the old “fec” library by Luigi Rizzo et al., which is a mature and optimized implementation of erasure coding. The zfex package makes several changes from the original zfec package, including new C-based benchmark tool and a new SIMD-friendly API.

Installation

Python

pip install zfex

To run the self-tests, execute tox from an unpacked source tree or git checkout.

To install zfex built with custom compilation flags, execute:

CFLAGS="-O3" pip install git+https://github.com/WojciechMigda/zfex.git

If zfex is already cloned locally, then custom compiler flags can be passed to setup.py to install zfex like follows:

CFLAGS="-O3" python setup.py install

In similar manner, one can override compiler being used. Simply issue:

CC=arm-linux-gnueabihf-gcc-7 pip install git+https://github.com/WojciechMigda/zfex.git

Haskell

Building haskell wrapper relies on cabal. The most basic build command is as follows:

cabal new-build all

and it will use default C compiler settings. There are few flags available, which control building process:

  • speed will pass highest level optimization flag to the compiler,

  • ssse3 will enable SSSE3 optimizations on Intel platform,

  • neon will enable NEON optimizations on Arm platform.

Example build command which uses these flags is below:

cabal new-build all --flags "speed ssse3"

For more details, including installing dependencies and running tests, please inspect haskell github actions workflow file.

Community

The source is currently available via git on the web with the command:

git clone https://github.com/WojciechMigda/zfex

If you find a bug in zfex, please open an issue on github:

<https://github.com/WojciechMigda/zfex/issues>

Overview

This package performs two operations, encoding and decoding. Encoding takes some input data and expands its size by producing extra “check blocks”, also called “secondary blocks”. Decoding takes some data – any combination of blocks of the original data (called “primary blocks”) and “secondary blocks”, and produces the original data.

The encoding is parameterized by two integers, k and m. m is the total number of blocks produced, and k is how many of those blocks are necessary to reconstruct the original data. m is required to be at least 1 and at most 256, and k is required to be at least 1 and at most m.

(Note that when k == m then there is no point in doing erasure coding – it degenerates to the equivalent of the Unix “split” utility which simply splits the input into successive segments. Similarly, when k == 1 it degenerates to the equivalent of the unix “cp” utility – each block is a complete copy of the input data.)

Note that each “primary block” is a segment of the original data, so its size is 1/k’th of the size of original data, and each “secondary block” is of the same size, so the total space used by all the blocks is m/k times the size of the original data (plus some padding to fill out the last primary block to be the same size as all the others). In addition to the data contained in the blocks themselves there are also a few pieces of metadata which are necessary for later reconstruction. Those pieces are: 1. the value of K, 2. the value of M, 3. the sharenum of each block, 4. the number of bytes of padding that were used. The “zfex” command-line tool compresses these pieces of data and prepends them to the beginning of each share, so each the sharefile produced by the “zfex” command-line tool is between one and four bytes larger than the share data alone.

The decoding step requires as input k of the blocks which were produced by the encoding step. The decoding step produces as output the data that was earlier input to the encoding step.

Command-Line Tool

The bin/ directory contains two Unix-style, command-line tools zfex and zunfex. Execute zfex --help or zunfex --help for usage instructions.

Performance

TODO: update with new results

To run the benchmarks, execute the included bench/bench_zfec.py script with optional –k= and –m= arguments.

On my Athlon 64 2.4 GHz workstation (running Linux), the “zfec” command-line tool encoded a 160 MB file with m=100, k=94 (about 6% redundancy) in 3.9 seconds, where the “par2” tool encoded the file with about 6% redundancy in 27 seconds. zfec encoded the same file with m=12, k=6 (100% redundancy) in 4.1 seconds, where par2 encoded it with about 100% redundancy in 7 minutes and 56 seconds.

The underlying C library in benchmark mode encoded from a file at about 4.9 million bytes per second and decoded at about 5.8 million bytes per second.

On Peter’s fancy Intel Mac laptop (2.16 GHz Core Duo), it encoded from a file at about 6.2 million bytes per second.

On my even fancier Intel Mac laptop (2.33 GHz Core Duo), it encoded from a file at about 6.8 million bytes per second.

On my old PowerPC G4 867 MHz Mac laptop, it encoded from a file at about 1.3 million bytes per second.

Here is a paper analyzing the performance of various erasure codes and their implementations, including zfec:

http://www.usenix.org/events/fast09/tech/full_papers/plank/plank.pdf

Zfec shows good performance on different machines and with different values of K and M. It also has a nice small memory footprint.

API

Each block is associated with “blocknum”. The blocknum of each primary block is its index (starting from zero), so the 0’th block is the first primary block, which is the first few bytes of the file, the 1’st block is the next primary block, which is the next few bytes of the file, and so on. The last primary block has blocknum k-1. The blocknum of each secondary block is an arbitrary integer between k and 255 inclusive. (When using the Python API, if you don’t specify which secondary blocks you want when invoking encode(), then it will by default provide the blocks with ids from k to m-1 inclusive.)

  • C API

    fec_encode() takes as input an array of k pointers, where each pointer points to a memory buffer containing the input data (i.e., the i’th buffer contains the i’th primary block). There is also a second parameter which is an array of the blocknums of the secondary blocks which are to be produced. (Each element in that array is required to be the blocknum of a secondary block, i.e. it is required to be >= k and < m.)

    The output from fec_encode() is the requested set of secondary blocks which are written into output buffers provided by the caller.

    There is another encoding API provided, fec_encode_simd(), which imposes additional requirements on memory blocks passed, ones which contain input blocks of data and those where output block will be written. These blocks are expected to be aligned to ZFEX_SIMD_ALIGNMENT. fec_encode_simd() checks pointers to these blocks and returns status code, which equals EXIT_SUCCESS when the validation passed and encoding completed, or EXIT_FAILURE when input and output requirements were not met.

    Note that this fec_encode() and fec_encode_simd() are a “low-level” API in that it requires the input data to be provided in a set of memory buffers of exactly the right sizes. If you are starting instead with a single buffer containing all of the data then please see easyfec.py’s “class Encoder” as an example of how to split a single large buffer into the appropriate set of input buffers for fec_encode(). If you are starting with a file on disk, then please see filefec.py’s encode_file_stringy_easyfec() for an example of how to read the data from a file and pass it to “class Encoder”. The Python interface provides these higher-level operations, as does the Haskell interface. If you implement functions to do these higher-level tasks in other languages, please send a patch so that your API can be included in future releases of zfex.

    fec_decode() takes as input an array of k pointers, where each pointer points to a buffer containing a block. There is also a separate input parameter which is an array of blocknums, indicating the blocknum of each of the blocks which is being passed in.

    The output from fec_decode() is the set of primary blocks which were missing from the input and had to be reconstructed. These reconstructed blocks are written into output buffers provided by the caller.

  • Python API

    encode() and decode() take as input a sequence of k buffers, where a “sequence” is any object that implements the Python sequence protocol (such as a list or tuple) and a “buffer” is any object that implements the Python buffer protocol (such as a string or array). The contents that are required to be present in these buffers are the same as for the C API.

    encode() also takes a list of desired blocknums. Unlike the C API, the Python API accepts blocknums of primary blocks as well as secondary blocks in its list of desired blocknums. encode() returns a list of buffer objects which contain the blocks requested. For each requested block which is a primary block, the resulting list contains a reference to the apppropriate primary block from the input list. For each requested block which is a secondary block, the list contains a newly created string object containing that block.

    decode() also takes a list of integers indicating the blocknums of the blocks being passed int. decode() returns a list of buffer objects which contain all of the primary blocks of the original data (in order). For each primary block which was present in the input list, then the result list simply contains a reference to the object that was passed in the input list. For each primary block which was not present in the input, the result list contains a newly created string object containing that primary block.

    Beware of a “gotcha” that can result from the combination of mutable data and the fact that the Python API returns references to inputs when possible.

    Returning references to its inputs is efficient since it avoids making an unnecessary copy of the data, but if the object which was passed as input is mutable and if that object is mutated after the call to zfex returns, then the result from zfex – which is just a reference to that same object – will also be mutated. This subtlety is the price you pay for avoiding data copying. If you don’t want to have to worry about this then you can simply use immutable objects (e.g. Python strings) to hold the data that you pass to zfex.

    Currently, fec_encode_simd() C API does not have a python wrapper.

  • Haskell API

    The Haskell code is fully Haddocked, to generate the documentation, run runhaskell Setup.lhs haddock.

Utilities

The filefec.py module has a utility function for efficiently reading a file and encoding it piece by piece. This module is used by the “zfex” and “zunfex” command-line tools from the bin/ directory.

Dependencies

A C compiler is required. To use the Python API or the command-line tools a Python interpreter is also required. We have tested it with Python v2.7, v3.5 and v3.6. For the Haskell interface, GHC >= 6.8.1 is required.

Acknowledgements

Thanks to the author of the original fec lib, Luigi Rizzo, and the folks that contributed to it: Phil Karn, Robert Morelos-Zaragoza, Hari Thirumoorthy, and Dan Rubenstein. Thanks to the Mnet hackers who wrote an earlier Python wrapper, especially Myers Carpenter and Hauke Johannknecht. Thanks to Brian Warner and Amber O’Whielacronx for help with the API, documentation, debugging, compression, and unit tests. Thanks to Adam Langley for improving the C API and contributing the Haskell API. Thanks to the creators of GCC (starting with Richard M. Stallman) and Valgrind (starting with Julian Seward) for a pair of excellent tools. Thanks to employees at Allmydata – http://allmydata.com – Fabrice Grinda, Peter Secor, Rob Kinninmont, Brian Warner, Zandr Milewski, Justin Boreta, Mark Meras for sponsoring part of this work (original zfec) and releasing it under a Free Software licence. Thanks to Jack Lloyd, Samuel Neves, and David-Sarah Hopwood. Last, but not least, thanks to the authors of original zfec library, from which this one forked from. Thanks to Gabs Ricalde, for contributing ARM SIMD-optimized code to zfec, which then inspired Intel SIMD-optimizations introduced here.

Download files

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

Source Distribution

zfex-1.6.0.1.tar.gz (170.8 kB view details)

Uploaded Source

Built Distributions

zfex-1.6.0.1-pp38-pypy38_pp73-win_amd64.whl (190.9 kB view details)

Uploaded PyPy Windows x86-64

zfex-1.6.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (270.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

zfex-1.6.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (190.6 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

zfex-1.6.0.1-pp37-pypy37_pp73-win_amd64.whl (180.0 kB view details)

Uploaded PyPy Windows x86-64

zfex-1.6.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (259.5 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

zfex-1.6.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (179.7 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

zfex-1.6.0.1-cp311-cp311-win_amd64.whl (211.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

zfex-1.6.0.1-cp311-cp311-win32.whl (207.3 kB view details)

Uploaded CPython 3.11 Windows x86

zfex-1.6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl (439.6 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

zfex-1.6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (434.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

zfex-1.6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (395.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

zfex-1.6.0.1-cp311-cp311-macosx_11_0_arm64.whl (215.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

zfex-1.6.0.1-cp311-cp311-macosx_10_9_x86_64.whl (217.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

zfex-1.6.0.1-cp310-cp310-win_amd64.whl (194.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

zfex-1.6.0.1-cp310-cp310-win32.whl (189.9 kB view details)

Uploaded CPython 3.10 Windows x86

zfex-1.6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl (412.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

zfex-1.6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (404.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

zfex-1.6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (368.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

zfex-1.6.0.1-cp310-cp310-macosx_11_0_arm64.whl (198.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

zfex-1.6.0.1-cp310-cp310-macosx_10_9_x86_64.whl (200.0 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

zfex-1.6.0.1-cp39-cp39-win_amd64.whl (184.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

zfex-1.6.0.1-cp39-cp39-win32.whl (179.5 kB view details)

Uploaded CPython 3.9 Windows x86

zfex-1.6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl (407.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

zfex-1.6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (399.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

zfex-1.6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (363.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

zfex-1.6.0.1-cp39-cp39-macosx_11_0_arm64.whl (187.5 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

zfex-1.6.0.1-cp39-cp39-macosx_10_9_x86_64.whl (189.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

zfex-1.6.0.1-cp38-cp38-win_amd64.whl (194.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

zfex-1.6.0.1-cp38-cp38-win32.whl (190.2 kB view details)

Uploaded CPython 3.8 Windows x86

zfex-1.6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl (404.3 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

zfex-1.6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (393.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

zfex-1.6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (378.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

zfex-1.6.0.1-cp38-cp38-macosx_11_0_arm64.whl (197.0 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

zfex-1.6.0.1-cp38-cp38-macosx_10_9_x86_64.whl (198.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

zfex-1.6.0.1-cp37-cp37m-win_amd64.whl (183.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

zfex-1.6.0.1-cp37-cp37m-win32.whl (179.2 kB view details)

Uploaded CPython 3.7m Windows x86

zfex-1.6.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl (379.8 kB view details)

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

zfex-1.6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (372.0 kB view details)

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

zfex-1.6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (356.2 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

zfex-1.6.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (379.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

zfex-1.6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl (187.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

zfex-1.6.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl (366.4 kB view details)

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

zfex-1.6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (359.0 kB view details)

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

zfex-1.6.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (366.6 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

File details

Details for the file zfex-1.6.0.1.tar.gz.

File metadata

  • Download URL: zfex-1.6.0.1.tar.gz
  • Upload date:
  • Size: 170.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1.tar.gz
Algorithm Hash digest
SHA256 9c09783c4e345ee12afb1c86cd5fc0cab5089eab87b38a08eaacfcddef16e818
MD5 6050c15e09bb06c741afafcdd49a1aa7
BLAKE2b-256 e81ef483c03493cf4b8acd3a6b31916ae704fac718730f5b5c8d53eaa88cfae6

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 20d334a3c57a2d4f94c78e913ab620fc8f24bee07591b0852214f010deac644b
MD5 8006c78504169970d184fcf0c7e29e18
BLAKE2b-256 2cbd95cef3f240fc576da36f3e6c3df71b400afd941c46a6ddd86d46ee873f19

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87d0f44b62c134a46ce1e4444891b444bb518cff7a67339de7bf20a034404b84
MD5 f429f52a189c72b567dd44597283abc1
BLAKE2b-256 4aafff38ec5cd6ca803d7ae613db40f4af759b32aceb5ce0372bdc649a152628

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7181e90a2f72f7ec4bc0c7f0315fa4b3ff10eca9dc1dd03aa4522ec29b6f4339
MD5 f8815d1ecb58e6af45ae0518def3c99c
BLAKE2b-256 cc3e17958f69e977c7b564e2517a424ef8418733039579295a7f647182a54252

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-pp37-pypy37_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8c3a7ab9688ea672122cf4ea15099c87103489266496b471e86c3edb534a36b9
MD5 d7f9ae58cb901142ef5b332846d00065
BLAKE2b-256 33a30f6c4ce4d69512fedcc3feedcd4407e8929adf17f7be22aa923857656388

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e38e66589676b9be3fb0d17033fc6b3e551fe120949d2f4fcbeaae0bfd839bdd
MD5 71a240ade190794a0da7c6db62909f48
BLAKE2b-256 ca3b08520d2b55f7a4cb001605eea530113c8f9e2a28635e92953f5e479126c6

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 93f9f0a7bc4d3d0ebef0ad62be2c5cd22d382724437b7633913bc239cc84bf90
MD5 f75eeda1a3db6cd633fe745f95c1f3e9
BLAKE2b-256 321c8c7bb2d1ba72077619b2966cc59587ad483bc22af9a7d74a8ff40fd78dc9

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 211.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 275a5fcf914e209e81e8990a13ed2d4d4e096ef4dfcb744a2b0806fb3646a403
MD5 0dd4599963c89a413c268fa8ff0718ff
BLAKE2b-256 942eb159994791ae031040191c1d29c3fa89a176da03d14adb7a5bea69e0e045

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 207.3 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 245f6eaf9f00c0f1f8c27bb0282252098d84885f9ad9a1a125eaf85ffbcd1a0e
MD5 0f8ad28478f82de7e17c89827c0db46a
BLAKE2b-256 29882650c54aa3db17bde5004415e45bf81b635ed91b88fae22cfca3c9960470

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 01391d05fb219cd4a90d1cc720ce5f4ff3420483fe003e4eedcd8e3648a5e02f
MD5 12d8d4e3096275f20f0a4de48c88898f
BLAKE2b-256 2fc41341af3da2a556b96be126624f6bf6b09486cf24af9dafd47f71db825215

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 631e9c6f292bb2f969cc237a6925abbf67720aa6986e933bdd8208dbfd1da70f
MD5 a579565143d37d13e0b7c16c958436ec
BLAKE2b-256 453c78b996fe7dab1e6ebf42de09c7c70d0601dbb53ce5d69b60ef8ec86049ef

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ec4d63f079e5dd70b06240aee5cba15d0becf53c97bcd1fb8bf39bc9ae648bdc
MD5 e29575c2faf6fb9cfd7efd3facc0f18d
BLAKE2b-256 f25fa868142df0eed5cba3fc942bc7e2f6f2c1f30d30ee01168785c96dfc7849

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd8a6fdba10a307f12279822c9e035b4d5d06debb93ce75f50c839169d2b148b
MD5 bd3f89664a213a2eb4b5bacfcd687366
BLAKE2b-256 c8faa4cbcc78f957e6eb91d8f6c1f55be6a31f71ec4e5b39b9c037f7b9981c0e

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 94eb1a93934f22e48fe3db12047e2a84b04d13a2b82424bc6913945747c1582a
MD5 695fb846a991bf32e7275002ffff21d4
BLAKE2b-256 fd016b8dadd587f2ee8fa683feb44ee9bfabd7602e4fefd9da135b26ee20a6fc

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 194.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 37719c43d3511decfbcb160a7ff3324d57a860c87304b2ff720ebf6bba549888
MD5 7c5a3ef041f464403781c021d76c3aa6
BLAKE2b-256 704c240df7fa3e1e2b7b0300292ab2c11020952943ec2f518ac3096b0e23a47d

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 189.9 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 30f3c880e558dbbe33b9c560468ba8760a8e6b83878981b4d6d65e2cd5c618a5
MD5 9f0fda5a087e1a0b3537ccd63ec4ed62
BLAKE2b-256 0a82c5e4786368d72ea1949fb9b4a643d48c9eeed5d48098cb542850cbfc0555

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6e0c50b6a255df65f0906f93d2f9ece70bbb528d0395272e55373021a82c2864
MD5 e9e905462fe4b6bdd274bbc5ae0c2418
BLAKE2b-256 0771700e33afa669034e898daa1455ea0b9be0db5ab83ba673cb995a3e8e4efe

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c30d6e4ed237bf1e072e24b9b59fe86fb667374c28f8e73602214f0f8ab6927
MD5 8707c0201b277051b6f885a6cc618415
BLAKE2b-256 19d458ebab73f4ce58a26cdde3086d11dc7fd6790dd925c12104c586f14ce1d1

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8327b66fb10b2ba1b43487f3b9a95656fa543b5e4849f1834ec0a3e66aa6e45f
MD5 bd10918ee9500bce39e5522d7ae55c75
BLAKE2b-256 0c59483c44811ccd98b7172e1cc379f096a38f52ae5e4e96d3c5abbe7407b07d

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a04e5a78db00292e3e830bf07a8121dddb519e49ce6351469c2fb3da56d58250
MD5 77f5808ec9cfaf02b7f75765f7b7fe0c
BLAKE2b-256 3da0a503680d7a47880ed6b81e5e246205c896fef7f6caa4aa2cee3aa6b18d96

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 82fe456f933ef552d48242253a545579943ac4827d2eedd61bc0725214630e2f
MD5 66a8c8938eaa2fbd6bc48b1be8ce9b3f
BLAKE2b-256 997fcb8488b9f132f2fc9dc3614548bfb280dd29dc3382e01fdeac6e3bc12af7

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 184.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 04565b0a17ba2d33fea59965856e520088f139e5cb50fac92ef1b949e19e6137
MD5 1404fbc11356885044f4f73f0e0f1aca
BLAKE2b-256 6e5f9e93a1d673f27e982939748a3bc8b583353f3699165246db7c891da2ac94

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-win32.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 179.5 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 fa1b8a215f09c182fdf5d4ab5a759719c78b2223911489f766232cffce812571
MD5 b9db818cef1f7f4a764a5c573e638af2
BLAKE2b-256 12371385dbbabab19e3dd00db850d06e65b8781db992c4f5b6fcaeea9acda23f

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 15713b5fddc28b9ca06fff11e59b87663e11ca6349c67d0393aa2f90c7002038
MD5 7ab7ed754890353ab2255db73ea604cc
BLAKE2b-256 08c060c9e2e2d078fec31975fe4d438584b50d5fdff456b0874c50b9f6d63be4

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9413399373e498cbd85598d43e39464e81619a2b2fcfaa2d5f7218092153322d
MD5 dc4a0b17c53ee7fafd155760929ab62b
BLAKE2b-256 5ea64f1ef0311914507b3cf14b8606ea19d064178f3d4287f15c155003564324

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9329cab925e2c7bd0ec38cc14b68e97014bf4ba969d10a7c220d5a76c7b8a04c
MD5 5768fa9380450e8b266d59cf24dcb339
BLAKE2b-256 15a7461ca32bc1b17376ed43120357d7c8356d046cfcf31960f670322df19b1d

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c96996db8829262c5fba1a388a08eac8f481010c12706f5370af96e96cb7398
MD5 8389dd741b887ed2cb2dcdc75e92140a
BLAKE2b-256 f7cd7e111494a105577513cc8758431ef2af24fe5f752919e03774d7fc3aa707

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c37907ca4c12f8ca7c789d875529cb3a2f733577acfb04876b461232b2f249ac
MD5 ecf5bb432786476e114b752a048e0c9c
BLAKE2b-256 728fc44f6163cb9c41bdd21123c0133cea3180c384c097853ea0c6e11121ac06

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 194.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 409448510bc3ded27535ecd4fbbb56c5f212f94b6bbdf78a1c757b843a81173a
MD5 2201d0e18f047ae37a05da5c4522a9d4
BLAKE2b-256 723a31eaf930e892df9420fa58bb5eb39c59a906edab76c25c1e0ef7b9a98236

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-win32.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 190.2 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 2db6736a3af6b86758ab66215b75fd641db3c16acdfdb91600ba9e6d889f1e40
MD5 f7c457604d3eb4d8a04efbeaa12b67a9
BLAKE2b-256 2507b4d9745ecbc7f3715a8a3ac68baf573a3eb4b79192f0668dd65ec8ac04d5

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 bcad2482c8f3b1464ef4e53472cf7ceebc062a46e9524b7919856a85d9024403
MD5 1c070fbc9b4cd0a6d8d50275c84eaeb3
BLAKE2b-256 e9ebb2f10323b3d74bb87d1b7ab02becf446d11aa937b9d9d6720063b4a60b94

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efe2aed10f6cba87418f0a86a167f28e8d4eb1d228ad011d7552389c8fd58a27
MD5 9f2684616d1e2533332618d37268f0d1
BLAKE2b-256 fbe4b9a57d5f3ebf15ab2381682a62d80ddfa00169d031955e20eb63b765634a

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fc07e2ca7495f220fc90b68837cd27afedb53022e6ae5dbb0ac628cf0d572312
MD5 9b7bcbaec5773e43fc2b5aff76189d56
BLAKE2b-256 ad17c46bbfd2920facf5cc7b924b0156f44012e40464afc2c9582f1c6f24b600

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7d926b7d6d405d0747b43b6c8cd72d814f62dfebc1c2a71aac94624b8567900
MD5 c40761b201a44e3faf5600eb0f06e160
BLAKE2b-256 d9edec9f570605db5ee4000416a07db35cf9fa46087db745f8f8761492274a73

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ae188f041fb28792946267c3d9cfe129385d647f41ff566de65c020f0bed508b
MD5 57aafa39ceae9cabd3cd488585b0242a
BLAKE2b-256 60d9f60347a0074c7bc74cf23ec8f8bfdc35bb13ebcb5861797ffeb769aa73f9

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 183.7 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1631bde16487dcd41afe654fa7e7d6dea9f6c7cacda97c925e9c18fb39bac0ad
MD5 d09a2a21820ca39abd3edc13991a4f90
BLAKE2b-256 af13a3c79ae3cf507c66ca7b58fcc4d11d2d75cd73831d9941f7c7f38c4c5317

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-win32.whl.

File metadata

  • Download URL: zfex-1.6.0.1-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 179.2 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 fc7f6b6b0e1faf9cbecb65e9fe69fffe0a86c9ffeeb0efba5da61e119a5a68b2
MD5 df796181c85189357e8fa6e4e5374a9f
BLAKE2b-256 b28593e21413ed759c2b38806a04266c7e5619b689331d1a90b83f0043cac8c0

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 21a0fd0c405edba807912ddc8247b06a8f424f802085fb47971d3852c6c45928
MD5 a2a59f076b0ddf2a15d5823031c0fccf
BLAKE2b-256 ea3e606c5b9d7af358fedc0a77295a2fde0c5e154211da28c5ad21aaa22e7e37

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7428033ad90f9cf6fee1c8b0f4224a3702a2b5aa88861faa59d035c42ab2ce28
MD5 2d11d7063a141b4cab69eff9c46e8ff7
BLAKE2b-256 640a8b096f1e2cbe890e867cce0eeea6700282e41823d837fefcce5a4bb101ff

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 94497c7c616deb67c31d91a081d9e5f968a4b8318dd84c9b4c7020f9a21140d7
MD5 203375a35b733801b6307165fef3ac4a
BLAKE2b-256 f88156a67cebb246f18294b128b025f8a12c02163d1b5f7c7df72abe74c91128

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 67afbb01c3d73f7fb04066325b0949e81cb08f1f84dd98de344f569c5f47725a
MD5 0ed5eca6177f98f8b57b02ecbce0cff1
BLAKE2b-256 e0f6d7c0125ac2d9b058abc4a9fc03706711b96aeb32936b7a8c4cea8e2cff1c

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 37c5c9e024f51b01de3336fecfe36f2227b68202bd1e38af07b0c55d058132f8
MD5 d563d160afd60a6637099626ea01dca7
BLAKE2b-256 14e78c3ccef27ae71b0baf3df9847349429feee95d135cdf46a55f5bb343bccd

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d1cbb11470734a4d2be2e67ce69ca83d56861ad6a9fe2c4b0e3d2d0e4d8b62b6
MD5 772f39cc6cf444bc79f094804cd99a23
BLAKE2b-256 f743f432e8665839d0f5d456f3eb716782a11ae366a42f15d98ecd90803f19da

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e0b5cae6c46ab0d267a4e30df70e3f4e01ce7c859173d8cfc8d9a7970026d045
MD5 9181c3b886a37d48e197a9e86294cbcf
BLAKE2b-256 faa26e65d1eb3fcd9c1cb19be410932bfe0ed371a63496fb02b1004ae362c574

See more details on using hashes here.

File details

Details for the file zfex-1.6.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for zfex-1.6.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b502a52d5836722c81d342591980c14608625b31c0b7cec5868ce7d95164eac4
MD5 50dffc46eb01d210b49dec113e766f13
BLAKE2b-256 3a4dd0b3ba5767db6a77dd16492e2f53884448f43cbdf1cf4254b5c8676e2896

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