Coverage Report

Created: 2026-03-23 06:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cpython/Include/cpython/pyhash.h
Line
Count
Source
1
#ifndef Py_CPYTHON_HASH_H
2
#  error "this header file must not be included directly"
3
#endif
4
5
/* Prime multiplier used in string and various other hashes. */
6
1.88M
#define PyHASH_MULTIPLIER 1000003UL  /* 0xf4243 */
7
8
/* Parameters used for the numeric hash implementation.  See notes for
9
   _Py_HashDouble in Python/pyhash.c.  Numeric hashes are based on
10
   reduction modulo the prime 2**PyHASH_BITS - 1. */
11
12
#if SIZEOF_VOID_P >= 8
13
28.4M
#  define PyHASH_BITS 61
14
#else
15
#  define PyHASH_BITS 31
16
#endif
17
18
15.3M
#define PyHASH_MODULUS (((size_t)1 << PyHASH_BITS) - 1)
19
0
#define PyHASH_INF 314159
20
3
#define PyHASH_IMAG PyHASH_MULTIPLIER
21
22
/* Aliases kept for backward compatibility with Python 3.12 */
23
#define _PyHASH_MULTIPLIER PyHASH_MULTIPLIER
24
#define _PyHASH_BITS PyHASH_BITS
25
#define _PyHASH_MODULUS PyHASH_MODULUS
26
#define _PyHASH_INF PyHASH_INF
27
#define _PyHASH_IMAG PyHASH_IMAG
28
29
/* Helpers for hash functions */
30
PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);
31
32
33
/* hash function definition */
34
typedef struct {
35
    Py_hash_t (*const hash)(const void *, Py_ssize_t);
36
    const char *name;
37
    const int hash_bits;
38
    const int seed_bits;
39
} PyHash_FuncDef;
40
41
PyAPI_FUNC(PyHash_FuncDef*) PyHash_GetFuncDef(void);
42
43
PyAPI_FUNC(Py_hash_t) Py_HashPointer(const void *ptr);
44
45
// Deprecated alias kept for backward compatibility
46
Py_DEPRECATED(3.14) static inline Py_hash_t
47
_Py_HashPointer(const void *ptr)
48
0
{
49
0
    return Py_HashPointer(ptr);
50
0
}
Unexecuted instantiation: bytesobject.c:_Py_HashPointer
Unexecuted instantiation: call.c:_Py_HashPointer
Unexecuted instantiation: exceptions.c:_Py_HashPointer
Unexecuted instantiation: genericaliasobject.c:_Py_HashPointer
Unexecuted instantiation: floatobject.c:_Py_HashPointer
Unexecuted instantiation: listobject.c:_Py_HashPointer
Unexecuted instantiation: longobject.c:_Py_HashPointer
Unexecuted instantiation: dictobject.c:_Py_HashPointer
Unexecuted instantiation: memoryobject.c:_Py_HashPointer
Unexecuted instantiation: moduleobject.c:_Py_HashPointer
Unexecuted instantiation: object.c:_Py_HashPointer
Unexecuted instantiation: obmalloc.c:_Py_HashPointer
Unexecuted instantiation: picklebufobject.c:_Py_HashPointer
Unexecuted instantiation: rangeobject.c:_Py_HashPointer
Unexecuted instantiation: setobject.c:_Py_HashPointer
Unexecuted instantiation: sliceobject.c:_Py_HashPointer
Unexecuted instantiation: structseq.c:_Py_HashPointer
Unexecuted instantiation: templateobject.c:_Py_HashPointer
Unexecuted instantiation: tupleobject.c:_Py_HashPointer
Unexecuted instantiation: typeobject.c:_Py_HashPointer
Unexecuted instantiation: typevarobject.c:_Py_HashPointer
Unexecuted instantiation: unicode_format.c:_Py_HashPointer
Unexecuted instantiation: unicode_formatter.c:_Py_HashPointer
Unexecuted instantiation: unicode_writer.c:_Py_HashPointer
Unexecuted instantiation: unicodectype.c:_Py_HashPointer
Unexecuted instantiation: unicodeobject.c:_Py_HashPointer
Unexecuted instantiation: unionobject.c:_Py_HashPointer
Unexecuted instantiation: weakrefobject.c:_Py_HashPointer
Unexecuted instantiation: _warnings.c:_Py_HashPointer
Unexecuted instantiation: bltinmodule.c:_Py_HashPointer
Unexecuted instantiation: ceval.c:_Py_HashPointer
Unexecuted instantiation: codecs.c:_Py_HashPointer
Unexecuted instantiation: codegen.c:_Py_HashPointer
Unexecuted instantiation: compile.c:_Py_HashPointer
Unexecuted instantiation: context.c:_Py_HashPointer
Unexecuted instantiation: errors.c:_Py_HashPointer
Unexecuted instantiation: flowgraph.c:_Py_HashPointer
Unexecuted instantiation: frame.c:_Py_HashPointer
Unexecuted instantiation: future.c:_Py_HashPointer
Unexecuted instantiation: gc.c:_Py_HashPointer
Unexecuted instantiation: gc_gil.c:_Py_HashPointer
Unexecuted instantiation: getargs.c:_Py_HashPointer
Unexecuted instantiation: ceval_gil.c:_Py_HashPointer
Unexecuted instantiation: hamt.c:_Py_HashPointer
Unexecuted instantiation: hashtable.c:_Py_HashPointer
Unexecuted instantiation: import.c:_Py_HashPointer
Unexecuted instantiation: importdl.c:_Py_HashPointer
Unexecuted instantiation: initconfig.c:_Py_HashPointer
Unexecuted instantiation: instrumentation.c:_Py_HashPointer
Unexecuted instantiation: instruction_sequence.c:_Py_HashPointer
Unexecuted instantiation: intrinsics.c:_Py_HashPointer
Unexecuted instantiation: legacy_tracing.c:_Py_HashPointer
Unexecuted instantiation: lock.c:_Py_HashPointer
Unexecuted instantiation: marshal.c:_Py_HashPointer
Unexecuted instantiation: modsupport.c:_Py_HashPointer
Unexecuted instantiation: mysnprintf.c:_Py_HashPointer
Unexecuted instantiation: parking_lot.c:_Py_HashPointer
Unexecuted instantiation: preconfig.c:_Py_HashPointer
Unexecuted instantiation: pyarena.c:_Py_HashPointer
Unexecuted instantiation: pyctype.c:_Py_HashPointer
Unexecuted instantiation: pyhash.c:_Py_HashPointer
Unexecuted instantiation: pylifecycle.c:_Py_HashPointer
Unexecuted instantiation: pymath.c:_Py_HashPointer
Unexecuted instantiation: pystate.c:_Py_HashPointer
Unexecuted instantiation: pythonrun.c:_Py_HashPointer
Unexecuted instantiation: pytime.c:_Py_HashPointer
Unexecuted instantiation: qsbr.c:_Py_HashPointer
Unexecuted instantiation: bootstrap_hash.c:_Py_HashPointer
Unexecuted instantiation: specialize.c:_Py_HashPointer
Unexecuted instantiation: structmember.c:_Py_HashPointer
Unexecuted instantiation: symtable.c:_Py_HashPointer
Unexecuted instantiation: sysmodule.c:_Py_HashPointer
Unexecuted instantiation: thread.c:_Py_HashPointer
Unexecuted instantiation: traceback.c:_Py_HashPointer
Unexecuted instantiation: tracemalloc.c:_Py_HashPointer
Unexecuted instantiation: getopt.c:_Py_HashPointer
Unexecuted instantiation: pystrcmp.c:_Py_HashPointer
Unexecuted instantiation: pystrtod.c:_Py_HashPointer
Unexecuted instantiation: pystrhex.c:_Py_HashPointer
Unexecuted instantiation: dtoa.c:_Py_HashPointer
Unexecuted instantiation: fileutils.c:_Py_HashPointer
Unexecuted instantiation: suggestions.c:_Py_HashPointer
Unexecuted instantiation: perf_trampoline.c:_Py_HashPointer
Unexecuted instantiation: perf_jit_trampoline.c:_Py_HashPointer
Unexecuted instantiation: remote_debugging.c:_Py_HashPointer
Unexecuted instantiation: dynload_shlib.c:_Py_HashPointer
Unexecuted instantiation: config.c:_Py_HashPointer
Unexecuted instantiation: gcmodule.c:_Py_HashPointer
Unexecuted instantiation: _asynciomodule.c:_Py_HashPointer
Unexecuted instantiation: atexitmodule.c:_Py_HashPointer
Unexecuted instantiation: faulthandler.c:_Py_HashPointer
Unexecuted instantiation: posixmodule.c:_Py_HashPointer
Unexecuted instantiation: signalmodule.c:_Py_HashPointer
Unexecuted instantiation: _tracemalloc.c:_Py_HashPointer
Unexecuted instantiation: _suggestions.c:_Py_HashPointer
Unexecuted instantiation: _datetimemodule.c:_Py_HashPointer
Unexecuted instantiation: _codecsmodule.c:_Py_HashPointer
Unexecuted instantiation: _collectionsmodule.c:_Py_HashPointer
Unexecuted instantiation: _iomodule.c:_Py_HashPointer
Unexecuted instantiation: iobase.c:_Py_HashPointer
Unexecuted instantiation: fileio.c:_Py_HashPointer
Unexecuted instantiation: bytesio.c:_Py_HashPointer
Unexecuted instantiation: bufferedio.c:_Py_HashPointer
Unexecuted instantiation: textio.c:_Py_HashPointer
Unexecuted instantiation: stringio.c:_Py_HashPointer
Unexecuted instantiation: itertoolsmodule.c:_Py_HashPointer
Unexecuted instantiation: sre.c:_Py_HashPointer
Unexecuted instantiation: _sysconfig.c:_Py_HashPointer
Unexecuted instantiation: _threadmodule.c:_Py_HashPointer
Unexecuted instantiation: timemodule.c:_Py_HashPointer
Unexecuted instantiation: _typesmodule.c:_Py_HashPointer
Unexecuted instantiation: _typingmodule.c:_Py_HashPointer
Unexecuted instantiation: _weakref.c:_Py_HashPointer
Unexecuted instantiation: _abc.c:_Py_HashPointer
Unexecuted instantiation: _functoolsmodule.c:_Py_HashPointer
Unexecuted instantiation: _localemodule.c:_Py_HashPointer
Unexecuted instantiation: _opcode.c:_Py_HashPointer
Unexecuted instantiation: _operator.c:_Py_HashPointer
Unexecuted instantiation: symtablemodule.c:_Py_HashPointer
Unexecuted instantiation: pwdmodule.c:_Py_HashPointer
Unexecuted instantiation: getpath.c:_Py_HashPointer
Unexecuted instantiation: frozen.c:_Py_HashPointer
Unexecuted instantiation: getbuildinfo.c:_Py_HashPointer
Unexecuted instantiation: peg_api.c:_Py_HashPointer
Unexecuted instantiation: file_tokenizer.c:_Py_HashPointer
Unexecuted instantiation: helpers.c:_Py_HashPointer
Unexecuted instantiation: myreadline.c:_Py_HashPointer
Unexecuted instantiation: abstract.c:_Py_HashPointer
Unexecuted instantiation: boolobject.c:_Py_HashPointer
Unexecuted instantiation: bytes_methods.c:_Py_HashPointer
Unexecuted instantiation: bytearrayobject.c:_Py_HashPointer
Unexecuted instantiation: capsule.c:_Py_HashPointer
Unexecuted instantiation: cellobject.c:_Py_HashPointer
Unexecuted instantiation: classobject.c:_Py_HashPointer
Unexecuted instantiation: codeobject.c:_Py_HashPointer
Unexecuted instantiation: complexobject.c:_Py_HashPointer
Unexecuted instantiation: descrobject.c:_Py_HashPointer
Unexecuted instantiation: enumobject.c:_Py_HashPointer
Unexecuted instantiation: genobject.c:_Py_HashPointer
Unexecuted instantiation: fileobject.c:_Py_HashPointer
Unexecuted instantiation: frameobject.c:_Py_HashPointer
Unexecuted instantiation: funcobject.c:_Py_HashPointer
Unexecuted instantiation: interpolationobject.c:_Py_HashPointer
Unexecuted instantiation: iterobject.c:_Py_HashPointer
Unexecuted instantiation: lazyimportobject.c:_Py_HashPointer
Unexecuted instantiation: odictobject.c:_Py_HashPointer
Unexecuted instantiation: methodobject.c:_Py_HashPointer
Unexecuted instantiation: namespaceobject.c:_Py_HashPointer
Unexecuted instantiation: _contextvars.c:_Py_HashPointer
Unexecuted instantiation: Python-ast.c:_Py_HashPointer
Unexecuted instantiation: Python-tokenize.c:_Py_HashPointer
Unexecuted instantiation: asdl.c:_Py_HashPointer
Unexecuted instantiation: assemble.c:_Py_HashPointer
Unexecuted instantiation: ast.c:_Py_HashPointer
Unexecuted instantiation: ast_preprocess.c:_Py_HashPointer
Unexecuted instantiation: ast_unparse.c:_Py_HashPointer
Unexecuted instantiation: critical_section.c:_Py_HashPointer
Unexecuted instantiation: crossinterp.c:_Py_HashPointer
Unexecuted instantiation: getcopyright.c:_Py_HashPointer
Unexecuted instantiation: getplatform.c:_Py_HashPointer
Unexecuted instantiation: getversion.c:_Py_HashPointer
Unexecuted instantiation: optimizer.c:_Py_HashPointer
Unexecuted instantiation: pathconfig.c:_Py_HashPointer
Unexecuted instantiation: pegen.c:_Py_HashPointer
Unexecuted instantiation: pegen_errors.c:_Py_HashPointer
Unexecuted instantiation: parser.c:_Py_HashPointer
Unexecuted instantiation: buffer.c:_Py_HashPointer
Unexecuted instantiation: lexer.c:_Py_HashPointer
Unexecuted instantiation: state.c:_Py_HashPointer
Unexecuted instantiation: readline_tokenizer.c:_Py_HashPointer
Unexecuted instantiation: string_tokenizer.c:_Py_HashPointer
Unexecuted instantiation: utf8_tokenizer.c:_Py_HashPointer
Unexecuted instantiation: getcompiler.c:_Py_HashPointer
Unexecuted instantiation: mystrtoul.c:_Py_HashPointer
Unexecuted instantiation: token.c:_Py_HashPointer
Unexecuted instantiation: action_helpers.c:_Py_HashPointer
Unexecuted instantiation: string_parser.c:_Py_HashPointer
51
52
PyAPI_FUNC(Py_hash_t) PyObject_GenericHash(PyObject *);
53
54
PyAPI_FUNC(Py_hash_t) Py_HashBuffer(const void *ptr, Py_ssize_t len);