Skip to main content

A library for creating self-aware ids

Project description

Nuggan

A library for creating informed ids. Nuggan ids aim to provide the following properties.

  • The id knows the type of entity it is identifying.
  • The authenticity of an id can be established just by looking at the id value. That is to say that a nuggan user can determine whether an id given to them is one they previously generated.
  • The alphabetical ordering of a list of ids is relatively equivalent to their chronological ordering.

Usage

Use nuggan to generate ids that encode information about the entity being identified.

import nuggan

nuggan.create_id('user')
# user-005dd1c485-7367ea24-e668-4944-9de0-723112eb1089-e8d26af99684

When given an id it can be parsed to identify what it applies to.

my_id = 'user-005dd1c485-7367ea24-e668-4944-9de0-723112eb1089-e8d26af99684'
nuggan.parse_id(my_id)
# {
#   'prefix': 'user',
#   'hex_time': '005dd1c485',
#   'prefixed_id': 'user-005dd1c485-7367ea24-e668-4944-9de0-723112eb1089',
#   'base_id': '7367ea24-e668-4944-9de0-723112eb1089',
#   'checksum': 'e8d26af99684'
# }

Ids have checksums associated with them to allow corrupted ids to be identified.

bad_id = 'user-005dd1c485-44cc2faf-look-this-aint-rightdfd965a-4a6e8fc57d86'
nuggan.is_valid_id(bad_id)
# False

A salt can be configured to give some amount of confidence that a given id originated from a specific source.

maker = nuggan.IdMaker(salt='an-arbitrary-salt-value')
salted_id = maker.create_id('user')
# user-005dd1c5b4-e4d94f47-cae0-4f16-a0d8-a953c9bd7209-d93cd221c394
normal_id = nuggan.create_id('user')
# user-005dd1c5d8-fd007e41-833f-4c00-8aa9-a26314142845-895de953856b

maker.is_valid_id(salted_id)
# True
maker.is_valid_id(normal_id)
# False

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

nuggan-0.2.0.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

nuggan-0.2.0-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nuggan-0.2.0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.2 Linux/4.15.0-70-generic

File hashes

Hashes for nuggan-0.2.0.tar.gz
Algorithm Hash digest
SHA256 84fbef53a2037c3d7edd88d4ef38f82c5543e8a6d5fc81ef72ad5b7e77100e85
MD5 ebfa09d2d900fedcc003daaad785ce36
BLAKE2b-256 c2c7ee711e7245d766359f9491bab59ed5830d000c9d837e1336e8eea3d26461

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nuggan-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.2 Linux/4.15.0-70-generic

File hashes

Hashes for nuggan-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b2a96e679378f741e933603dbdb3ecc1ac7e6a8e0d4c66d24f803f3d8c2f339
MD5 ef17b6f9cf83bd8425aba778be075fcf
BLAKE2b-256 38120bdc3825e2b0ce800e65371b6c584841cbf5ec66651d7a908e59bb2d7db6

See more details on using hashes here.

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