Skip to main content

Python implementation of TypeIDs: type-safe, K-sortable, and globally unique identifiers inspired by Stripe IDs

Project description

TypeID Python

Test Downloads Package version Supported Python versions

A Python implementation of TypeIDs using Python

TypeIDs are a modern, type-safe, globally unique identifier based on the upcoming UUIDv7 standard. They provide a ton of nice properties that make them a great choice as the primary identifiers for your data in a database, APIs, and distributed systems. Read more about TypeIDs in their spec.

This particular implementation provides an pip package that can be used by any Python project.

Installation

  • PyPI:

    pip install typeid-python
    
  • Poetry:

    poetry add typeid-python
    

Usage

Basic

  • Create TypeID Instance:

    from typeid import TypeID
    
    typeid = TypeID()
    
    print(typeid.prefix)  # ""
    print(typeid.suffix)  # "01h45ytscbebyvny4gc8cr8ma2" (encoded uuid7 instance)
    
    typeid = TypeID(prefix="user")
    
    print(typeid.prefix)  # "user"
    print(str(typeid))  # "user_01h45ytscbebyvny4gc8cr8ma2"
    
  • Create TypeID from string:

    from typeid import TypeID
    
    typeid = TypeID.from_string("user_01h45ytscbebyvny4gc8cr8ma2")
    
    print(str(typeid))  # "user_01h45ytscbebyvny4gc8cr8ma2"
    
  • Create TypeID from uuid7:

    from typeid import TypeID
    from uuid6 import uuid7
    
    uuid = uuid7()  # UUID('01890bf0-846f-7762-8605-5a3abb40e0e5')
    prefix = "user"
    
    typeid = TypeID.from_uuid(prefix=prefix, suffix=uuid)
    
    print(str(typeid))  # "user_01h45z113fexh8c1at7axm1r75"
    

CLI-tool

  • Install dependencies:

    pip install typeid-python[cli]
    
  • To generate a new TypeID, run:

    $ python3 -m typeid.cli new -p prefix
    prefix_01h2xcejqtf2nbrexx3vqjhp41
    
  • To decode an existing TypeID into a UUID run:

    $ python3 -m typeid.cli decode prefix_01h2xcejqtf2nbrexx3vqjhp41
    type: prefix
    uuid: 0188bac7-4afa-78aa-bc3b-bd1eef28d881
    
  • And to encode an existing UUID into a TypeID run:

    $ python3 -m typeid.cli encode 0188bac7-4afa-78aa-bc3b-bd1eef28d881 --prefix prefix
    prefix_01h2xcejqtf2nbrexx3vqjhp41
    

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

typeid_python-0.3.0.tar.gz (5.9 kB view hashes)

Uploaded Source

Built Distribution

typeid_python-0.3.0-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

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