GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • String conversion and formatting
  • Reflection
  • Report a bug
  • Show source
  • index
  • modules
  • Python
  • 3.13.18 Documentation
  • Python/C API Reference Manual
  • Utilities
  • PyHash API

This view

  • Original page
  • New address

GeezerVison is showing docs.python.org — PyHash API

PyHash API¶

See also the PyTypeObject.tp_hash member and Hashing of numeric types.

type Py_hash_t¶

Hash value type: signed integer.

Added in version 3.2.

type Py_uhash_t¶

Hash value type: unsigned integer.

Added in version 3.2.

Py_HASH_ALGORITHM¶

A numerical value indicating the algorithm for hashing of str, bytes, and memoryview.

The algorithm name is exposed by sys.hash_info.algorithm.

Added in version 3.4.

Py_HASH_FNV¶
Py_HASH_SIPHASH24¶
Py_HASH_SIPHASH13¶

Numerical values to compare to Py_HASH_ALGORITHM to determine which algorithm is used for hashing. The hash algorithm can be configured via the configure --with-hash-algorithm option.

Added in version 3.4: Add Py_HASH_FNV and Py_HASH_SIPHASH24.

Added in version 3.11: Add Py_HASH_SIPHASH13.

Py_HASH_CUTOFF¶

Buffers of length in range [1, Py_HASH_CUTOFF) are hashed using DJBX33A instead of the algorithm described by Py_HASH_ALGORITHM.

  • A Py_HASH_CUTOFF of 0 disables the optimization.

  • Py_HASH_CUTOFF must be non-negative and less or equal than 7.

32-bit platforms should use a cutoff smaller than 64-bit platforms because it is easier to create colliding strings. A cutoff of 7 on 64-bit platforms and 5 on 32-bit platforms should provide a decent safety margin.

This corresponds to the sys.hash_info.cutoff constant.

Added in version 3.4.

PyHASH_MODULUS¶

The Mersenne prime P = 2**n -1, used for numeric hash scheme.

This corresponds to the sys.hash_info.modulus constant.

Added in version 3.13.

PyHASH_BITS¶

The exponent n of P in PyHASH_MODULUS.

Added in version 3.13.

PyHASH_MULTIPLIER¶

Prime multiplier used in string and various other hashes.

Added in version 3.13.

PyHASH_INF¶

The hash value returned for a positive infinity.

This corresponds to the sys.hash_info.inf constant.

Added in version 3.13.

PyHASH_IMAG¶

The multiplier used for the imaginary part of a complex number.

This corresponds to the sys.hash_info.imag constant.

Added in version 3.13.

type PyHash_FuncDef¶

Hash function definition used by PyHash_GetFuncDef().

Py_hash_t (*const hash)(const void*, Py_ssize_t)¶

Hash function.

const char *name¶

Hash function name (UTF-8 encoded string).

This corresponds to the sys.hash_info.algorithm constant.

const int hash_bits¶

Internal size of the hash value in bits.

This corresponds to the sys.hash_info.hash_bits constant.

const int seed_bits¶

Size of seed input in bits.

This corresponds to the sys.hash_info.seed_bits constant.

Added in version 3.4.

PyHash_FuncDef *PyHash_GetFuncDef(void)¶

Get the hash function definition.

See also

PEP 456 “Secure and interchangeable hash algorithm”.

Added in version 3.4.

Py_hash_t Py_HashPointer(const void *ptr)¶

Hash a pointer value: process the pointer value as an integer (cast it to uintptr_t internally). The pointer is not dereferenced.

The function cannot fail: it cannot return -1.

Added in version 3.13.

Py_hash_t PyObject_GenericHash(PyObject *obj)¶

Generic hashing function that is meant to be put into a type object’s tp_hash slot. Its result only depends on the object’s identity.

CPython implementation detail: In CPython, it is equivalent to Py_HashPointer().

Added in version 3.13.

© Copyright 2001-2026, Python Software Foundation.
This page is licensed under the Python Software Foundation License Version 2.
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
See History and License for more information.

The Python Software Foundation is a non-profit corporation. Please donate.

Last updated on Oct 26, 2026 (13:10 UTC). Found a bug?
Created using Sphinx 8.2.3.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.