Metadata-Version: 2.1 Name: google-crc32c Version: 1.0.0 Summary: A python wrapper of the C library 'Google CRC32C' Home-page: https://github.com/googleapis/python-crc32c Author: Google LLC Author-email: googleapis-packages@google.com License: Apache 2.0 Platform: Posix Platform: MacOS X Platform: Windows Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Requires-Python: >=3.5 Description-Content-Type: text/markdown Requires-Dist: cffi (>=1.0.0) Provides-Extra: testing Requires-Dist: pytest ; extra == 'testing' # `google-crc32c` This package wraps the [`google/crc32c`](https://github.com/google/crc32c) hardware-based implementation of the CRC32C hashing algorithm. Multiple wheels are distributed as well as source. If a wheel is not published for the python version and platform you are using, you will need to compile crc32c using a C toolchain. # Building ## Be sure to check out all submodules: ``` $ git clone --recursive https://github.com/googleapis/python-crc32c ``` ## Prerequisites On Linux: - `docker` - `python3.7` On OS X: - `make` - [Official][1] `python.org` Python 2.7, 3.5, 3.6 and 3.7 On Windows: - `cmake` - [Official][1] `python.org` Python 3.5, 3.6 and 3.7 - Visual Studio 15 2017 (just the compiler toolchain) Unfortunately, `libcrc32c` relies on many C++11 features, so building a Python 2.7 extension with the [Visual C++ Compiler for Python 2.7][2] is infeasible. ## Building Wheels On Linux: ``` ./scripts/manylinux/build.sh ``` On OS X: ``` ./scripts/osx/build.sh ``` On Windows: see `.appveyor.yml`. ## Testing/Verify Wheels On Linux (i.e. a host OS, not a `docker` container): ``` $ ./scripts/manylinux/check-37.sh ... + venv/bin/python check_cffi_crc32c.py _crc32c_cffi: _crc32c_cffi.lib: dir(_crc32c_cffi.lib): ['crc32c_extend', 'crc32c_value'] + unzip -l wheels/google_crc32c-0.0.1-cp37-cp37m-manylinux1_x86_64.whl Archive: wheels/google_crc32c-0.0.1-cp37-cp37m-manylinux1_x86_64.whl Length Date Time Name --------- ---------- ----- ---- 26120 2018-10-25 00:09 crc32c/_crc32c_cffi.abi3.so 765 2018-10-24 23:57 crc32c/__init__.py 29552 2018-10-25 00:09 crc32c/.libs/libcrc32c-f865a225.so 109 2018-10-25 00:09 google_crc32c-0.0.1.dist-info/WHEEL 766 2018-10-25 00:09 google_crc32c-0.0.1.dist-info/METADATA 652 2018-10-25 00:09 google_crc32c-0.0.1.dist-info/RECORD 1 2018-10-25 00:09 google_crc32c-0.0.1.dist-info/zip-safe 7 2018-10-25 00:09 google_crc32c-0.0.1.dist-info/top_level.txt --------- ------- 57972 8 files ... ``` On OS X: ``` $ ./scripts/osx/check.sh ... + venv37/bin/python .../python-crc32c/check_cffi_crc32c.py _crc32c_cffi: _crc32c_cffi.lib: dir(_crc32c_cffi.lib): ['crc32c_extend', 'crc32c_value'] + /Library/Frameworks/Python.framework/Versions/3.7/bin/delocate-listdeps --all --depending .../python-crc32c/wheels/google_crc32c-0.0.1-cp37-cp37m-macosx_10_6_intel.whl /usr/lib/libSystem.B.dylib: google_crc32c/_crc32c_cffi.abi3.so google_crc32c/.dylibs/libcrc32c.dylib /usr/lib/libc++.1.dylib: google_crc32c/.dylibs/libcrc32c.dylib @loader_path/.dylibs/libcrc32c.dylib: google_crc32c/_crc32c_cffi.abi3.so ... ``` On Windows: TBD. [1]: https://www.python.org/downloads/ [2]: https://aka.ms/vcpython27 ## Installing locally for testing Initialize the submodules and build the main `libcrc32c.so` shared library using `cmake` / `make`: ```bash $ cd python-crc32c $ git submodule update --init --recursive $ python -m venv venv $ venv/bin/pip install --upgrade setuptools pip wheel $ venv/bin/pip install cmake $ mkdir usr $ export CRC32C_INSTALL_PREFIX=$(pwd)/usr $ mkdir google_crc32c/build $ cd google_crc32c/build $ ../../venv/bin/cmake \ > -DCRC32C_BUILD_TESTS=no \ > -DCRC32C_BUILD_BENCHMARKS=no \ > -DBUILD_SHARED_LIBS=yes \ > -DCMAKE_INSTALL_PREFIX:PATH=${CRC32C_INSTALL_PREFIX} \ > .. $ make all install $ cd ../.. ``` Now, run the tests: ```bash $ venv/bin/pip install -e .[testing] $ venv/bin/py.test tests/ ============================= test session starts ============================== platform linux -- Python 3.6.7, pytest-3.10.0, py-1.7.0, pluggy-0.8.0 rootdir: ..., inifile: collected 9 items tests/test___init__.py ......... [100%] =========================== 9 passed in 0.03 seconds =========================== ```