Skip to main content

An ARK minter based on Noid.

Project description

noid minter

This is an Archival Resource Key (ARK) minter. It is based on John A. Kunze's Nice Opaque Identifiers (Noid) software.

Usage

from noid_minter.minter import Minter

minter = Minter({"template": "xt7.reeedeeedk", "naan": "16417"})
the_ark = minter.mint().ark # e.g. 16417/xt74xg9f4v1p

dump = minter.to_json() # JSON string
minter2 = Minter.load(dump)

Design considerations

The original Perl Noid provides a minter, binder, and resolver which share a BerkeleyDB database for persistence. We reduce scope to the minter only and drop persistence, providing to_json() and load() methods, with JSON as the transport language, to allow clients to persist minters as they see fit.

Replayability of random minters is a particular concern. When Noid was first written, it used Perl's rand for random numbers, which in turn relied on the random number generator provided by the host system. On many Unix systems, this was rand48, and in Perl 5.19.4, the language standardized on rand48. We have chosen to use this PRNG to allow minter databases that were created with Noid on Unix systems to be migrated to noid-minter and mint new identifiers in a compatible, replayable manner.

The rand48 PRNG has known defects for pseudo-random number generation. However, we are using it not for pseudo-randomness but first for uniform mixing of the sequence of identifiers generated, so that two identifiers minted together are likely to be quite different, and second for replayability of minting sequences, so that minters can be migrated easily.

Users may want to bring their own PRNG to use with a minter. While support for other PRNGs is not a current priority, we are opening to providing support for pluggable PRNGs for minter. We welcome suggestions and code.

License

Copyright (C) 2024-2025 MLE Slone. Licensed under the MIT license.

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_minter-0.1.7.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

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

noid_minter-0.1.7-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file noid_minter-0.1.7.tar.gz.

File metadata

  • Download URL: noid_minter-0.1.7.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for noid_minter-0.1.7.tar.gz
Algorithm Hash digest
SHA256 6918b3f3c4374536adcf23cd86c29f7edbcc079123389bfb2c8034060b26b255
MD5 8100e23236ccebb5fdaecd63b49640dd
BLAKE2b-256 cb67c24899fcd3f4316d28185735864beead0fe312e21c1b80f8797c8a3bed8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for noid_minter-0.1.7.tar.gz:

Publisher: release.yml on uklibraries/noid-minter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file noid_minter-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: noid_minter-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for noid_minter-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e783ef3cc7f5babcf82d04ea7ab89114e2746aae8896d345710fcd6e25e05a09
MD5 e5b429869a077eb65f3d9c59171684e4
BLAKE2b-256 57db6f0a9f6140b83fa9fdf4eedfde8672a8b0d5d95ec9ea25150f4e4fc8cd11

See more details on using hashes here.

Provenance

The following attestation bundles were made for noid_minter-0.1.7-py3-none-any.whl:

Publisher: release.yml on uklibraries/noid-minter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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