API do PyHash

Veja também o membro PyTypeObject.tp_hash e Hashing de tipos numéricos.

type Py_hash_t

Tipo de valor do hash: inteiro com sinal.

Adicionado na versão 3.2.

type Py_uhash_t

Tipo de valor do hash: inteiro sem sinal.

Adicionado na versão 3.2.

Py_HASH_ALGORITHM

Um valor numérico que indica o algoritmo de hash para str, bytes e memoryview.

O nome do algoritmo é exposto por sys.hash_info.algorithm.

Adicionado na versão 3.4.

Py_HASH_FNV
Py_HASH_SIPHASH24
Py_HASH_SIPHASH13

Valores numéricos a serem comparados com Py_HASH_ALGORITHM para determinar qual algoritmo é usado para o hashing. O algoritmo de hash pode ser configurado através da opção --with-hash-algorithm do comando configure.

Adicionado na versão 3.4: Adiciona Py_HASH_FNV e Py_HASH_SIPHASH24.

Adicionado na versão 3.11: Adiciona Py_HASH_SIPHASH13.

Py_HASH_CUTOFF

Buffers de comprimento no intervalo [1, Py_HASH_CUTOFF) são hasheados usando DJBX33A em vez do algoritmo descrito por Py_HASH_ALGORITHM.

  • Uma Py_HASH_CUTOFF de 0 desabilita a otimização.

  • Py_HASH_CUTOFF deve ser não-negativo ou menor ou igual a 7.

Plataformas de 32 bits devem usar um limite de corte menor do que plataformas de 64 bits, pois é mais fácil criar strings que colidam. Um limite de corte de 7 em plataformas de 64 bits e 5 em plataformas de 32 bits deve fornecer uma margem de segurança adequada.

Isso corresponde à constante sys.hash_info.cutoff.

Adicionado na versão 3.4.

PyHASH_MODULUS

O primo de Mersenne P = 2**n -1, usado para esquema de hash numérico.

Isso corresponde à constante sys.hash_info.modulus.

Adicionado na versão 3.13.

PyHASH_BITS

O expoente n de P em PyHASH_MODULUS.

Adicionado na versão 3.13.

PyHASH_MULTIPLIER

Multiplicador de primo usado em strings e vários outros hashes.

Adicionado na versão 3.13.

PyHASH_INF

O valor de hash retornado para um infinito positivo.

Isso corresponde à constante sys.hash_info.inf.

Adicionado na versão 3.13.

PyHASH_IMAG

O multiplicador usado para a parte imaginária de um número complexo.

Isso corresponde à constante sys.hash_info.imag.

Adicionado na versão 3.13.

type PyHash_FuncDef

Definição de função de hash usada por PyHash_GetFuncDef().

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

Função de hash.

const char *name

Nome de função hash (string codificada em UTF-8).

Isso corresponde à constante sys.hash_info.algorithm.

const int hash_bits

Tamanho interno do valor do hash em bits.

Isso corresponde à constante sys.hash_info.hash_bits.

const int seed_bits

Tamanho da entrada de seed em bits.

Isso corresponde à constante sys.hash_info.seed_bits.

Adicionado na versão 3.4.

PyHash_FuncDef *PyHash_GetFuncDef(void)

Obtém a definição de função de hash.

Ver também

PEP 456 “Algoritmo de hash seguro e intercambiável”.

Adicionado na versão 3.4.

Py_hash_t Py_HashPointer(const void *ptr)

Hash de um valor de ponteiro: processa o valor do ponteiro como um inteiro (converte-o para uintptr_t internamente). O ponteiro não é desreferenciado.

A função não pode falhar: ela não pode retornar -1.

Adicionado na versão 3.13.

Py_hash_t Py_HashBuffer(const void *ptr, Py_ssize_t len)

Calcula e retorna o valor de hash de um buffer de len bytes, começando no endereço ptr. O hash tem garantia de corresponder ao de bytes, memoryview e outros objetos embutidos que implementam o protocolo de buffer.

Usa esta função para implementar hash para objetos imutáveis cuja função tp_richcompare compara ao buffer de outro objeto.

len deve ser maior que ou igual a 0.

Esta função sempre tem sucesso.

Adicionado na versão 3.14.

Py_hash_t PyObject_GenericHash(PyObject *obj)

Função de hash genérica que deve ser colocada no slot tp_hash de um objeto de tipo. Seu resultado depende apenas da identidade do objeto.

No CPython, é equivalente a Py_HashPointer().

Adicionado na versão 3.13.