From d2f1c9bc1a5f6d8ff94f487f25c888362c487e55 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 10 Apr 2023 21:10:39 +0000 Subject: automatic import of python-cityhash --- .gitignore | 1 + python-cityhash.spec | 527 +++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 529 insertions(+) create mode 100644 python-cityhash.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..c065aad 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/cityhash-0.4.6.tar.gz diff --git a/python-cityhash.spec b/python-cityhash.spec new file mode 100644 index 0000000..5d3a98e --- /dev/null +++ b/python-cityhash.spec @@ -0,0 +1,527 @@ +%global _empty_manifest_terminate_build 0 +Name: python-cityhash +Version: 0.4.6 +Release: 1 +Summary: Python bindings for CityHash and FarmHash +License: MIT +URL: https://github.com/escherba/python-cityhash +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/48/e0/5bf47be42c9ce0e746484a038a1c5ac263fd7980492b4efd18c2fd6ac930/cityhash-0.4.6.tar.gz + + +%description +# CityHash/FarmHash + +Python wrapper for [FarmHash](https://github.com/google/farmhash) and +[CityHash](https://github.com/google/cityhash), a family of fast +non-cryptographic hash functions. + +[![Build +Status](https://img.shields.io/github/actions/workflow/status/escherba/python-cityhash/build.yml?branch=master)](https://github.com/escherba/python-cityhash/actions/workflows/build.yml) +[![Latest +Version](https://img.shields.io/pypi/v/cityhash.svg)](https://pypi.python.org/pypi/cityhash) +[![Downloads](https://img.shields.io/pypi/dm/cityhash.svg)](https://pypistats.org/packages/cityhash) +[![License](https://img.shields.io/pypi/l/cityhash.svg)](https://opensource.org/licenses/mit-license) +[![Supported Python +versions](https://img.shields.io/pypi/pyversions/cityhash.svg)](https://pypi.python.org/pypi/cityhash) + +## Getting Started + +This simplest way to use this package is to install it from PyPI: + +``` bash +pip install cityhash +``` + +This package exposes Python APIs for CityHash and FarmHash under `cityhash` and +`farmhash` namespaces, respectively. Each provides 32-, 64- and 128-bit +implementations. + +## Usage Examples + +### Stateless hashing + +Usage example for FarmHash: + +``` python +>>> from farmhash import FarmHash32, FarmHash64, FarmHash128 +>>> FarmHash32("abc") +1961358185 +>>> FarmHash64("abc") +2640714258260161385 +>>> FarmHash128("abc") +76434233956484675513733017140465933893 + +``` + +### Hardware-independent fingerprints + +Fingerprints are seedless hashes which are guaranteed to be hardware- and +platform-independent. This can be useful for networking applications which +require persisting hashed values. + +``` python +>>> from farmhash import Fingerprint128 +>>> Fingerprint128("abc") +76434233956484675513733017140465933893 + +``` + +### Incremental hashing + +CityHash and FarmHash do not support incremental hashing and thus are not ideal +for hashing of streams. If you require incremental hashing feature, use +[MetroHash](https://github.com/escherba/python-metrohash) or +[xxHash](https://github.com/ifduyue/python-xxhash) instead, which do support +it. + +### Fast hashing of NumPy arrays + +The Python [Buffer Protocol](https://docs.python.org/3/c-api/buffer.html) +allows Python objects to expose their data as raw byte arrays to other objects, +for fast access without copying to a separate location in memory. Among others, +NumPy is a major framework that supports this protocol. + +All hashing functions in this packege will read byte arrays from objects that +expose them via the buffer protocol. Here is an example showing hashing of a 4D +NumPy array: + +``` python +>>> import numpy as np +>>> from farmhash import FarmHash64 +>>> arr = np.zeros((256, 256, 4)) +>>> FarmHash64(arr) +1550282412043536862 + +``` + +The arrays need to be contiguous for this to work. To convert a non-contiguous +array, use NumPy's `ascontiguousarray()` function. + +## SSE4.2 support + +For x86-64 platforms, the PyPi repository for this package includes wheels +compiled with SSE4.2 support. The 32- and 64-bit FarmHash variants +significantly benefit from SSE4.2 instructions. The 128-bit version, +unfortunately, does not exhibit speed up after compiling with SSE4.2 support. + +The vanilla CityHash fucntions (under `cityhash` module) do not take advantage +of SSE4.2. Instead, the `cityhashcrc` module provided with this package exposes +128- and 256-bit CRC functions which do harness SSE4.2. These functions are +very fast, and beat `FarmHash128` on speed (FarmHash does not include a 256-bit +function). Since FarmHash is the intended successor of CityHash, I would be +careful before using the CityHash-CRC functions, however, and would verify +whether they provide sufficient randomness for your intended application. + +## Development + +### Local workflow + +For those who want to contribute, here is a quick start using some makefile +commands: + +``` bash +git clone https://github.com/escherba/python-cityhash.git +cd python-cityhash +make env # create a virtual environment +make test # run Python tests +make cpp-test # run C++ tests +make shell # enter IPython shell +``` + +To find out which Make targets are available, type: + +``` bash +make help +``` + +### Distribution + +The wheels are built using [cibuildwheel](https://cibuildwheel.readthedocs.io/) +and are distributed to PyPI using GitHub actions. The wheels contain compiled +binaries and are available for the following platforms: windows-amd64, +ubuntu-x86, linux-x86\_64, linux-aarch64, and macosx-x86\_64. + +## See Also + +For other fast non-cryptographic hash functions available as Python extensions, +see [MetroHash](https://github.com/escherba/python-metrohash), +[MurmurHash](https://github.com/hajimes/mmh3), and +[xxHash](https://github.com/ifduyue/python-xxhash). + +## Authors + +The original CityHash Python bindings are due to Alexander \[Amper\] Marshalov. +These were rewritten in Cython by Eugene Scherba, who also added the FarmHash +bindings. The CityHash and FarmHash algorithms and their C++ implementation are +by Google. + +## License + +This software is licensed under the [MIT +License](http://www.opensource.org/licenses/mit-license). See the included +LICENSE file for details. + + +%package -n python3-cityhash +Summary: Python bindings for CityHash and FarmHash +Provides: python-cityhash +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-cffi +BuildRequires: gcc +BuildRequires: gdb +%description -n python3-cityhash +# CityHash/FarmHash + +Python wrapper for [FarmHash](https://github.com/google/farmhash) and +[CityHash](https://github.com/google/cityhash), a family of fast +non-cryptographic hash functions. + +[![Build +Status](https://img.shields.io/github/actions/workflow/status/escherba/python-cityhash/build.yml?branch=master)](https://github.com/escherba/python-cityhash/actions/workflows/build.yml) +[![Latest +Version](https://img.shields.io/pypi/v/cityhash.svg)](https://pypi.python.org/pypi/cityhash) +[![Downloads](https://img.shields.io/pypi/dm/cityhash.svg)](https://pypistats.org/packages/cityhash) +[![License](https://img.shields.io/pypi/l/cityhash.svg)](https://opensource.org/licenses/mit-license) +[![Supported Python +versions](https://img.shields.io/pypi/pyversions/cityhash.svg)](https://pypi.python.org/pypi/cityhash) + +## Getting Started + +This simplest way to use this package is to install it from PyPI: + +``` bash +pip install cityhash +``` + +This package exposes Python APIs for CityHash and FarmHash under `cityhash` and +`farmhash` namespaces, respectively. Each provides 32-, 64- and 128-bit +implementations. + +## Usage Examples + +### Stateless hashing + +Usage example for FarmHash: + +``` python +>>> from farmhash import FarmHash32, FarmHash64, FarmHash128 +>>> FarmHash32("abc") +1961358185 +>>> FarmHash64("abc") +2640714258260161385 +>>> FarmHash128("abc") +76434233956484675513733017140465933893 + +``` + +### Hardware-independent fingerprints + +Fingerprints are seedless hashes which are guaranteed to be hardware- and +platform-independent. This can be useful for networking applications which +require persisting hashed values. + +``` python +>>> from farmhash import Fingerprint128 +>>> Fingerprint128("abc") +76434233956484675513733017140465933893 + +``` + +### Incremental hashing + +CityHash and FarmHash do not support incremental hashing and thus are not ideal +for hashing of streams. If you require incremental hashing feature, use +[MetroHash](https://github.com/escherba/python-metrohash) or +[xxHash](https://github.com/ifduyue/python-xxhash) instead, which do support +it. + +### Fast hashing of NumPy arrays + +The Python [Buffer Protocol](https://docs.python.org/3/c-api/buffer.html) +allows Python objects to expose their data as raw byte arrays to other objects, +for fast access without copying to a separate location in memory. Among others, +NumPy is a major framework that supports this protocol. + +All hashing functions in this packege will read byte arrays from objects that +expose them via the buffer protocol. Here is an example showing hashing of a 4D +NumPy array: + +``` python +>>> import numpy as np +>>> from farmhash import FarmHash64 +>>> arr = np.zeros((256, 256, 4)) +>>> FarmHash64(arr) +1550282412043536862 + +``` + +The arrays need to be contiguous for this to work. To convert a non-contiguous +array, use NumPy's `ascontiguousarray()` function. + +## SSE4.2 support + +For x86-64 platforms, the PyPi repository for this package includes wheels +compiled with SSE4.2 support. The 32- and 64-bit FarmHash variants +significantly benefit from SSE4.2 instructions. The 128-bit version, +unfortunately, does not exhibit speed up after compiling with SSE4.2 support. + +The vanilla CityHash fucntions (under `cityhash` module) do not take advantage +of SSE4.2. Instead, the `cityhashcrc` module provided with this package exposes +128- and 256-bit CRC functions which do harness SSE4.2. These functions are +very fast, and beat `FarmHash128` on speed (FarmHash does not include a 256-bit +function). Since FarmHash is the intended successor of CityHash, I would be +careful before using the CityHash-CRC functions, however, and would verify +whether they provide sufficient randomness for your intended application. + +## Development + +### Local workflow + +For those who want to contribute, here is a quick start using some makefile +commands: + +``` bash +git clone https://github.com/escherba/python-cityhash.git +cd python-cityhash +make env # create a virtual environment +make test # run Python tests +make cpp-test # run C++ tests +make shell # enter IPython shell +``` + +To find out which Make targets are available, type: + +``` bash +make help +``` + +### Distribution + +The wheels are built using [cibuildwheel](https://cibuildwheel.readthedocs.io/) +and are distributed to PyPI using GitHub actions. The wheels contain compiled +binaries and are available for the following platforms: windows-amd64, +ubuntu-x86, linux-x86\_64, linux-aarch64, and macosx-x86\_64. + +## See Also + +For other fast non-cryptographic hash functions available as Python extensions, +see [MetroHash](https://github.com/escherba/python-metrohash), +[MurmurHash](https://github.com/hajimes/mmh3), and +[xxHash](https://github.com/ifduyue/python-xxhash). + +## Authors + +The original CityHash Python bindings are due to Alexander \[Amper\] Marshalov. +These were rewritten in Cython by Eugene Scherba, who also added the FarmHash +bindings. The CityHash and FarmHash algorithms and their C++ implementation are +by Google. + +## License + +This software is licensed under the [MIT +License](http://www.opensource.org/licenses/mit-license). See the included +LICENSE file for details. + + +%package help +Summary: Development documents and examples for cityhash +Provides: python3-cityhash-doc +%description help +# CityHash/FarmHash + +Python wrapper for [FarmHash](https://github.com/google/farmhash) and +[CityHash](https://github.com/google/cityhash), a family of fast +non-cryptographic hash functions. + +[![Build +Status](https://img.shields.io/github/actions/workflow/status/escherba/python-cityhash/build.yml?branch=master)](https://github.com/escherba/python-cityhash/actions/workflows/build.yml) +[![Latest +Version](https://img.shields.io/pypi/v/cityhash.svg)](https://pypi.python.org/pypi/cityhash) +[![Downloads](https://img.shields.io/pypi/dm/cityhash.svg)](https://pypistats.org/packages/cityhash) +[![License](https://img.shields.io/pypi/l/cityhash.svg)](https://opensource.org/licenses/mit-license) +[![Supported Python +versions](https://img.shields.io/pypi/pyversions/cityhash.svg)](https://pypi.python.org/pypi/cityhash) + +## Getting Started + +This simplest way to use this package is to install it from PyPI: + +``` bash +pip install cityhash +``` + +This package exposes Python APIs for CityHash and FarmHash under `cityhash` and +`farmhash` namespaces, respectively. Each provides 32-, 64- and 128-bit +implementations. + +## Usage Examples + +### Stateless hashing + +Usage example for FarmHash: + +``` python +>>> from farmhash import FarmHash32, FarmHash64, FarmHash128 +>>> FarmHash32("abc") +1961358185 +>>> FarmHash64("abc") +2640714258260161385 +>>> FarmHash128("abc") +76434233956484675513733017140465933893 + +``` + +### Hardware-independent fingerprints + +Fingerprints are seedless hashes which are guaranteed to be hardware- and +platform-independent. This can be useful for networking applications which +require persisting hashed values. + +``` python +>>> from farmhash import Fingerprint128 +>>> Fingerprint128("abc") +76434233956484675513733017140465933893 + +``` + +### Incremental hashing + +CityHash and FarmHash do not support incremental hashing and thus are not ideal +for hashing of streams. If you require incremental hashing feature, use +[MetroHash](https://github.com/escherba/python-metrohash) or +[xxHash](https://github.com/ifduyue/python-xxhash) instead, which do support +it. + +### Fast hashing of NumPy arrays + +The Python [Buffer Protocol](https://docs.python.org/3/c-api/buffer.html) +allows Python objects to expose their data as raw byte arrays to other objects, +for fast access without copying to a separate location in memory. Among others, +NumPy is a major framework that supports this protocol. + +All hashing functions in this packege will read byte arrays from objects that +expose them via the buffer protocol. Here is an example showing hashing of a 4D +NumPy array: + +``` python +>>> import numpy as np +>>> from farmhash import FarmHash64 +>>> arr = np.zeros((256, 256, 4)) +>>> FarmHash64(arr) +1550282412043536862 + +``` + +The arrays need to be contiguous for this to work. To convert a non-contiguous +array, use NumPy's `ascontiguousarray()` function. + +## SSE4.2 support + +For x86-64 platforms, the PyPi repository for this package includes wheels +compiled with SSE4.2 support. The 32- and 64-bit FarmHash variants +significantly benefit from SSE4.2 instructions. The 128-bit version, +unfortunately, does not exhibit speed up after compiling with SSE4.2 support. + +The vanilla CityHash fucntions (under `cityhash` module) do not take advantage +of SSE4.2. Instead, the `cityhashcrc` module provided with this package exposes +128- and 256-bit CRC functions which do harness SSE4.2. These functions are +very fast, and beat `FarmHash128` on speed (FarmHash does not include a 256-bit +function). Since FarmHash is the intended successor of CityHash, I would be +careful before using the CityHash-CRC functions, however, and would verify +whether they provide sufficient randomness for your intended application. + +## Development + +### Local workflow + +For those who want to contribute, here is a quick start using some makefile +commands: + +``` bash +git clone https://github.com/escherba/python-cityhash.git +cd python-cityhash +make env # create a virtual environment +make test # run Python tests +make cpp-test # run C++ tests +make shell # enter IPython shell +``` + +To find out which Make targets are available, type: + +``` bash +make help +``` + +### Distribution + +The wheels are built using [cibuildwheel](https://cibuildwheel.readthedocs.io/) +and are distributed to PyPI using GitHub actions. The wheels contain compiled +binaries and are available for the following platforms: windows-amd64, +ubuntu-x86, linux-x86\_64, linux-aarch64, and macosx-x86\_64. + +## See Also + +For other fast non-cryptographic hash functions available as Python extensions, +see [MetroHash](https://github.com/escherba/python-metrohash), +[MurmurHash](https://github.com/hajimes/mmh3), and +[xxHash](https://github.com/ifduyue/python-xxhash). + +## Authors + +The original CityHash Python bindings are due to Alexander \[Amper\] Marshalov. +These were rewritten in Cython by Eugene Scherba, who also added the FarmHash +bindings. The CityHash and FarmHash algorithms and their C++ implementation are +by Google. + +## License + +This software is licensed under the [MIT +License](http://www.opensource.org/licenses/mit-license). See the included +LICENSE file for details. + + +%prep +%autosetup -n cityhash-0.4.6 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-cityhash -f filelist.lst +%dir %{python3_sitearch}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot - 0.4.6-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..b420c2e --- /dev/null +++ b/sources @@ -0,0 +1 @@ +b5068832fb7a359e6e7248e82182b4a2 cityhash-0.4.6.tar.gz -- cgit v1.2.3