Install from PyPI with
pip install noid
or from source with
pip install [email protected]:emdb-empiar/noid.git # SSH
pip install git+https://github.com/emdb-empiar/noid.git # HTTPS
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 | -d] [-s SCHEME] [-N NAA] [-t TEMPLATE] [-n INDEX] [-v] [noid]
generate nice and opaque identifiers
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]
-d, --check-digit compute and print the corresponding check digit for 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]
-v, --verbose turn on verbose text [default: False]
Validate a noid using the -v/--validate
flag and pass a noid.
noid -v $(noid) # self-validation
Compute the check digit using -d/--check-digit
flag and pass a noid.
noid -d $(noid -t zeee -n 1234) && noid -t zeee -n 1234 && noid -t zeeek -n 1234
The example above prints out the check digit, the full noid without a check digit and the full noid with a check digit.
Use the -N/--naa
option.
noid --naa 1234
Use the -s/--scheme
option.
noid --scheme darpa::
Use the -t/--template
option.
noid -t zeeddeedeedk
Use the -n/--index
option.
noid -n 42
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
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))
pip install -r requirements.txt
tox
- Current implementation:
- Original source code was by:
See also the list of contributors who participated in this project.
This tool was heavily influenced from noid-mint
- https://confluence.ucop.edu/display/Curation/NOID
- https://metacpan.org/dist/Noid/view/noid
- https://en.wikipedia.org/wiki/Archival_Resource_Key
- https://www.gs1.org/standards/id-keys/global-model-number-gmn
- https://www.gs1.org/sites/default/files/docs/idkeys/gs1_gmn_executive_summary.pdf
- https://www.gs1.org/services/gmn-generator
- https://en.wikipedia.org/wiki/Check_digit