Universally unique lexicographically sortable identifier
Project description
A ULID is a universally unique lexicographically sortable identifier. It is
128-bit compatible with UUID
1.21e+24 unique ULIDs per millisecond
Lexicographically sortable!
Canonically encoded as a 26 character string, as opposed to the 36 character UUID
Uses Crockford’s base32 for better efficiency and readability (5 bits per character)
Case insensitive
No special characters (URL safe)
In general the structure of a ULID is as follows:
01AN4Z07BY 79KA1307SR9X4MV3
|----------| |----------------|
Timestamp Randomness
48bits 80bits
For more information have a look at the original specification.
Installation
Use pip to install the library
$ pip install python-ulid
Basic Usage
Create a new ULID object from the current timestamp
>>> from ulid import ULID
>>> ULID()
ULID(01E75HZVW36EAZKMF1W7XNMSB4)
or use one of the named constructors
>>> import time, datetime
>>> ULID.from_timestamp(time.time())
ULID(01E75J1MKKWMGG0N5MBHFMRC84)
>>> ULID.from_datetime(datetime.datetime.now())
ULID(01E75J2XBK390V2XRH44EHC10X)
There are several options for encoding the ULID object (e.g. string, hex, int), as well as to access the timestamp attribute in different formats:
>>> str(ulid)
'01BTGNYV6HRNK8K8VKZASZCFPE'
>>> ulid.hex
'015ea15f6cd1c56689a373fab3f63ece'
>>> ulid.timestamp
1505945939.153
>>> ulid.datetime
datetime.datetime(2017, 9, 20, 22, 18, 59, 153000, tzinfo=datetime.timezone.utc)
>>> ulid.to_uuid()
UUID('015ea15f-6cd1-c566-89a3-73fab3f63ece')
Command line interface
The package comes with a CLI interface that can be invoked either by the script name ulid or as python module python -m ulid. The CLI allows you to generate, inspect and convert ULIDs, e.g.
$ ulid build
01HASFKBN8SKZTSVVS03K5AMMS
$ ulid build --from-datetime=2023-09-23T10:20:30
01HB0J0F5GCKEXNSWVAD5PEAC1
$ ulid show 01HASFKBN8SKZTSVVS03K5AMMS
ULID: 01HASFKBN8SKZTSVVS03K5AMMS
Hex: 018ab2f9aea8ccffacef7900e6555299
Int: 2049395013039097460549394558635823769
Timestamp: 1695219822.248
Datetime: 2023-09-20 14:23:42.248000+00:00
The special character - allows to read values from stdin so that they can be piped. E.g.
$ echo 01HASFKBN8SKZTSVVS03K5AMMS | ulid show --uuid -
018ab2f9-aea8-4cff-acef-7900e6555299
$ date --iso-8601 | python -m ulid build --from-datetime -
01HAT9PVR02T3S13XB48S7GEHE
Other implementations
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file python_ulid-2.2.0.tar.gz
.
File metadata
- Download URL: python_ulid-2.2.0.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.25.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ec777177d396880d94be49ac7eb4ae2cd4a7474448bfdbfe911537add970aeb |
|
MD5 | e611906fd91734ad67fde1b36afbd5d5 |
|
BLAKE2b-256 | a8fcbcffc20e99ecf96652df2ad5c7dce470dfdbac750cbd92de82cbbc5efe97 |
Provenance
File details
Details for the file python_ulid-2.2.0-py3-none-any.whl
.
File metadata
- Download URL: python_ulid-2.2.0-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.25.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec2e69292c0b7c338a07df5e15b05270be6823675c103383e74d1d531945eab5 |
|
MD5 | f503e76f036ea4d071f8a30ac23bea7f |
|
BLAKE2b-256 | 25aef820dd4c18d7698f4ea411b1ff066ff135ca87a203d5301bd4d54f8355fb |