Skip to main content

UUID7 Extension for Python

Project description

UUID Extension for Python

A Python library implementing UUID version 7 as specified in the RFC, providing time-ordered UUIDs for modern applications.

Features

  • Full implementation of UUID version 7
  • Time-ordered UUIDs for better database performance
  • Compatible with standard Python UUID objects
  • Timestamp extraction capabilities
  • Optional counter for monotonicity within milliseconds

Installation

pip install uuid-extension

Usage

Basic Usage

from uuid_extension import uuid7

# Generate a new UUID7
uuid = uuid7()
print(uuid)  # e.g., 018c1585-5e7c-7601-b322-5bf9f7478708

# Access the underlying UUID object
uuid_obj = uuid.uuid7

With Timestamp

from datetime import datetime
from uuid_extension import uuid7

# Generate UUID7 with a specific timestamp
custom_time = datetime.now()
uuid = uuid7(timestamp=custom_time)

# Or with Unix timestamp
uuid = uuid7(timestamp=1690000000.123)

With Counter

from uuid_extension import uuid7

# Use a counter for guaranteeing monotonicity within the same millisecond
counter = 1
id1 = uuid7(counter=counter)
counter += 1
id2 = uuid7(counter=counter)

Time Extraction

from uuid_extension import uuid7

uuid = uuid7()

# Extract timestamp as float (Unix timestamp in seconds)
ts = uuid.to_timestamp()

# Extract as datetime object (UTC timezone by default)
dt = uuid.to_datetime()

# Extract as datetime with a specific timezone
import pytz
dt_est = uuid.to_datetime(tz=pytz.timezone('US/Eastern'))

Comparison Operations

UUID7 objects support standard comparison operations:

id1 = uuid7()
id2 = uuid7()

print(id1 == id2)  # False
print(id1 < id2)   # True (usually, as they're time-ordered)
print(id1 <= id2)  # True

Technical Details

UUID version 7 structure:

  • 48 bits of Unix timestamp in milliseconds
  • 4 bits for version (set to 7)
  • 2 bits for variant (set to 0b10)
  • 74 bits of random data for uniqueness

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uuid_extension-0.2.0.tar.gz (54.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uuid_extension-0.2.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file uuid_extension-0.2.0.tar.gz.

File metadata

  • Download URL: uuid_extension-0.2.0.tar.gz
  • Upload date:
  • Size: 54.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.2

File hashes

Hashes for uuid_extension-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e68907184276f47a4b169dc9891477693371b5f3756aebdaffb7cf83b9a6077e
MD5 628d083aacac04df1eef54cc04f807d3
BLAKE2b-256 054e55636e6655feae1e843e5db0255edb42497e1fb865529860a916e82286d9

See more details on using hashes here.

File details

Details for the file uuid_extension-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for uuid_extension-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8dac0d934afd07a16ae8537dd873bc833f1fcc31530295029d86c9cea49bf6a3
MD5 2155b34e676761ba755ada281faa94ba
BLAKE2b-256 4382006fbeb46fc6856ea813c4a09264c2fd60dc86e6c19b218b31b17766cba9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page