Skip to main content

A Python wrapper around CityHash

Latest Version Downloads Tests Status Supported Python versions License

Getting Started

To use this package in your program, simply type

pip install cityhash

After that, you should be able to import the module and do things with it (see usage example below).

Usage Examples

Stateless Hashing

The package contains 64- and 128-bit implementations of the CityHash algorithm, named as follows:

>>> from cityhash import CityHash32, CityHash64, CityHash128
>>> print(CityHash32("abc"))
795041479
>>> print(CityHash64("abc"))
2640714258260161385
>>> print(CityHash128("abc"))
76434233956484675513733017140465933893

Incremental Hashing

The current implementation of CityHash does not support incremental hashing. If you require this feature, use MetroHash instead, which does support it.

Buffer Protocol Support

The methods in this module support Python Buffer Protocol, which allows them to be used on any object that exports a buffer interface. Here is an example showing hashing of a 4D NumPy array:

>>> import numpy as np
>>> arr = np.zeros((256, 256, 4))
>>> CityHash64(arr)
11496798039784891892

Note that arrays need to be contiguous for this to work. To convert a non-contiguous array, use np.ascontiguousarray() method.

Development

For those who want to contribute, here is a quick start using some makefile commands:

git clone https://github.com/escherba/python-cityhash.git
cd python-cityhash
make env           # creates a Python virtualenv
make test          # run Python tests
make cpp-test      # run C++ tests

The Makefiles provided have self-documenting targets. To find out which targets are available, type:

make help

See Also

For other fast non-cryptographic hashing implementations available as Python extensions, see MetroHash and MurmurHash.

Authors

The Python bindings were written by Alexander [Amper] Marshalov, and are currently maintained by Eugene Scherba. The original CityHash algorithm is by Google.

License

This software is licensed under the MIT License. See the included LICENSE file for details.

Release files for cityhash 0.2.4.post10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cityhash 0.2.4.post10
File Size Uploaded
cityhash-0.2.4.post10.tar.gz 58.0 kB Details

Release files / cityhash-0.2.4.post10.tar.gz

Download URL cityhash-0.2.4.post10.tar.gz
Size 58.0 kB
Tags Source
SHA-256 checksum
How to use checksums
973f62d857086421a231302898f953f344086051daffe3d75a32460a61b53a92
BLAKE2b-256 checksum
How to use checksums
9ae5c5dd6f959984c9e231af1cbf8c212f75ead9565472a1a076cdcd5857e37f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.8

Release history Release notifications | RSS feed

0.4.8

46 release files

0.4.7

34 release files

0.4.6

34 release files

0.4.5

34 release files

0.4.4

34 release files

0.4.3

34 release files

0.4.1

26 release files

0.3.3

5 release files

0.3.2

5 release files

0.3.0

1 release file

This release

0.2.4.post10 This release

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

2 release files

0.1.4

1 release file

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page