Skip to content

Commit 24c0fd2

Browse files
authored
add NIL and MAX (#107)
1 parent e0010a7 commit 24c0fd2

File tree

6 files changed

+62
-33
lines changed

6 files changed

+62
-33
lines changed

python/uuid_utils/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from uuid import SafeUUID
22

33
from ._uuid_utils import (
4+
MAX,
45
NAMESPACE_DNS,
56
NAMESPACE_OID,
67
NAMESPACE_URL,
78
NAMESPACE_X500,
9+
NIL,
810
RESERVED_FUTURE,
911
RESERVED_MICROSOFT,
1012
RESERVED_NCS,
@@ -23,10 +25,12 @@
2325
)
2426

2527
__all__ = [
28+
"MAX",
2629
"NAMESPACE_DNS",
2730
"NAMESPACE_OID",
2831
"NAMESPACE_URL",
2932
"NAMESPACE_X500",
33+
"NIL",
3034
"RESERVED_FUTURE",
3135
"RESERVED_MICROSOFT",
3236
"RESERVED_NCS",

python/uuid_utils/__init__.pyi

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import builtins
22
import sys
3+
from typing import Final
34
from uuid import SafeUUID
45

56
from typing_extensions import TypeAlias
@@ -189,12 +190,16 @@ RESERVED_NCS: str
189190
RFC_4122: str
190191
RESERVED_MICROSOFT: str
191192
RESERVED_FUTURE: str
193+
NIL: Final[UUID]
194+
MAX: Final[UUID]
192195

193196
__all__ = [
197+
"MAX",
194198
"NAMESPACE_DNS",
195199
"NAMESPACE_OID",
196200
"NAMESPACE_URL",
197201
"NAMESPACE_X500",
202+
"NIL",
198203
"RESERVED_FUTURE",
199204
"RESERVED_MICROSOFT",
200205
"RESERVED_NCS",
@@ -203,6 +208,7 @@ __all__ = [
203208
"SafeUUID",
204209
"__version__",
205210
"getnode",
211+
"reseed_rng",
206212
"uuid1",
207213
"uuid3",
208214
"uuid4",

python/uuid_utils/compat/__init__.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,8 @@
1313

1414
import uuid_utils
1515

16-
__all__ = [
17-
"NAMESPACE_DNS",
18-
"NAMESPACE_OID",
19-
"NAMESPACE_URL",
20-
"NAMESPACE_X500",
21-
"RESERVED_FUTURE",
22-
"RESERVED_MICROSOFT",
23-
"RESERVED_NCS",
24-
"RFC_4122",
25-
"UUID",
26-
"getnode",
27-
"uuid1",
28-
"uuid3",
29-
"uuid4",
30-
"uuid5",
31-
"uuid6",
32-
"uuid7",
33-
"uuid8",
34-
]
16+
NIL = UUID("00000000-0000-0000-0000-000000000000")
17+
MAX = UUID("ffffffff-ffff-ffff-ffff-ffffffffffff")
3518

3619

3720
def uuid1(node=None, clock_seq=None):
@@ -75,3 +58,26 @@ def uuid7(timestamp=None, nanos=None):
7558
def uuid8(bytes):
7659
"""Generate a custom UUID comprised almost entirely of user-supplied bytes.."""
7760
return UUID(bytes=uuid_utils.uuid8(bytes).bytes)
61+
62+
63+
__all__ = [
64+
"MAX",
65+
"NAMESPACE_DNS",
66+
"NAMESPACE_OID",
67+
"NAMESPACE_URL",
68+
"NAMESPACE_X500",
69+
"NIL",
70+
"RESERVED_FUTURE",
71+
"RESERVED_MICROSOFT",
72+
"RESERVED_NCS",
73+
"RFC_4122",
74+
"UUID",
75+
"getnode",
76+
"uuid1",
77+
"uuid3",
78+
"uuid4",
79+
"uuid5",
80+
"uuid6",
81+
"uuid7",
82+
"uuid8",
83+
]

python/uuid_utils/compat/__init__.pyi

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import sys
2+
from typing import Final
23
from uuid import (
34
NAMESPACE_DNS,
45
NAMESPACE_OID,
@@ -15,20 +16,6 @@ from uuid import (
1516

1617
from typing_extensions import TypeAlias
1718

18-
__all__ = [
19-
"NAMESPACE_DNS",
20-
"NAMESPACE_OID",
21-
"NAMESPACE_URL",
22-
"NAMESPACE_X500",
23-
"RESERVED_FUTURE",
24-
"RESERVED_MICROSOFT",
25-
"RESERVED_NCS",
26-
"RFC_4122",
27-
"UUID",
28-
"SafeUUID",
29-
"getnode",
30-
]
31-
3219
# Because UUID has properties called int and bytes we need to rename these temporarily.
3320
_Int: TypeAlias = int
3421
_Bytes: TypeAlias = bytes
@@ -77,3 +64,22 @@ def uuid7(timestamp: _Int | None = None, nanos: _Int | None = None) -> UUID:
7764
def uuid8(bytes: _Bytes) -> UUID:
7865
"""Generate a custom UUID comprised almost entirely of user-supplied bytes.."""
7966
...
67+
68+
NIL: Final[UUID]
69+
MAX: Final[UUID]
70+
71+
__all__ = [
72+
"MAX",
73+
"NAMESPACE_DNS",
74+
"NAMESPACE_OID",
75+
"NAMESPACE_URL",
76+
"NAMESPACE_X500",
77+
"NIL",
78+
"RESERVED_FUTURE",
79+
"RESERVED_MICROSOFT",
80+
"RESERVED_NCS",
81+
"RFC_4122",
82+
"UUID",
83+
"SafeUUID",
84+
"getnode",
85+
]

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,5 +475,7 @@ fn _uuid_utils(m: &Bound<'_, PyModule>) -> PyResult<()> {
475475
m.add("RFC_4122", RFC_4122)?;
476476
m.add("RESERVED_MICROSOFT", RESERVED_MICROSOFT)?;
477477
m.add("RESERVED_FUTURE", RESERVED_FUTURE)?;
478+
m.add("NIL", UUID { uuid: Uuid::nil() })?;
479+
m.add("MAX", UUID { uuid: Uuid::max() })?;
478480
Ok(())
479481
}

tests/test_uuid.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,8 @@ def test_reseed_rng_with_fork() -> None:
231231

232232
# the uuids should be different because we reseeded
233233
assert next_parent_uuid != uuid_from_pipe
234+
235+
236+
def test_max_and_nil() -> None:
237+
assert uuid_utils.UUID("ffffffff-ffff-ffff-ffff-ffffffffffff") == uuid_utils.MAX
238+
assert uuid_utils.UUID("00000000-0000-0000-0000-000000000000") == uuid_utils.NIL

0 commit comments

Comments
 (0)