PyHash API¶
See also thePyTypeObject.tp_hash member andHashing of numeric types.
- typePy_hash_t¶
Hash value type: signed integer.
Added in version 3.2.
- typePy_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, andmemoryview.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_ALGORITHMto determinewhich algorithm is used for hashing. The hash algorithm can be configuredvia the configure--with-hash-algorithmoption.Added in version 3.4:Add
Py_HASH_FNVandPy_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 DJBX33Ainstead of the algorithm described byPy_HASH_ALGORITHM.A
Py_HASH_CUTOFFof 0 disables the optimization.Py_HASH_CUTOFFmust be non-negative and less or equal than 7.
32-bit platforms should use a cutoff smaller than 64-bit platforms becauseit is easier to create colliding strings. A cutoff of 7 on 64-bit platformsand 5 on 32-bit platforms should provide a decent safety margin.
This corresponds to the
sys.hash_info.cutoffconstant.Added in version 3.4.
- PyHASH_MODULUS¶
TheMersenne prime
P=2**n-1,used for numeric hash scheme.This corresponds to the
sys.hash_info.modulusconstant.Added in version 3.13.
- PyHASH_BITS¶
The exponent
nofPinPyHASH_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.infconstant.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.imagconstant.Added in version 3.13.
- typePyHash_FuncDef¶
Hash function definition used by
PyHash_GetFuncDef().- Py_hash_t(*consthash)(constvoid*,Py_ssize_t)¶
Hash function.
- constchar*name¶
Hash function name (UTF-8 encoded string).
This corresponds to the
sys.hash_info.algorithmconstant.
- constinthash_bits¶
Internal size of the hash value in bits.
This corresponds to the
sys.hash_info.hash_bitsconstant.
- constintseed_bits¶
Size of seed input in bits.
This corresponds to the
sys.hash_info.seed_bitsconstant.
Added in version 3.4.
- Py_hash_t(*consthash)(constvoid*,Py_ssize_t)¶
- 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_tPy_HashPointer(constvoid*ptr)¶
Hash a pointer value: process the pointer value as an integer (cast it to
uintptr_tinternally). The pointer is not dereferenced.The function cannot fail: it cannot return
-1.Added in version 3.13.
- Py_hash_tPy_HashBuffer(constvoid*ptr,Py_ssize_tlen)¶
Compute and return the hash value of a buffer oflen bytesstarting at addressptr. The hash is guaranteed to match that of
bytes,memoryview, and other built-in objectsthat implement thebuffer protocol.Use this function to implement hashing for immutable objects whose
tp_richcomparefunction compares to anotherobject’s buffer.len must be greater than or equal to
0.This function always succeeds.
Added in version 3.14.
- Py_hash_tPyObject_GenericHash(PyObject*obj)¶
Generic hashing function that is meant to be put into a typeobject’s
tp_hashslot.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.