an.semantic.export#
The vocabulary as a published, code-free contract file: an/data/timing/vocabulary.json.
ADR 0006 decision 2 (and an#261): the vocabulary registry
(an.semantic.registry) is authored in an; any other engine — the
TypeScript previz, shaping, the burns port — reads it as data. This
module is the exporter, in the pattern of an.timing.contract: a builder
(build_vocabulary()), a writer (write_vocabulary()), a drift check
(vocabulary_drift()) and a write/check command line:
python -m an.semantic.export write
python -m an.semantic.export check
What it carries, per entry: id, kind, name (how a document spells
it), version, title, description, levels (the spectrum levels it
accepts), params (a JSON Schema object with defaults), requires (the
ADR 0002 requirement terms) and, where the entry has them, usage,
examples, aspects and (methods) aspect and remedies. Never
expand: no code leaves an. Camera moves are entries of kind
camera_move whose params.path lies in a view_space entry
(view.framing2d, view.orbit3d), so an engine reads a move once and
lowers it through the space it affords.
**Only an’s own entries** (owner="an") are exported, so the file does
not depend on which genres happen to be loaded, and an installed genre never
edits it. Publishing a genre’s entries is a deliberate act: pass owners= and
say so (ADR 0006, Risks: the package is public).
>>> doc = build_vocabulary()
>>> doc["version"], doc["owners"]
(1, ['an'])
>>> by_id = {e["id"]: e for e in doc["entries"]}
>>> by_id["camera.push_in"]["params"]["properties"]["path"]["default"][-1]["zoom"] > 1
True
>>> "expand" in by_id["camera.push_in"], by_id["view.framing2d"]["kind"]
(False, 'view_space')
Module Attributes
The vocabulary export's file name, beside the timing contract's files. |
|
The shape of the file (not of its entries, which carry their own versions). |
Functions
|
The export document: every entry |
|
How the committed |
|
Regenerate |
- an.semantic.export.VOCABULARY_FILE: str = 'vocabulary.json'#
The vocabulary export’s file name, beside the timing contract’s files.
- an.semantic.export.VOCABULARY_FORMAT_VERSION: int = 1#
The shape of the file (not of its entries, which carry their own versions).
- an.semantic.export.build_vocabulary(*, owners=('an',))[source]#
The export document: every entry
ownersregistered, as data, sorted by id.