Skip to main content

Universally Unique Lexicographically Sortable Identifier

Project description

https://img.shields.io/pypi/v/python-ulid.svg?style=flat-square https://img.shields.io/travis/mdomke/python-ulid/master.svg?style=flat-square https://img.shields.io/pypi/l/python-ulid.svg?style=flat-square https://img.shields.io/codecov/c/github/mdomke/python-ulid.svg?style=flat-square

What is this?

This is a port of the original JavaScript ULID implementation to Python.

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.

Basic Usage

>>> from ulid import ULID
>>> ulid = ULID.new()
>>> ulid.str
'01BTGNYV6HRNK8K8VKZASZCFPE'
>>> ulid.timestamp
1505945939.153
>>> ulid.datetime
datetime.datetime(2017, 9, 20, 22, 18, 59, 153000)

Installation

$ pip install python-ulid

Other implementations

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

python-ulid-0.2.0.tar.gz (9.0 kB view hashes)

Uploaded Source

Built Distribution

python_ulid-0.2.0-py2-none-any.whl (7.6 kB view hashes)

Uploaded Python 2

Supported by

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