Highlights
1.0 realigns uuid6, uuid7, and uuid8 with the signatures Python 3.14 added to the
standard library, so code written against uuid works unchanged here. This is the
intentional break the 0.x line was frozen for — the legacy signatures are removed.
Breaking changes
| 0.x | 1.0 | |
|---|---|---|
uuid6 |
uuid6(node=None, timestamp=None, nanos=None) |
uuid6(node=None, clock_seq=None) |
uuid7 |
uuid7(timestamp=None, nanos=None) |
uuid7(*, nanoseconds=None) |
uuid8 |
uuid8(bytes) |
uuid8(a=None, b=None, c=None) |
uuid1, uuid3, uuid4, uuid5 and the UUID type are unchanged. (#181, #183, #184)
Migration
# uuid7 — 1.0 takes nanoseconds directly, no splitting
uuid_utils.uuid7(seconds, nanos) # 0.x
uuid_utils.uuid7(nanoseconds=seconds * 1_000_000_000 + nanos) # 1.0
# uuid8 — three integer blocks of 48 | 12 | 62 bits
uuid_utils.uuid8(b"1234567812345678") # 0.x
n = int.from_bytes(b"1234567812345678", "big") # 1.0
uuid_utils.uuid8(n >> 80, (n >> 64) & 0xFFF, n & 0x3FFF_FFFF_FFFF_FFFF)
# uuid6 — drop the timestamp
uuid_utils.uuid6(node, timestamp, nanos) # 0.x
uuid_utils.uuid6(node, clock_seq) # 1.0Staying on 0.x
If you pin uuid-utils<1.0 nothing here reaches you. The 0.x line stays maintained for
critical bug and security fixes — most recently
0.17.1.
Also in this release
- Keyword-only
uuid7(nanoseconds=...)extension (#194) UUID(..., version=N)now sets the RFC 4122 variant, matching the stdlib (#218)- Emscripten wheels compatible with Python 3.13 and 3.14 (#196)
- Versioned documentation (#185) and an API reference aligned with the stdlib docstrings (#188)
- pyo3 0.29.2, uuid 1.26.0 (#193, #209, #217)
Full Changelog: 0.16.2...1.0.0