UUIDv7 for Python
A simple module for generating UUIDv7s with creation times, and for extracting the time from a UUID.
ℹ️ At the time of writing, Python had no UUIDv7 support. It does now, but still doesn't allow providing or extracting timestamps, which we do. Beware that there is also an abandoned package named uuid7 that uses a draft RFC and produces all wrong timestamps.
- Standards-compliant: Follows the final UUIDv7 specification.
- Pythonic: Uses stdlib
datetimeandUUIDfacilities rather than (milli)seconds, custom UUID types, or bare strings, as used by alternatives such asuuid7-rs. - Lightweight: A tiny pure-Python module with no dependencies, fast enough to process about a million UUIDv7s per second per CPU core.
Installation
pip install uuid7-standard
Or, add to your project using uv:
uv add uuid7-standard
Usage
import uuid7
from datetime import datetime, UTC
from uuid import UUID
# Create a random UUIDv7 with the current timestamp, same as uuid.uuid7()
u = uuid7.create()
print(str(u), u.bytes)
# Create one with a specific timestamp
when = datetime(1970, 1, 1, tzinfo=UTC)
u = uuid7.create(when)
# Extract the timestamp
u = UUID('00000000-0000-7dac-b3e3-ecb571bb3e2f')
timestamp = uuid7.time(u) # 1970-01-01 UTC
uuid7.create(when: datetime?) -> UUID
Create a UUIDv7 with timestamp-based ordering.
The current time is used unless when is passed as a datetime (local time or timezone-aware). This is useful for creating multiple UUIDv7s with precisely the same timestamp.
uuid7.time(u: UUID|str) -> datetime
Extract the timestamp from a UUIDv7. Raises ValueError if the UUID is not a UUIDv7.
uuid7.UUID: re-export of stdlib UUID
Useful when you want to indicate explicitly that a value is expected to be UUIDv7 while avoiding a separate import uuid.
Note that uuid7.UUID is uuid.UUID and does not enforce the UUIDv7 format. It does, however, help humans and coding agents avoid accidentally using uuid4() when working with such values.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uuid7_standard-1.1.2.tar.gz.
File metadata
- Download URL: uuid7_standard-1.1.2.tar.gz
- Upload date:
- Size: 2.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14cf739a37a1e6e85cff4c7460bd3f6bf4c48c1e44ce19a0857b08e172352c26
|
|
| MD5 |
f7d52a36e8b69146ccff115e8ce6ac50
|
|
| BLAKE2b-256 |
59d4434537cb478e2b8e5aa47c93ca6a8cb744fa05331fa1c3979e5d08666743
|
File details
Details for the file uuid7_standard-1.1.2-py3-none-any.whl.
File metadata
- Download URL: uuid7_standard-1.1.2-py3-none-any.whl
- Upload date:
- Size: 2.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa1520e9d2fb51cba45073e20d7ca56812c46e0f38848eaa2f6cd530368522d3
|
|
| MD5 |
846e2a6fea741c365fe9670aa5c4937f
|
|
| BLAKE2b-256 |
e1414495f1228e298d656340c39d3aa4ceac54edb923d728210e79f4c329fa5c
|