mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-07 19:18:34 +03:00
* Update pyproject.toml * add pre-commit * Create .pre-commit-config.yaml * Comment out ruff * Update .pre-commit-config.yaml * General formatting * Create format-and-fail.yml * Update ci.yml * Add pre-commit to dev dependencies * Update pyproject.toml
11 lines
428 B
Python
11 lines
428 B
Python
|
|
def fnv1a_hash_mod(s: str, modulo:int) -> int:
|
|
# receives a string and returns a number in [0:modulo-1], ensures an even distribution over the modulo range
|
|
hash = 0x811c9dc5 # FNV offset basis
|
|
fnv_prime = 0x01000193 # FNV prime
|
|
for char in s:
|
|
hash ^= ord(char)
|
|
hash *= fnv_prime
|
|
hash &= 0xFFFFFFFF # Keep it 32-bit
|
|
return (hash if hash < 0x80000000 else hash - 0x100000000) % modulo
|