Skip to content

Commit 3b1fff4

Browse files
authored
Add funcs for non-immutables w/o copying (#75)
1 parent bff23fa commit 3b1fff4

File tree

8 files changed

+818
-15
lines changed

8 files changed

+818
-15
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,6 @@ ENV/
103103

104104
# macOS
105105
.DS_Store
106+
107+
# vscode
108+
.vscode/

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ This project has adhered to
1010

1111
### Added
1212

13+
- Add `digest` functions that accept a non-immutable buffer as input
14+
and process it without internal copying.
1315
- Slightly improve the performance of the `hash_bytes` function.
1416
- Add support for Python 3.13.
1517
- Add Read the Docs documentation (<https://github.com/hajimes/mmh3/issues/54>).
@@ -21,6 +23,10 @@ This project has adhered to
2123
- Change the format of CHANGELOG.md to conform to the Keep a Changelog
2224
standard.
2325

26+
### Fixed
27+
28+
- Fix a reference leak in the `hash_from_buffer()` function.
29+
2430
## [4.1.0] - 2024-01-09
2531

2632
### Added

README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,23 @@ complete changelog.
135135

136136
#### Added
137137

138+
- Add `digest` functions that accept a non-immutable buffer as input
139+
and process it without internal copying.
138140
- Slightly improve the performance of the `hash_bytes` function.
139141
- Add support for Python 3.13.
140142
- Add Read the Docs documentation (<https://github.com/hajimes/mmh3/issues/54>).
141143
- (planned: Document benchmark results
142144
(<https://github.com/hajimes/mmh3/issues/53>)).
143145

144-
#### Changed
146+
### Changed
145147

146148
- Change the format of CHANGELOG.md to conform to the Keep a Changelog
147149
standard.
148150

151+
### Fixed
152+
153+
- Fix a reference leak in the `hash_from_buffer()` function.
154+
149155
### [4.1.0] - 2024-01-09
150156

151157
#### Added

benchmark/benchmark.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
MASK: Final[int] = 0xFFFFFFFFFFFFFFFF
1717

1818
HASHES = {
19-
"mmh3_32": mmh3.hash,
20-
"mmh3_128": mmh3.hash_bytes,
19+
"mmh3_32": mmh3.mmh3_32_digest,
20+
"mmh3_128": mmh3.mmh3_x64_128_digest,
2121
"xxh_32": xxhash.xxh32_digest,
2222
"xxh_64": xxhash.xxh64_digest,
2323
"xxh3_64": xxhash.xxh3_64_digest,

docs/api.rst

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
API Reference
22
================
33

4+
.. caution::
5+
This reference contains functions that are not yet released in the stable version.
6+
47
.. automodule:: mmh3
58
:members:
69
:undoc-members:

src/mmh3/__init__.pyi

+19-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,26 @@ StrHashable = Union[str, Hashable]
1111

1212
def hash(key: StrHashable, seed: int = 0, signed: bool = True) -> int: ...
1313
def hash_from_buffer(key: StrHashable, seed: int = 0, signed: bool = True) -> int: ...
14-
def hash64(key: StrHashable, seed: int = 0, x64arch:bool = True, signed: bool = True) -> tuple[int, int]: ...
15-
def hash128(key: StrHashable, seed: int = 0, x64arch:bool = True, signed: bool = False) -> int: ...
14+
def hash64(
15+
key: StrHashable, seed: int = 0, x64arch: bool = True, signed: bool = True
16+
) -> tuple[int, int]: ...
17+
def hash128(
18+
key: StrHashable, seed: int = 0, x64arch: bool = True, signed: bool = False
19+
) -> int: ...
1620
def hash_bytes(key: StrHashable, seed: int = 0, x64arch: bool = True) -> bytes: ...
21+
def mmh3_32_digest(key: StrHashable, seed: int = 0) -> bytes: ...
22+
def mmh3_32_sintdigest(key: StrHashable, seed: int = 0) -> int: ...
23+
def mmh3_32_uintdigest(key: StrHashable, seed: int = 0) -> int: ...
24+
def mmh3_x64_128_digest(key: StrHashable, seed: int = 0) -> bytes: ...
25+
def mmh3_x64_128_sintdigest(key: StrHashable, seed: int = 0) -> int: ...
26+
def mmh3_x64_128_uintdigest(key: StrHashable, seed: int = 0) -> int: ...
27+
def mmh3_x64_128_stupledigest(key: StrHashable, seed: int = 0) -> tuple[int, int]: ...
28+
def mmh3_x64_128_utupledigest(key: StrHashable, seed: int = 0) -> tuple[int, int]: ...
29+
def mmh3_x86_128_digest(key: StrHashable, seed: int = 0) -> bytes: ...
30+
def mmh3_x86_128_sintdigest(key: StrHashable, seed: int = 0) -> int: ...
31+
def mmh3_x86_128_uintdigest(key: StrHashable, seed: int = 0) -> int: ...
32+
def mmh3_x86_128_stupledigest(key: StrHashable, seed: int = 0) -> tuple[int, int]: ...
33+
def mmh3_x86_128_utupledigest(key: StrHashable, seed: int = 0) -> tuple[int, int]: ...
1734

1835
class Hasher:
1936
def __init__(self, seed: int = 0) -> None: ...

0 commit comments

Comments
 (0)