The dictionary and toolkit for the grid script: how humans write down what Ross 128 b sends, in InterImm's The Contact Era. It is our way of representing their language, not their own writing.
Docs: https://interimm.github.io/glyph-cli/ · PyPI: https://pypi.org/project/glyph-cli/
uvx --from glyph-cli glyph show BODY.OTHER STAR.TIME COUNT.137+++.+++ .+..+.+ .....+.
+++.+.. +++.+.+ ......+
+++.+++ .+..+.+ +++...+
BODY.OTHER: your world
STAR.TIME: pulsar
COUNT.137: 137
glyph is on PyPI as glyph-cli:
uv tool install glyph-cli # or: pipx install glyph-cli, or: pip install glyph-cli
glyph --versionUpgrade with uv tool upgrade glyph-cli (or pipx upgrade glyph-cli, pip install -U glyph-cli). Python 3.10 or newer, no other dependencies.
glyph parts # the 16 parts
glyph find wind # search meanings
glyph check BODY.STAR # is it a word? exit 1 if not
glyph show BODY.OTHER --symbol × # draw words
glyph number 2219 # COUNT.4.171: base-512 digits
glyph render examples/third-voice.txt # draw a page
glyph render examples/conversation.txt --per-line 1 # one triplet per line
glyph render examples/third-voice.txt --svg -o page.svg
glyph graph examples/conversation.txt # read it as a knowledge graph (--json, --dot)
glyph render examples/question.txt | glyph decode - # and back
glyph init my-vocab.json && export GLYPH_VOCAB=$PWD/my-vocab.json
glyph add BODY.STAR "a star-world" --domain WorldsA page file has one band per line, SYMBOL: node | relation | node; a block of bands is one triplet, and a blank line starts the next. See examples/ and the docs.
uv sync --all-groups # or: pip install -e . pytest ruff zensical
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run python scripts/gen_docs.py # regenerate docs/vocabulary.md, docs/cli.md and the example drawings
uv run zensical serve # docs at http://localhost:8000The vocabulary ships in src/glyph_cli/data/vocab.json. Change it with the tool (glyph --vocab src/glyph_cli/data/vocab.json add ...), then run scripts/gen_docs.py; the tests fail if the generated docs are stale.
Pushes to main publish the docs to GitHub Pages.
- Bump
__version__insrc/glyph_cli/__init__.pyand merge it tomain. - Publish a GitHub release tagged
vX.Y.Z(the same version).
The release workflow checks the tag matches the version, builds the package, tests the built wheel and uploads it to PyPI with Trusted Publishing, so no token is stored.
MIT