Skip to main content

Mint NOIDs using a CLI or API

Project description

noid Python Package

PyPI version PyPI - Python Version example workflow codecov

Installation

Install from PyPI with

pip install noid

or from source with

pip install git+git@github.com:paulkorir/noid.git     # SSH
pip install git+https://github.com/paulkorir/noid.git # HTTPS

CLI Usage

Generating a noid

Use the noid command with no arguments:

noid

There are various options available using -h/--help:

noid -h
usage: noid [-h] [-c CONFIG_FILE] [-v] [-s SCHEME] [-N NAA] [-t TEMPLATE] [-n INDEX] [--verbose] [noid]

generate nice and opaque identifiers (noids)

positional arguments:
  noid                  a noid

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        path to a config file with a noid section
  -v, --validate        validate the given noid [default: False]
  -s SCHEME, --scheme SCHEME
                        the noid scheme [default: 'ark:/']
  -N NAA, --naa NAA     the name assigning authority (NAA) number [default: ]
  -t TEMPLATE, --template TEMPLATE
                        the template by which to generate noids [default: 'zeeddk']
  -n INDEX, --index INDEX
                        a number for which to generate a valid noid [default: random positive integer]
  --verbose             turn on verbose text [default: False]

Validating a noid

Validate a noid using the -v/--validate flag and pass a noid.

noid -v $(noid) # self-validation

Options

Specify the NAA

Use the -N/--naa option.

noid --naa 1234

Specify the scheme

Use the -s/--scheme option.

noid --scheme darpa::

Specify a template

Use the -t/--template option.

noid -t zeeddeedeedk

Compute a noid for a value

Use the -n/--index option.

noid -n 42

Using a config file

A simple config file can be defined with the following structure:

# path/to/noid.cnf
[noid]
# start with 'z'; follow with as many 'e' or 'd' as needed; terminate with 'k' for a checkdigit 
template = zeededdek 
scheme = ark:/
naa = 92729
# the above configs will produce noids like so: ark:/92729/fn7Z344v

then use it as follows:

noid -c path/to/noid.cnf

API Usage

You can also use this package's API in your code.

import random

from noid import mint, validate, calculate_check_digit, generate_noid

# with default arguments
noid = mint()

# arguments: template, n, scheme, naa
noid = mint(template='zeedeeedk', n=37, scheme='https://', naa='802938')

# validating a noid
validate(noid) # True/False

# calculate the check digit
calculate_check_digit(noid)

# low-level generate a noid from a mask and number; no check digit is appended
noid = generate_noid('eeddeed', random.randint(100, 1000))

Testing

pip install -r requirements.txt
tox

Authors

See also the list of contributors who participated in this project.

Thanks

This tool was heavily influenced from noid-mint

References

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

noid-1.0.1.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

noid-1.0.1-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file noid-1.0.1.tar.gz.

File metadata

  • Download URL: noid-1.0.1.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for noid-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9191b5193f49298eb9bf49bc6550ca279e407e19ddf7a87cb06bd1a9dc384383
MD5 91cdfdb49c45e923068285d61abf0a5c
BLAKE2b-256 7836c85420ee81f6e7e77f1ec347810cb2c4ba639a8aad347706be4ea053a775

See more details on using hashes here.

File details

Details for the file noid-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: noid-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for noid-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 29e305251c863b4cbb1be323248d66cc4e60c52d8e933dfc30aaebfd2644a620
MD5 bb4e2504bf26242b149faf956a471dbb
BLAKE2b-256 014600382763e0e004b381d3112a146986285f21058a75f412d8a6f2b447cd5b

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