Skip to main content

Fast Hamming distance calculation for hexadecimal strings

Project description

Pip Prs Github

What does it do?

This module performs a fast bitwise hamming distance of two hexadecimal strings.

This looks like:

DEADBEEF = 11011110101011011011111011101111
00000000 = 00000000000000000000000000000000
XOR      = 11011110101011011011111011101111
Hamming  = number of ones in DEADBEEF ^ 00000000 = 24

This essentially amounts to

>>> import gmpy
>>> gmpy.popcount(0xdeadbeef ^ 0x00000000)
24

except with Python strings, so

>>> import gmpy
>>> gmpy.popcount(int("deadbeef", 16) ^ int("00000000", 16))
24

A few assumptions are made and enforced:

  • this is a valid hexadecimal string (i.e., [a-fA-F0-9]+)

  • the strings are the same length

  • the strings do not begin with "0x"

Why yet another Hamming distance library?

There are a lot of fantastic (python) libraries that offer methods to calculate various edit distances, including Hamming distances: Distance, textdistance, scipy, jellyfish, etc.

In this case, I needed a hamming distance library that worked on hexadecimal strings (i.e., a Python str) and performed blazingly fast. Furthermore, I often did not care about hex strings greater than 256 bits. That length constraint is different vs all the other libraries and enabled me to explore vectorization techniques via numba, numpy, and SSE/AVX intrinsics.

Lastly, I wanted to minimize dependencies, meaning you do not need to install numpy, gmpy, cython, pypy, pythran, etc.

Eventually, after playing around with gmpy.popcount, numba.jit, pythran.run, numpy, I decided to write what I wanted in essentially raw C. At this point, I’m using raw char* and int*, so exploring re-writing this in Fortran makes little sense.

Installation

To install, ensure you have Python 3.6+. Run

pip install hexhamming

or to install from source

git clone https://github.com/mrecachinas/hexhamming
cd hexhamming
python setup.py install # or pip install .

If you want to contribute to hexhamming, you should install the dev dependencies

pip install -r requirements-dev.txt

and make sure the tests pass with

python -m pytest -vls .

Example

Using hexhamming is as simple as

>>> from hexhamming import hamming_distance_string
>>> hamming_distance_string("deadbeef", "00000000")
24

New in v2.0.0 : hexhamming now supports byte``s via ``hamming_distance_bytes. You use it in the exact same way as before, except you pass in a byte string.

>>> from hexhamming import hamming_distance_bytes
>>> hamming_distance_bytes(b"\xde\xad\xbe\xef", b"\x00\x00\x00\x00")
24

We also provide a method for a quick boolean check of whether two hexadecimal strings are within a given Hamming distance.

>>> from hexhamming import check_hexstrings_within_dist
>>> check_hexstrings_within_dist("ffff", "fffe", 2)
True
>>> check_hexstrings_within_dist("ffff", "0000", 2)
False

Similarly, hexhamming supports a quick byte array check via check_bytes_within_dist, which has a similar API as check_hexstrings_within_dist, except it expects a bytes array.

The API described above is targeted at comparing two individual records and calculating their hamming distance quickly. For many applications the goal is to compare a given record to an array of other records and to find out if there are elements in the array that are within a given hamming distance of the search record. To support these application cases hexhamming has a set of array APIs. Given that these operations are often speed critical and require preparing data anyway, they are only available for bytes strings, not for hex strings.

They all have the same signature, they take two bytes arrays and the max_dist to consider. The difference is, that the first bytes string should be a concatenation of a number of records to compare to, i.e. the length needs to be a multiple of the length of the second bytes string.

There are three functions that return different results, depending on what is needed by the application.

check_bytes_arrays_first_within_dist returns the index of the first element that has a hamming distance less than max_dist.

>>> from hexhamming import check_bytes_arrays_first_within_dist
>>> check_bytes_arrays_first_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xff\xff", 4)
1

check_bytes_arrays_best_within_dist returns a tuple with the distance and the index of the element that has the lowest hamming distance less than max_dist, or (-1,-1) if none do.

>>> from hexhamming import check_bytes_arrays_best_within_dist
>>> check_bytes_arrays_best_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xff\xff", 4)
(0, 5)

>>> check_bytes_arrays_best_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xef\xfe", 4)
(2, 4)

check_bytes_arrays_all_within_dist returns a list of tuples with the distance and the index of the element that have a hamming distance less than max_dist, or [] if none do.

>>> from hexhamming import check_bytes_arrays_all_within_dist
>>> check_bytes_arrays_all_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xff\xff", 4)
[(4, 1), (4, 3), (4, 4), (0, 5)]

Tip: When you’re assembling the long array of records to compare against, don’t concatenate the different bytes together. As they’re immutable that is a very slow operation. Use a bytearray instead, and cast it to bytes at the end. See https://www.guyrutenberg.com/2020/04/04/fast-bytes-concatenation-in-python/ for more info and tests.

Benchmark

Below is a benchmark using pytest-benchmark with hexhamming==v1.3.2 my 2020 2.0 GHz quad-core Intel Core i5 16 GB 3733 MHz LPDDR4 macOS Catalina (10.15.5) with Python 3.7.3 and Apple clang version 11.0.3 (clang-1103.0.32.62).

Name

Mean (ns)

Std (ns)

Median (ns)

Rounds

Iterations

test_hamming_distance_bench_3

93.8

10.5

94.3

53268

200

test_hamming_distance_bench_3_same

94.2

15.2

94.9

102146

100

test_check_hexstrings_within_dist_bench

231.9

104.2

216.5

195122

22

test_hamming_distance_bench_256

97.5

34.1

94.0

195122

22

test_hamming_distance_bench_1000

489.8

159.4

477.5

94411

20

test_hamming_distance_bench_1000_same

497.8

87.8

496.6

18971

20

test_hamming_distance_bench_1024

509.9

299.5

506.7

18652

10

test_hamming_distance_bench_1024_same

467.4

205.9

450.4

181819

10

Project details


Download files

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

Source Distribution

hexhamming-2.4.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hexhamming-2.4.0-cp314-cp314-win_amd64.whl (16.5 kB view details)

Uploaded CPython 3.14Windows x86-64

hexhamming-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl (45.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

hexhamming-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl (32.4 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

hexhamming-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (36.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

hexhamming-2.4.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (50.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

hexhamming-2.4.0-cp314-cp314-macosx_11_0_arm64.whl (12.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

hexhamming-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl (12.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

hexhamming-2.4.0-cp313-cp313-win_amd64.whl (16.0 kB view details)

Uploaded CPython 3.13Windows x86-64

hexhamming-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl (45.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

hexhamming-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl (32.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

hexhamming-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (36.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

hexhamming-2.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (50.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

hexhamming-2.4.0-cp313-cp313-macosx_11_0_arm64.whl (12.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

hexhamming-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl (12.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

hexhamming-2.4.0-cp312-cp312-win_amd64.whl (16.0 kB view details)

Uploaded CPython 3.12Windows x86-64

hexhamming-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl (45.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

hexhamming-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl (32.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

hexhamming-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (33.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

hexhamming-2.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (47.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

hexhamming-2.4.0-cp312-cp312-macosx_11_0_arm64.whl (12.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

hexhamming-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl (12.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

hexhamming-2.4.0-cp311-cp311-win_amd64.whl (16.0 kB view details)

Uploaded CPython 3.11Windows x86-64

hexhamming-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl (46.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

hexhamming-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl (32.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

hexhamming-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (33.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

hexhamming-2.4.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (47.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

hexhamming-2.4.0-cp311-cp311-macosx_11_0_arm64.whl (12.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

hexhamming-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl (12.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

hexhamming-2.4.0-cp310-cp310-win_amd64.whl (16.0 kB view details)

Uploaded CPython 3.10Windows x86-64

hexhamming-2.4.0-cp310-cp310-musllinux_1_2_x86_64.whl (45.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

hexhamming-2.4.0-cp310-cp310-musllinux_1_2_aarch64.whl (31.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

hexhamming-2.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (32.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

hexhamming-2.4.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (46.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

hexhamming-2.4.0-cp310-cp310-macosx_11_0_arm64.whl (12.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

hexhamming-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl (12.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file hexhamming-2.4.0.tar.gz.

File metadata

  • Download URL: hexhamming-2.4.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hexhamming-2.4.0.tar.gz
Algorithm Hash digest
SHA256 8254483075f199025c4e95d1042a850b806955e7c460cda38a10091ce60f0d24
MD5 2169a6d5f61f5177beaf2d045d14491d
BLAKE2b-256 a0803d0d18191c3b2060801d5aefaeda48c2d35674af5812f892fb60777f966e

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: hexhamming-2.4.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a82343631beb9532742858d0590c94fb4ac289e59e10ee901a7a7603636f8b5c
MD5 4122daa08fa801f1972c4e4cc2456400
BLAKE2b-256 fa3820b0eb7fc7238bb96e668ac0d0692e26977f865e6d76da5f7403fbb8344c

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 34e532a4114139aa63578989569f0a5b6440621b52aff2181b7db16f7b7b7e94
MD5 9edda02001ad3405a05d4bf6c459c646
BLAKE2b-256 55fce3ac2b5e2351fd4d1a2915662224333d0a8942c3a89ed083a31a52cbe88c

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d8fd2b0a8ffda5f194d8a68acfe18ee46c18b34e91bcd445a54a77840991a708
MD5 0dd410ec5d3b6a9f7cc1c4e320d50705
BLAKE2b-256 3f97364c84798811bdc2eb0bcc42127ef3f61054d4eb8428022f5dc03a9f22ea

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8c19a2c482f42baafe262da76a3886193fc0326499a07668f038535ac45856d7
MD5 9c1971e4635ed23eb2d8624e1fedcae9
BLAKE2b-256 7c0b197d86e028909df3a8624d32a5f31545364aa1532562b6ec3e2840edfbe7

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 2107abe3c3e94a6794e16273ed01742c85370963cd199fd17ed6364836c2c353
MD5 18429ee1358416f988b51b1c55adffe7
BLAKE2b-256 1ca5009befc25c5b02f4a3a2dec80013d3e784afaf54fe5e32ec3528e3586f2a

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7190d9406f40453f4bb1cbc6e9afe0b63064b51891fdbb9d88790ae919713946
MD5 bec8161265818bf81fb7d5c640c1df5e
BLAKE2b-256 89219feb3aeeeba90321125345f211ccb70f5a59f2a540de7ff61bdad4bf1277

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d2ace2506a2cf0f484034e8a4a4abb9d4125ebc086f6c61c0cd1fdd2abdd1a72
MD5 fb294ac947d2461966473b833ce82e0f
BLAKE2b-256 51b17ce08939c20169275b340ae0d8573655089e904163529d7909e242fb79ab

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: hexhamming-2.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3b494e7ab431d967f0e2f45aaf98a44d1a21fcaa7da249e6c7f0460ea9490770
MD5 918c6a38139502b2db1b99619b87dcde
BLAKE2b-256 825f85e882b788b5a12f6d199ffac6ba67981955c0ca2115903886cb1be2c29b

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9fbf52e05096ef0d92a3cf2b1faac7ed3a769023551d2024aed6ecf6ae8bafd9
MD5 a0c9145bd4e7d2d57a25cc9267a8c60f
BLAKE2b-256 7b013e91f7b8687f57e1f29aa6880f106bcf41e07990e77a6e2bbf5fce2bb152

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 29258643e14babafd9175ccd471c4aefc48f0174efe26dafc1b172bbbfa899af
MD5 6adb563586847bfaece27fb01228885e
BLAKE2b-256 778a8aac76d91d1771129d58bb562210856812ac3a5f674b7288675a75364763

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4602fe9ff4733de6518fd05bf8b11ac25bfa974a8a367420fcaf221791b08594
MD5 3b5d4b5de3f2506fc60aa63104970fda
BLAKE2b-256 9f9bccf35f9b39fdb0ace225076b74c9b65d848623265e3a99b7092d12ca63af

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b3756049346eee03014787283fe02dda8dca6b1e7473af8b16a39092133588a9
MD5 6710a192f7f96872161d652c45bb8c8f
BLAKE2b-256 3afc1a30910502aac4a2f2f5d72e1d13712983c3ee06d813df19ec5e895116a6

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63deee440518292351ee9a574ab306368ce923de8c711ea5ce75b6087dc94038
MD5 7d48141919e6c8a611d72fcff7e48e61
BLAKE2b-256 9e88f97a2f60debd30227005e86877843c2295ca76a32f5d8a3343643f71746e

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 3a2b7597faf60820d56ee03ddbe9755083c6e12fac7b1825e79dfdb707206182
MD5 0b1f1d0f79b558446f6426361170b814
BLAKE2b-256 aeb1490b5617cc42ed2e8ba09b06fdea58d8306ea26b4da7ffb98efa7482dd01

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: hexhamming-2.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b5aa6b632202fe735675fec510ecdc208e4b22276e0dbf453475b5be500fe6b5
MD5 dce2b22333455bbae9e18ae4ec4ed2a1
BLAKE2b-256 9158c5e8173a81cc180eb2dd117e6c8b8361557ec0dd4e6e9377f26b76bacb0a

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 19950926eb80baf56de7c0d1fa2f1556ac4f4ca959b36813b68bb8c0ba7a41d6
MD5 38be5b378a31840fe7411c8dd860d8a3
BLAKE2b-256 336ed52929fed47038f83bf3f9bb87ce76750728efd0469db92039bee59886eb

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 902a2303f705e2ebead78dfdcf70bc1eb2395d3a049290fb71e846ffa682e1d1
MD5 875033fb3dc2443a022372f54660ea16
BLAKE2b-256 9ae256c4973d5300f93f233cdd33f8f78698b503f962d146d866e9aa0bbda829

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1ebe244b09ce2c107613caa6b1b1a6d654b1c2ef713a4c3dce7c5f29ac798e1f
MD5 8ac0e57390bca1e8e7c4bd0d68548713
BLAKE2b-256 fce9c346d154e8a657d94a640101918f5e1495d471c03db072b96211e80ccef6

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 9b9bb47b2ac5a05ce02e1caa4d90b6403ab59531f84b644c277296c9f6279926
MD5 6322d1d704133bf5fbd65acdb6e2b313
BLAKE2b-256 e193690cbb2e096a32a1370d4d5a478832aa26f3fd96d91d24ce7d3e622d05c9

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b45a5f8e8375e9c0d9ffaade13887c6b100b4e6a93e1a008a47ad45ea8820f66
MD5 835273ff8d6a85aaafe870af9edd8b21
BLAKE2b-256 f4000ec2657252478adfe7c21509aa64d158d3c5bc02fbb4f8b9d59f426ff9df

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1d1fe3a2c7a9bf3011f172e976d30b745a1421ed9c5a99f5e856dd80f00f122d
MD5 206eb3d55412a5381a14cdd95038123f
BLAKE2b-256 97dfacb213f72f345c705a77eb522f3e0df0f7641a9f96416cf6c10ea591590a

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: hexhamming-2.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3089b6848e1a97d4278f6c414c3c2975eb7c68ac901e5f444759007277f8142f
MD5 872b823c94477b6b931f4d84287c8aed
BLAKE2b-256 f34f8873d7c2117f82c09ed78b4d7db89e960d3ada42e8ecc9791f59e5837663

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d989b221447eb1cf0075845b960cf76ebd4c5270a9d916c68bff686d2c41e792
MD5 13b6794f329b734eaa7dafdcfd5bb8b3
BLAKE2b-256 87cfebff49aacdcd5bf203e2db98d92426b1779bb9b1f3949b4c60f48039beee

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7a197ebfe1225db93057e2e72e185e5b9f5625726ac07440a0fb06c673670535
MD5 7a1d9a27bcafa1c99df1e42e75cf908b
BLAKE2b-256 09dabd42a6db970e1ded07e02db61853070417f5318ffa91006b3c0c7c441c15

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7a9b8c32ba3487d90ecf9c222cab690c3e619128269519ac089d79e6096ee4fb
MD5 460f0601a0875dab112725f79510b032
BLAKE2b-256 d7b36783ca328991b46968d9a17f7673c1851b1aae818040e22e3a2c3bb2d42c

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 adca72218c998c6a0b9bb9f46464bd644676808d611bbf67dbe51dd221e18e6f
MD5 c31eb3d915f582da1131cef0a58ce4e7
BLAKE2b-256 ad43d3e4118263b27724fe2838bfa00cad8cbd4ed85e1601b4819d39e56cbe3b

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80b6b1495ba30426c1e722c2f5336385732984ffb5d5fb87be7d7472f16e0254
MD5 ff4b1817eb21f63a2e4a6647f3fab872
BLAKE2b-256 b55fd968e14a0fa19be73101a50f0c2f56b23eb80ff2ba0c85033f198709269b

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6a590332276b82696588a75b9a1ba3d613aa7719355506127d0624f5f8060cc7
MD5 d84706e8ad32054eb7b705b5536c1f72
BLAKE2b-256 aee187d79460408e4d2d5da5e9448d050de899690d1a60a7b5e32dea94c1f06d

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: hexhamming-2.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f4ea4dd46e8eb15cbe95809237f8a0b4a22eeed93085917a4ff5742814c0955f
MD5 b05bd6a21073a113e64941e648b3642b
BLAKE2b-256 34be39645eac1e6048c5606406400e8d852647b7c99f54688582f831fa263873

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 113a2ae860869ff124791eead35d15db18f4c41c5d5a615aad3976dd985cec81
MD5 3b9eb74f8602116172855c8ea4d87993
BLAKE2b-256 5cd75e8782e771e14242e1bb651fc2e1235caf16d5a5615348c5b97cabedb310

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2c879ef0f357e98ca1048bf0912222630514669f29af8a82cf88b427ce4c3cb8
MD5 e134a9f0d990f45a7d90a050f7b30fca
BLAKE2b-256 dcf6849f02fcfabbc2e75d793bc52a9e84ee0c10b13997a310ad920daf5b3821

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 106708fff7d852e1dcda4f275274f5efb8a2bbf3918c54eb9949868d3fdf5c66
MD5 1aff0fec8909153fcad438502ae9a78e
BLAKE2b-256 04e01ded4c0fe0f0c3f0f321d104a9aa778c25d0cf18dda7dd19e06a68646ce3

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 95b312d07085c7e1ff46f8fd7a7197e94015839bb13d383b79a936cfba1805f3
MD5 c7cf93fd8183b4db2d0be602d7b4487c
BLAKE2b-256 001a045db27f5cecf98048d820503526d5c96d484244d073001cae0189d56de7

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ebd1301bb0f07ede26f7b5c90d3e4194c5d71a54b69750f30d14c47f60dc585
MD5 9aead8eab7ffe43951c7b390af7db96e
BLAKE2b-256 4158e63af6d2d5ffa0bcb25ce2ce1f0a24c4eac19dc0d048400120499719afff

See more details on using hashes here.

File details

Details for the file hexhamming-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for hexhamming-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4472fea20d864932375caaf020c1a8d65dbb262317b6b6a6e8d43d4d3ba44293
MD5 c7885f0e0ef04a7e7c96095bb030faa9
BLAKE2b-256 a578d5ee4b476a0ec09be6dba96aa015b0f297b495431c2d24470b9b75522da6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page