Skip to main content

idio

Classical-language, human-readable identifiers with >32-bit entropy using Latin and Ancient Greek lexemes. Designed for enterprise-grade uniqueness while keeping outputs memorable and ASCII-only.

Why idio?

  • Uses cryptographically secure randomness (secrets.SystemRandom).
  • Exceeds 32 bits of entropy by composing two grammar-conformant segments.
  • Deterministic grammar drawn from AGENT.md: three patterns mixing Latin adjectives/nouns and Greek nouns/modifiers.
  • Pure-Python, zero dependencies.

Installation

pip install idio
# or locally
pip install .

Usage

from idio import generate_identifier, generate_segment, entropy_bits

# Default: two segments to exceed 32 bits, domain-safe with hyphens and dots
identifier = generate_identifier()
print(identifier)  # e.g., "unicus-nomen-onoma.idion-sema-signum"

# Single segment (useful for display, but ~18.9 bits with bundled lists)
segment = generate_segment()

# Entropy budget for your configuration
bits = entropy_bits(segments=2)
print(f"{bits:.2f} bits")

Subdomain-safe format

By default, words are joined with - and segments with . to produce valid DNS labels (e.g., normalis-gradus-kosmos.perfectus-signum-onoma). If you prefer the original underscore format, pass word_separator="_" (and optionally segment_separator="--").

Patterns (all supported)

  • M1: <latin_adjective>-<latin_noun>-<greek_noun>
  • M2: <greek_modifier>-<greek_noun>-<latin_noun>
  • M3: <latin_noun>-<latin_adjective>-<greek_noun>

generate_identifier joins segments with . by default to keep each label comfortably under DNS's 63-character limit and avoid underscores. If you want the original spec's format, pass word_separator="_" and segment_separator="--".

Entropy math

Current bundled lists are roughly: ~75 Latin adjectives, ~3.5k Latin nouns, ~900 Greek nouns, and 11 Greek modifiers.

  • Combinations per pattern set per segment: on the order of 5e8
  • Bits per segment: approximately 29 bits
  • Default identifier (2 segments): approximately 58 bits

Add more words (≤100 per list) or more segments if you need an even larger space.

API surface

  • generate_identifier(segments=2, patterns=None, bank=DEFAULT_BANK, word_separator="-", segment_separator=".")
  • generate_segment(pattern=None, bank=DEFAULT_BANK, word_separator="-")
  • entropy_bits(segments=2, patterns=Pattern, bank=DEFAULT_BANK)
  • IdioGenerator class if you want to own the RNG or word bank.

Wordlists

All lexemes are ASCII transliterations with no diacritics, chosen to stay abstract, technical, and non-mythological per the spec in AGENT.md.

Development

python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
pytest

License

MIT License © Causum

Metadata

Release files for idio 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for idio 0.1.0
File Size Uploaded
idio-0.1.0.tar.gz 24.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for idio 0.1.0
File Interpreter ABI Platform
idio-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.1 kB

Release files / idio-0.1.0.tar.gz

Download URL idio-0.1.0.tar.gz
Size 24.6 kB
Tags Source
SHA-256 checksum
How to use checksums
bdae6b3da4556cc2da928314ba03a94b08a263529511648b3fbf7bfbff23f1bf
BLAKE2b-256 checksum
How to use checksums
2cbf64c0404c3112f7a6883b223b49b15b9525437152ce14721c3c04d10e9337
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release files / idio-0.1.0-py3-none-any.whl

Download URL idio-0.1.0-py3-none-any.whl
Size 25.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ad921a96570777110d72da55e9fb7dbfe2287837ec9ca987af5430faa9cfe20
BLAKE2b-256 checksum
How to use checksums
d0f0d5ef45a3ae44b0cb7a20ee315bca4959f88292cff01555ce97514d8c7e1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page