# Introduction [![pypi](https://img.shields.io/pypi/v/pyhash.svg)](https://pypi.org/project/pyhash/) [![Travis CI Status](https://travis-ci.org/flier/pyfasthash.svg?branch=master)](https://travis-ci.org/flier/pyfasthash) [![codecov](https://codecov.io/gh/flier/pyfasthash/branch/master/graph/badge.svg)](https://codecov.io/gh/flier/pyfasthash)
`pyhash` is a python non-cryptographic hash library.
It provides several common hash algorithms with C/C++ implementation for performance and compatibility.
```python
>>> import pyhash
>>> hasher = pyhash.fnv1_32()
>>> hasher('hello world')
2805756500L
>>> hasher('hello', ' ', 'world')
2805756500L
>>> hasher('world', seed=hasher('hello '))
2805756500L
```
It also can be used to generate fingerprints without seed.
```python
>>> import pyhash
>>> fp = pyhash.farm_fingerprint_64()
>>> fp('hello')
>>> 13009744463427800296L
>>> fp('hello', 'world')
>>> [13009744463427800296L, 16436542438370751598L]
```
**Notes**
`hasher('hello', ' ', 'world')` is a syntax sugar for `hasher('world', seed=hasher(' ', seed=hasher('hello')))`, and may not equals to `hasher('hello world')`, because some hash algorithms use different `hash` and `seed` size.
For example, `metro` hash always use 32bit seed for 64/128 bit hash value.
```python
>>> import pyhash
>>> hasher = pyhash.metro_64()
>>> hasher('hello world')
>>> 5622782129197849471L
>>> hasher('hello', ' ', 'world')
>>> 16402988188088019159L
>>> hasher('world', seed=hasher(' ', seed=hasher('hello')))
>>> 16402988188088019159L
```
# Installation
```bash
$ pip install pyhash
```
**Notes**
If `pip` install failed with similar errors, [#27](https://github.com/flier/pyfasthash/issues/27)
```
/usr/lib/gcc/x86_64-linux-gnu/6/include/smmintrin.h:846:1: error: inlining failed in call to always_inline 'long long unsigned int _mm_crc32_u64(long long unsigned int, long long unsigned int)': target specific option mismatch
_mm_crc32_u64 (unsigned long long __C, unsigned long long __V)
^~~~~~~~~~~~~
src/smhasher/metrohash64crc.cpp:52:34: note: called from here
v[0] ^= _mm_crc32_u64(v[0], read_u64(ptr)); ptr += 8;
~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
```
Please upgrade `pip` and `setuptools` to latest version and try again
```bash
$ pip install --upgrade pip setuptools
```
**Notes**
If `pip` install failed on MacOS with similar errors [#28](https://github.com/flier/pyfasthash/issues/28)
```
creating build/temp.macosx-10.6-intel-3.6
...
/usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -c src/smhasher/metrohash64crc.cpp -o build/temp.macosx-10.6-intel-3.6/src/smhasher/metrohash64crc.o -msse4.2 -maes -mavx -mavx2
src/smhasher/metrohash64crc.cpp:52:21: error: use of undeclared identifier '_mm_crc32_u64'
v[0] ^= _mm_crc32_u64(v[0], read_u64(ptr)); ptr += 8;
^
```
You may try to
```bash
$ CFLAGS="-mmacosx-version-min=10.13" pip install pyhash
```
**Notes**
`pyhash` only support `pypy` v6.0 or newer, please [download and install](https://pypy.org/download.html) the latest `pypy`.
# Algorithms
pyhash supports the following hash algorithms
- [FNV](http://isthe.com/chongo/tech/comp/fnv/) (Fowler-Noll-Vo) hash
- fnv1_32
- fnv1a_32
- fnv1_64
- fnv1a_64
- [MurmurHash](http://code.google.com/p/smhasher/)
- murmur1_32
- murmur1_aligned_32
- murmur2_32
- murmur2a_32
- murmur2_aligned_32
- murmur2_neutral_32
- murmur2_x64_64a
- murmur2_x86_64b
- murmur3_32
- murmur3_x86_128
- murmur3_x64_128
- [lookup3](http://burtleburtle.net/bob/hash/doobs.html)
- lookup3
- lookup3_little
- lookup3_big
- [SuperFastHash](http://www.azillionmonkeys.com/qed/hash.html)
- super_fast_hash
- [City Hash](https://code.google.com/p/cityhash/)
_ city_32
- city_64
- city_128
- city_crc_128
- city_fingerprint_256
- [Spooky Hash](http://burtleburtle.net/bob/hash/spooky.html)
- spooky_32
- spooky_64
- spooky_128
- [FarmHash](https://github.com/google/farmhash)
- farm_32
- farm_64
- farm_128
- farm_fingerprint_32
- farm_fingerprint_64
- farm_fingerprint_128
- [MetroHash](https://github.com/jandrewrogers/MetroHash)
- metro_64
- metro_128
- metro_crc_64
- metro_crc_128
- [MumHash](https://github.com/vnmakarov/mum-hash)
- mum_64
- [T1Ha](https://github.com/leo-yuriev/t1ha)
- t1ha2 _(64-bit little-endian)_
- t1ha2_128 _(128-bit little-endian)_
- t1ha1 _(64-bit native-endian)_
- t1ha1_le _(64-bit little-endian)_
- t1ha1_be _(64-bit big-endian)_
- t1ha0 _(64-bit, choice fastest function in runtime.)_
- ~~t1_32~~
- ~~t1_32_be~~
- ~~t1_64~~
- ~~t1_64_be~~
- [XXHash](https://github.com/Cyan4973/xxHash)
- xx_32
- xx_64
- xxh3_64 **NEW**
- xxh3_128 **NEW**
- [Highway Hash](https://github.com/google/highwayhash)
- highway_64 **NEW**
- highway_128 **NEW**
- highway_256 **NEW**
## String and Bytes literals
Python has two types can be used to present string literals, the hash values of the two types are definitely different.
- For Python 2.x [String literals](https://docs.python.org/2/reference/lexical_analysis.html#string-literals), `str` will be used by default, `unicode` can be used with the `u` prefix.
- For Python 3.x [String and Bytes literals](https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals), `unicode` will be used by default, `bytes` can be used with the `b` prefix.
For example,
```
$ python2
Python 2.7.15 (default, Jun 17 2018, 12:46:58)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyhash
>>> hasher = pyhash.murmur3_32()
>>> hasher('foo')
4138058784L
>>> hasher(u'foo')
2085578581L
>>> hasher(b'foo')
4138058784L
```
```
$ python3
Python 3.7.0 (default, Jun 29 2018, 20:13:13)
[Clang 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyhash
>>> hasher = pyhash.murmur3_32()
>>> hasher('foo')
2085578581
>>> hasher(u'foo')
2085578581
>>> hasher(b'foo')
4138058784
```
You can also import [unicode_literals](http://python-future.org/unicode_literals.html) to use unicode literals in Python 2.x
```python
from __future__ import unicode_literals
```
> In general, it is more compelling to use unicode_literals when back-porting new or existing Python 3 code to Python 2/3 than when porting existing Python 2 code to 2/3. In the latter case, explicitly marking up all unicode string literals with u'' prefixes would help to avoid unintentionally changing the existing Python 2 API. However, if changing the existing Python 2 API is not a concern, using unicode_literals may speed up the porting process.
Raw data
{
"_id": null,
"home_page": "https://github.com/nnnewb/pyfasthash",
"name": "pyhash2",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "hash hashing fasthash",
"author": "weak_ptr",
"author_email": "weak_ptr@outlook.com",
"download_url": "https://files.pythonhosted.org/packages/43/4f/9af03248cfe0a979fdd8282678968636a133cd06f5916a2073c2b7b027dc/pyhash2-0.9.4.tar.gz",
"platform": "x86",
"description": "# Introduction [![pypi](https://img.shields.io/pypi/v/pyhash.svg)](https://pypi.org/project/pyhash/) [![Travis CI Status](https://travis-ci.org/flier/pyfasthash.svg?branch=master)](https://travis-ci.org/flier/pyfasthash) [![codecov](https://codecov.io/gh/flier/pyfasthash/branch/master/graph/badge.svg)](https://codecov.io/gh/flier/pyfasthash)\n\n`pyhash` is a python non-cryptographic hash library.\n\nIt provides several common hash algorithms with C/C++ implementation for performance and compatibility.\n\n```python\n>>> import pyhash\n>>> hasher = pyhash.fnv1_32()\n\n>>> hasher('hello world')\n2805756500L\n\n>>> hasher('hello', ' ', 'world')\n2805756500L\n\n>>> hasher('world', seed=hasher('hello '))\n2805756500L\n```\n\nIt also can be used to generate fingerprints without seed.\n\n```python\n>>> import pyhash\n>>> fp = pyhash.farm_fingerprint_64()\n\n>>> fp('hello')\n>>> 13009744463427800296L\n\n>>> fp('hello', 'world')\n>>> [13009744463427800296L, 16436542438370751598L]\n```\n\n**Notes**\n\n`hasher('hello', ' ', 'world')` is a syntax sugar for `hasher('world', seed=hasher(' ', seed=hasher('hello')))`, and may not equals to `hasher('hello world')`, because some hash algorithms use different `hash` and `seed` size.\n\nFor example, `metro` hash always use 32bit seed for 64/128 bit hash value.\n\n```python\n>>> import pyhash\n>>> hasher = pyhash.metro_64()\n\n>>> hasher('hello world')\n>>> 5622782129197849471L\n\n>>> hasher('hello', ' ', 'world')\n>>> 16402988188088019159L\n\n>>> hasher('world', seed=hasher(' ', seed=hasher('hello')))\n>>> 16402988188088019159L\n```\n\n# Installation\n\n```bash\n$ pip install pyhash\n```\n\n**Notes**\n\nIf `pip` install failed with similar errors, [#27](https://github.com/flier/pyfasthash/issues/27)\n\n```\n/usr/lib/gcc/x86_64-linux-gnu/6/include/smmintrin.h:846:1: error: inlining failed in call to always_inline 'long long unsigned int _mm_crc32_u64(long long unsigned int, long long unsigned int)': target specific option mismatch\n _mm_crc32_u64 (unsigned long long __C, unsigned long long __V)\n ^~~~~~~~~~~~~\nsrc/smhasher/metrohash64crc.cpp:52:34: note: called from here\n v[0] ^= _mm_crc32_u64(v[0], read_u64(ptr)); ptr += 8;\n ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~\n```\n\nPlease upgrade `pip` and `setuptools` to latest version and try again\n\n```bash\n$ pip install --upgrade pip setuptools\n```\n\n**Notes**\n\nIf `pip` install failed on MacOS with similar errors [#28](https://github.com/flier/pyfasthash/issues/28)\n\n```\n creating build/temp.macosx-10.6-intel-3.6\n ...\n /usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -c src/smhasher/metrohash64crc.cpp -o build/temp.macosx-10.6-intel-3.6/src/smhasher/metrohash64crc.o -msse4.2 -maes -mavx -mavx2\n src/smhasher/metrohash64crc.cpp:52:21: error: use of undeclared identifier '_mm_crc32_u64'\n v[0] ^= _mm_crc32_u64(v[0], read_u64(ptr)); ptr += 8;\n ^\n```\n\nYou may try to\n\n```bash\n$ CFLAGS=\"-mmacosx-version-min=10.13\" pip install pyhash\n```\n\n**Notes**\n\n`pyhash` only support `pypy` v6.0 or newer, please [download and install](https://pypy.org/download.html) the latest `pypy`.\n\n# Algorithms\n\npyhash supports the following hash algorithms\n\n- [FNV](http://isthe.com/chongo/tech/comp/fnv/) (Fowler-Noll-Vo) hash\n - fnv1_32\n - fnv1a_32\n - fnv1_64\n - fnv1a_64\n- [MurmurHash](http://code.google.com/p/smhasher/)\n - murmur1_32\n - murmur1_aligned_32\n - murmur2_32\n - murmur2a_32\n - murmur2_aligned_32\n - murmur2_neutral_32\n - murmur2_x64_64a\n - murmur2_x86_64b\n - murmur3_32\n - murmur3_x86_128\n - murmur3_x64_128\n- [lookup3](http://burtleburtle.net/bob/hash/doobs.html)\n - lookup3\n - lookup3_little\n - lookup3_big\n- [SuperFastHash](http://www.azillionmonkeys.com/qed/hash.html)\n - super_fast_hash\n- [City Hash](https://code.google.com/p/cityhash/)\n _ city_32\n - city_64\n - city_128\n - city_crc_128\n - city_fingerprint_256\n- [Spooky Hash](http://burtleburtle.net/bob/hash/spooky.html)\n - spooky_32\n - spooky_64\n - spooky_128\n- [FarmHash](https://github.com/google/farmhash)\n - farm_32\n - farm_64\n - farm_128\n - farm_fingerprint_32\n - farm_fingerprint_64\n - farm_fingerprint_128\n- [MetroHash](https://github.com/jandrewrogers/MetroHash)\n - metro_64\n - metro_128\n - metro_crc_64\n - metro_crc_128\n- [MumHash](https://github.com/vnmakarov/mum-hash)\n - mum_64\n- [T1Ha](https://github.com/leo-yuriev/t1ha)\n - t1ha2 _(64-bit little-endian)_\n - t1ha2_128 _(128-bit little-endian)_\n - t1ha1 _(64-bit native-endian)_\n - t1ha1_le _(64-bit little-endian)_\n - t1ha1_be _(64-bit big-endian)_\n - t1ha0 _(64-bit, choice fastest function in runtime.)_\n - ~~t1_32~~\n - ~~t1_32_be~~\n - ~~t1_64~~\n - ~~t1_64_be~~\n- [XXHash](https://github.com/Cyan4973/xxHash)\n - xx_32\n - xx_64\n - xxh3_64 **NEW**\n - xxh3_128 **NEW**\n- [Highway Hash](https://github.com/google/highwayhash)\n - highway_64 **NEW**\n - highway_128 **NEW**\n - highway_256 **NEW**\n\n## String and Bytes literals\n\nPython has two types can be used to present string literals, the hash values of the two types are definitely different.\n\n- For Python 2.x [String literals](https://docs.python.org/2/reference/lexical_analysis.html#string-literals), `str` will be used by default, `unicode` can be used with the `u` prefix.\n- For Python 3.x [String and Bytes literals](https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals), `unicode` will be used by default, `bytes` can be used with the `b` prefix.\n\nFor example,\n\n```\n$ python2\nPython 2.7.15 (default, Jun 17 2018, 12:46:58)\n[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> import pyhash\n>>> hasher = pyhash.murmur3_32()\n>>> hasher('foo')\n4138058784L\n>>> hasher(u'foo')\n2085578581L\n>>> hasher(b'foo')\n4138058784L\n```\n\n```\n$ python3\nPython 3.7.0 (default, Jun 29 2018, 20:13:13)\n[Clang 9.1.0 (clang-902.0.39.2)] on darwin\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> import pyhash\n>>> hasher = pyhash.murmur3_32()\n>>> hasher('foo')\n2085578581\n>>> hasher(u'foo')\n2085578581\n>>> hasher(b'foo')\n4138058784\n```\n\nYou can also import [unicode_literals](http://python-future.org/unicode_literals.html) to use unicode literals in Python 2.x\n\n```python\nfrom __future__ import unicode_literals\n```\n\n> In general, it is more compelling to use unicode_literals when back-porting new or existing Python 3 code to Python 2/3 than when porting existing Python 2 code to 2/3. In the latter case, explicitly marking up all unicode string literals with u'' prefixes would help to avoid unintentionally changing the existing Python 2 API. However, if changing the existing Python 2 API is not a concern, using unicode_literals may speed up the porting process.\n",
"bugtrack_url": null,
"license": "Apache Software License",
"summary": "A fork of Python Non-cryptographic Hash Library",
"version": "0.9.4",
"project_urls": {
"Download": "https://github.com/nnnewb/pyfasthash/releases",
"Homepage": "https://github.com/nnnewb/pyfasthash"
},
"split_keywords": [
"hash",
"hashing",
"fasthash"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a0bbb357e987eb8686912f048e3d9f51aad1c354ec6d9c0852ad11b0c25ed805",
"md5": "69f73da49162ed4f7d486119dd6350bb",
"sha256": "b24d90d2e2114a7349a5aa2b8ac0ffeee73617ea18a976c049aea6c9970ecef9"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "69f73da49162ed4f7d486119dd6350bb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 260837,
"upload_time": "2024-10-24T10:02:00",
"upload_time_iso_8601": "2024-10-24T10:02:00.483087Z",
"url": "https://files.pythonhosted.org/packages/a0/bb/b357e987eb8686912f048e3d9f51aad1c354ec6d9c0852ad11b0c25ed805/pyhash2-0.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6108633b528cfd1b7764844998915e8cf408854b46096b1c97535e0415f36324",
"md5": "c36fcb5deb31fc6bd6dd69ee3f27335e",
"sha256": "9baed6c86723b1b94b8689d8f0b071a5ff3d2b80987095b993e4c046166c7d00"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "c36fcb5deb31fc6bd6dd69ee3f27335e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 234841,
"upload_time": "2024-10-24T10:09:31",
"upload_time_iso_8601": "2024-10-24T10:09:31.500385Z",
"url": "https://files.pythonhosted.org/packages/61/08/633b528cfd1b7764844998915e8cf408854b46096b1c97535e0415f36324/pyhash2-0.9.4-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "74c9fa6fa87ab34abcf43c4bbf69298a5c3961d27aac36cd6cc30b4d6f3fa191",
"md5": "6e2ab00b579532f361ee575707dca140",
"sha256": "33ef84cefdaf2f0591bf2c82154d7b1c30300a4d432a247247cf71768f582c5a"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6e2ab00b579532f361ee575707dca140",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 262706,
"upload_time": "2024-10-24T10:02:01",
"upload_time_iso_8601": "2024-10-24T10:02:01.965865Z",
"url": "https://files.pythonhosted.org/packages/74/c9/fa6fa87ab34abcf43c4bbf69298a5c3961d27aac36cd6cc30b4d6f3fa191/pyhash2-0.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b6ec13dd035ef4544e90d519116fb426dca025559fe29f5eb42239a89fb39c9e",
"md5": "50a586d439bb776633695b9d2f742701",
"sha256": "6ede768bf65fd57ce84582e08c09d3bcaa4d297c1e0db958c1a5fd1b09a26d96"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_38_aarch64.whl",
"has_sig": false,
"md5_digest": "50a586d439bb776633695b9d2f742701",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 221558,
"upload_time": "2024-10-24T10:02:26",
"upload_time_iso_8601": "2024-10-24T10:02:26.049161Z",
"url": "https://files.pythonhosted.org/packages/b6/ec/13dd035ef4544e90d519116fb426dca025559fe29f5eb42239a89fb39c9e/pyhash2-0.9.4-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_38_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "24907bf5f7dcec97253bce0a881115a9a0524d38701412ec7764a1ea30a0f601",
"md5": "6f7016c55c5308a667f2e7b332b34b02",
"sha256": "ae89b5bfeddd1fd6c6d21b32f7a1e346829c179163c5c111f4fa610e85319877"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "6f7016c55c5308a667f2e7b332b34b02",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 236099,
"upload_time": "2024-10-24T10:09:24",
"upload_time_iso_8601": "2024-10-24T10:09:24.556860Z",
"url": "https://files.pythonhosted.org/packages/24/90/7bf5f7dcec97253bce0a881115a9a0524d38701412ec7764a1ea30a0f601/pyhash2-0.9.4-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6350ec3bdd6fb35edef301bc30e23b5bdaab46b05e1f2e84d7d6304fd7373e10",
"md5": "f7140c99967670eccc445d95b5e14e8e",
"sha256": "5ef58766ff4a542f9ede627aa62f42e16f5c7be9b7ded857898925c121f03c0e"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f7140c99967670eccc445d95b5e14e8e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 261106,
"upload_time": "2024-10-24T10:02:07",
"upload_time_iso_8601": "2024-10-24T10:02:07.430509Z",
"url": "https://files.pythonhosted.org/packages/63/50/ec3bdd6fb35edef301bc30e23b5bdaab46b05e1f2e84d7d6304fd7373e10/pyhash2-0.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30b9b0461d80ee789c54b772a3ac207f3a5a4bc5267952893789f18b90f98562",
"md5": "c77cd0b2478a5c0d14614079d44b5813",
"sha256": "ee8d1805a85517dea017924a3c1639b160d2d4ee257c4297570aeaa5bd0a08ec"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "c77cd0b2478a5c0d14614079d44b5813",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 235820,
"upload_time": "2024-10-24T10:09:23",
"upload_time_iso_8601": "2024-10-24T10:09:23.042420Z",
"url": "https://files.pythonhosted.org/packages/30/b9/b0461d80ee789c54b772a3ac207f3a5a4bc5267952893789f18b90f98562/pyhash2-0.9.4-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cbfcbacdf75c627fcdf20cad4f3e0e66c9f8707b9c4b906938117ba6b63f7381",
"md5": "4bc2eec63cacac8edb38ef22ba507920",
"sha256": "a8db1f3b3e03bd2a5b8872aab42c0af0272f7c5f5e898dbc0f9fed3b563debbd"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4bc2eec63cacac8edb38ef22ba507920",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 262177,
"upload_time": "2024-10-24T10:02:01",
"upload_time_iso_8601": "2024-10-24T10:02:01.951596Z",
"url": "https://files.pythonhosted.org/packages/cb/fc/bacdf75c627fcdf20cad4f3e0e66c9f8707b9c4b906938117ba6b63f7381/pyhash2-0.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "88f294f40a6aaa8c210a0909ac1479df40b4e516056358e196ab4e65c319b25b",
"md5": "2dd36c3d1f37b907b69b4097c61aab17",
"sha256": "ad5286d4d53158c786cf6eb469ef7161a8d69523007b391f918573e0841f3471"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "2dd36c3d1f37b907b69b4097c61aab17",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 235847,
"upload_time": "2024-10-24T10:10:54",
"upload_time_iso_8601": "2024-10-24T10:10:54.171519Z",
"url": "https://files.pythonhosted.org/packages/88/f2/94f40a6aaa8c210a0909ac1479df40b4e516056358e196ab4e65c319b25b/pyhash2-0.9.4-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df322a49dbbafa7476adfeec2082535376095bc40b7ae3aa2a4078a37808621b",
"md5": "9722142f6744a10c9354b06fe32bd1f9",
"sha256": "9f2ea26106ee5a58e066977b0aa5bbe6f2be3f1d1c5cb997984418e25dff132b"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9722142f6744a10c9354b06fe32bd1f9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 260502,
"upload_time": "2024-10-24T10:02:07",
"upload_time_iso_8601": "2024-10-24T10:02:07.384179Z",
"url": "https://files.pythonhosted.org/packages/df/32/2a49dbbafa7476adfeec2082535376095bc40b7ae3aa2a4078a37808621b/pyhash2-0.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6521c254704aa3b29e6deea75b622c7095ffb001d6075f5ee7396df02aa381de",
"md5": "bb05f0c0f2a5fa024ea187784c63d98f",
"sha256": "b2de5fb2c153e90201ea09d3a38ab3ca881c98e8c2ee0cdfbd46c0940813ab81"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "bb05f0c0f2a5fa024ea187784c63d98f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 234864,
"upload_time": "2024-10-24T10:09:46",
"upload_time_iso_8601": "2024-10-24T10:09:46.648742Z",
"url": "https://files.pythonhosted.org/packages/65/21/c254704aa3b29e6deea75b622c7095ffb001d6075f5ee7396df02aa381de/pyhash2-0.9.4-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "523370f0e20a77f234c71989ece2e5d856fa068cf8ea4bbd8a5d5e1a13a08462",
"md5": "7837e2ff99f8aa4ce9565d91a17f1ad9",
"sha256": "37db697cdb21d187441b633195bf5338b32bda6068e17aa08301ad956ee8c0ee"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "7837e2ff99f8aa4ce9565d91a17f1ad9",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 261235,
"upload_time": "2024-10-24T10:02:01",
"upload_time_iso_8601": "2024-10-24T10:02:01.960766Z",
"url": "https://files.pythonhosted.org/packages/52/33/70f0e20a77f234c71989ece2e5d856fa068cf8ea4bbd8a5d5e1a13a08462/pyhash2-0.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f75c63baea827a9eacd1c45bf4a29b16ddd2c9dc7e58126c6ace2340e792e2a1",
"md5": "9b0b2547d23164ff5597adb284303de6",
"sha256": "1357dfd023f69fb29acdb2f42b9dacbe7d13632046b34b45200d66e3695894fd"
},
"downloads": -1,
"filename": "pyhash2-0.9.4-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "9b0b2547d23164ff5597adb284303de6",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 234975,
"upload_time": "2024-10-24T10:09:48",
"upload_time_iso_8601": "2024-10-24T10:09:48.931026Z",
"url": "https://files.pythonhosted.org/packages/f7/5c/63baea827a9eacd1c45bf4a29b16ddd2c9dc7e58126c6ace2340e792e2a1/pyhash2-0.9.4-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "434f9af03248cfe0a979fdd8282678968636a133cd06f5916a2073c2b7b027dc",
"md5": "21f73a38d89f35d170f3e820f4842f04",
"sha256": "39d037c4fdf94ed737736ab2e77b4f28afe47345016cf9a128f9cdefdee42296"
},
"downloads": -1,
"filename": "pyhash2-0.9.4.tar.gz",
"has_sig": false,
"md5_digest": "21f73a38d89f35d170f3e820f4842f04",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 1364325,
"upload_time": "2024-10-24T10:02:03",
"upload_time_iso_8601": "2024-10-24T10:02:03.058794Z",
"url": "https://files.pythonhosted.org/packages/43/4f/9af03248cfe0a979fdd8282678968636a133cd06f5916a2073c2b7b027dc/pyhash2-0.9.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-24 10:02:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nnnewb",
"github_project": "pyfasthash",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "pyhash2"
}