Skip to content

1.0.0

Latest

Choose a tag to compare

@aminalaee aminalaee released this 08 Sep 12:47
· 2 commits to main since this release
661b3fb

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.0

Staying 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