tiergraph 0.2.2__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tiergraph-0.2.2 → tiergraph-0.3.0}/.gitignore +3 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/CHANGELOG.md +69 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/PKG-INFO +4 -5
- {tiergraph-0.2.2 → tiergraph-0.3.0}/README.md +3 -4
- {tiergraph-0.2.2 → tiergraph-0.3.0}/corpus/accepted-documents.jsonl +186 -186
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/concepts.md +2 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/format.md +24 -8
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/construction.md +3 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/recognize-and-act.md +4 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/serialization.md +2 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/manifest.json +8 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/reference/api.md +235 -26
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/reference/cli.md +1 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/caption_alignment.py +2 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/mix_paths.py +15 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/mixing.py +4 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/schema/tiergraph.schema.json +57 -3
- tiergraph-0.3.0/schema/tiergraph.schema.sha256 +5 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/__init__.py +37 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/build.py +21 -9
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/clock.py +10 -6
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/core.py +168 -30
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/fold.py +7 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/grammar.py +11 -4
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/machine.py +24 -8
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/machine_codec.py +9 -1
- tiergraph-0.3.0/src/tiergraph/pathoutput.py +521 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/rewrite.py +12 -6
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/schema.py +31 -3
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/spanview.py +7 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/value.py +6 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/wire.py +55 -17
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph_dot/__init__.py +11 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/fold.py +3 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/schema_codec.py +3 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_alignment_witness.py +12 -3
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_alternation_witness.py +3 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_boundary_witness.py +4 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_build.py +3 -3
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_cli.py +5 -4
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_dot.py +2 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_edit.py +4 -4
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_external_reference_witness.py +8 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_fold.py +4 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_fold_witness.py +4 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_format_growth.py +5 -6
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_grammar.py +3 -2
- tiergraph-0.3.0/tests/test_json_attributes.py +343 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_machine_decoders.py +57 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_mix_paths.py +2 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_mix_paths_render.py +3 -2
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_path_alternation.py +4 -2
- tiergraph-0.3.0/tests/test_pathoutput.py +864 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_refusal_order.py +3 -3
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_schema.py +2 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_schema_codec_conformance.py +15 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_spanview.py +4 -1
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_value.py +3 -3
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_wire.py +26 -9
- tiergraph-0.2.2/schema/tiergraph.schema.sha256 +0 -5
- {tiergraph-0.2.2 → tiergraph-0.3.0}/.github/workflows/ci.yml +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/.github/workflows/publish.yml +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/.pre-commit-config.yaml +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/CONTRIBUTING.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/LICENSE +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/Makefile +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/RELEASING.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/SECURITY.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/denied-name-digests.txt +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/README.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/contributing-docs.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/getting-started.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/folding.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/profiles.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/selection-and-traversal.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/span-views.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/docs/guide/timing.md +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/__init__.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/critical_path.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/json_document.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/examples/text_segmentation.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/pyproject.toml +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/__init__.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/capture_corpus.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/check_changelog_claims.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/check_documented.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/check_format_growth.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/check_format_semantics.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/check_reservations.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/check_tracked_clean.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/generate_docs.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/scripts/generate_schema.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/__main__.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/action.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/cli/__init__.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/inspect.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/path.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/pathplan.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/profile.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/py.typed +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/root.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/selection.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/semiring.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/textgrid.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph/traversal.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/src/tiergraph_dot/py.typed +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/__init__.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/__init__.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/action.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/declared_schema_codec_divergences.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/kernel.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/machine.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/recognition.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/schema.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/selection.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/traversal.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/conformance/wire.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/fixtures/textgrid/integer-long.TextGrid +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/fixtures/textgrid/reference-long.TextGrid +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/fixtures/textgrid/reference-short.TextGrid +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/semiring_laws.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_action.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_canonical_properties.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_capture_corpus.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_changelog_claims.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_cli_envelope.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_clock.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_core.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_displacement.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_docs.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_examples.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_fold_exactness.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_format_semantics.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_gate_environment.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_inspect.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_machine.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_machine_codec.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_ordered_containment.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_ordered_polyadic_traversal.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_package.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_path.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_pathplan.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_polyadic_relations.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_polyadic_view_reachability.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_profile.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_publishability_guards.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_reservation_register.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_rewrite.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_root.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_selection.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_selection_semiring.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_semiring.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_semiring_law_discrimination.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_shipped_surface.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_text_domain.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_textgrid.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_traversal.py +0 -0
- {tiergraph-0.2.2 → tiergraph-0.3.0}/tests/test_value_embedding.py +0 -0
|
@@ -7,6 +7,72 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.3.0] - 2026-09-22
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Added JSON-valued attributes. `JsonType.JSON` declares an attribute whose
|
|
15
|
+
value is ordinary JSON -- null, a boolean, an integer, a double, a string,
|
|
16
|
+
an array or an object -- held as `JsonAttributeValue` on any carrier a
|
|
17
|
+
scalar attribute can sit on. The value is owned: the attribute keeps its own
|
|
18
|
+
snapshot, so a caller mutating the container it passed, or the one it is
|
|
19
|
+
handed back, changes neither. Kinds and float signs are part of the value's
|
|
20
|
+
identity, so `0`, `0.0` and `False` are three values and `-0.0` crosses the
|
|
21
|
+
wire as `-0.0`.
|
|
22
|
+
- **BREAKING:** `FORMAT_VERSION` moves from `"0.2.0"` to `"0.3.0"`. This
|
|
23
|
+
reader accepts only its own format version, so it refuses a document written
|
|
24
|
+
at `"0.2.0"` with a discriminator refusal. The release line moves because
|
|
25
|
+
the schema grows by the JSON attribute record; otherwise its shape is
|
|
26
|
+
unchanged against the 0.2 line.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- A JSON integer must lie within +/-(2**53 - 1), the range a JSON peer decodes
|
|
31
|
+
exactly. JSON has one number type and its peers read it as an IEEE double,
|
|
32
|
+
so a larger integer reads back as a different number with no error.
|
|
33
|
+
`JsonAttributeValue` refuses one where it is built, and reading a document
|
|
34
|
+
refuses one as a staged `Refusal` rather than loading a value its peers
|
|
35
|
+
would corrupt.
|
|
36
|
+
- Reading a document refuses an integer literal too long to convert as a
|
|
37
|
+
staged `Refusal`, where it previously raised a bare `ValueError` from the
|
|
38
|
+
process's digit limit. This bounds conversion only; it places no budget on
|
|
39
|
+
integer fields other than JSON attribute values.
|
|
40
|
+
- The scalar attribute constructor and a grammar weight refuse a JSON-typed
|
|
41
|
+
declaration, so a JSON value cannot reach a place that reads only scalars.
|
|
42
|
+
|
|
43
|
+
## [0.2.3] - 2026-09-15
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- Added `Emissions` and `OutputPlan`, which pool the mass of complete paths by
|
|
48
|
+
the output string their items emit, over candidates the caller supplies, beside
|
|
49
|
+
`PathPlan` and without changing it. `OutputPlan.masses` returns `OutputMasses`:
|
|
50
|
+
each candidate's mass and the residual mass of every other output, computed in
|
|
51
|
+
the base algebra by one marginal pass rather than by subtraction, with the zero
|
|
52
|
+
mass reported rather than a distribution fabricated. Its `decided` and `tied`
|
|
53
|
+
certificates are available only under `LOG_PROBABILITY` and `COUNTING`; under
|
|
54
|
+
`LOG_PROBABILITY`, `tied` compares computed values, which an approximate
|
|
55
|
+
algebra can split for equal real masses. `conditioned` restricts the plan to
|
|
56
|
+
paths accepted as one candidate, refused only when no such path exists, and
|
|
57
|
+
`item_marginals` pools those conditioned marginals back to the base plan's
|
|
58
|
+
items as `OutputItemMarginals`. Declared roots and relation-instance
|
|
59
|
+
multiplicity carry into the derived plan. Duplicate or empty candidate sets,
|
|
60
|
+
invalid emissions, and noncommutative multiplication are refused. The pooled
|
|
61
|
+
best output over all strings is intractable in general, so the plan scores the
|
|
62
|
+
candidates it is given and reports the residual that bounds every other (#190).
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
|
|
66
|
+
- `FORMAT_VERSION` stays `"0.2.0"`: nothing in this line touches the wire
|
|
67
|
+
format, and `make format-growth` reports no break.
|
|
68
|
+
|
|
69
|
+
### Documentation
|
|
70
|
+
|
|
71
|
+
- The lineage now credits Sue Hertz for the Delta representation, which the
|
|
72
|
+
README and the concepts guide had attributed to Paul Hertz, and spells out
|
|
73
|
+
Heterogeneous Relation Graphs (HRGs) (#189). The README no longer claims that no
|
|
74
|
+
view can disagree with the store.
|
|
75
|
+
|
|
10
76
|
## [0.2.2] - 2026-09-14
|
|
11
77
|
|
|
12
78
|
### Added
|
|
@@ -962,7 +1028,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
962
1028
|
- TG-PATH canonical addressing for structural and durable items and boundaries, profile-owned alternatives, kind checks, and typed refusals with offender details.
|
|
963
1029
|
- Canonical selection, bounded bipartite walks, ordered polyadic traversal, and ordered containment queries that preserve declared incidence and child order where applicable.
|
|
964
1030
|
|
|
965
|
-
[Unreleased]: https://github.com/lenzo-ka/tiergraph/compare/v0.
|
|
1031
|
+
[Unreleased]: https://github.com/lenzo-ka/tiergraph/compare/v0.3.0...HEAD
|
|
1032
|
+
[0.3.0]: https://github.com/lenzo-ka/tiergraph/compare/v0.2.3...v0.3.0
|
|
1033
|
+
[0.2.3]: https://github.com/lenzo-ka/tiergraph/compare/v0.2.2...v0.2.3
|
|
966
1034
|
[0.2.2]: https://github.com/lenzo-ka/tiergraph/compare/v0.2.1...v0.2.2
|
|
967
1035
|
[0.2.1]: https://github.com/lenzo-ka/tiergraph/compare/v0.2.0...v0.2.1
|
|
968
1036
|
[0.2.0]: https://github.com/lenzo-ka/tiergraph/compare/v0.1.0...v0.2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tiergraph
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Ordered tiers, declared relations, and an algebra over them
|
|
5
5
|
Project-URL: Homepage, https://github.com/lenzo-ka/tiergraph
|
|
6
6
|
Project-URL: Repository, https://github.com/lenzo-ka/tiergraph
|
|
@@ -38,8 +38,7 @@ Description-Content-Type: text/markdown
|
|
|
38
38
|
|
|
39
39
|
tiergraph holds parallel ordered sequences and the declared links between them
|
|
40
40
|
as one immutable graph, checked when it is built. Every view — selection,
|
|
41
|
-
traversal, containment, timing, folds — is computed from that one graph
|
|
42
|
-
view can disagree with the store.
|
|
41
|
+
traversal, containment, timing, folds — is computed from that one graph.
|
|
43
42
|
|
|
44
43
|
The shape is the track view of an audio or video editor: rows of items, ordered
|
|
45
44
|
within a row, aligned across rows, with links between rows. Aligned annotations
|
|
@@ -110,8 +109,8 @@ The complete runnable example keeps the displayed phone labels separate from
|
|
|
110
109
|
their durable ids and prints `['K', 'AE', 'T']`; see
|
|
111
110
|
[`examples/caption_alignment.py`](examples/caption_alignment.py).
|
|
112
111
|
|
|
113
|
-
The model
|
|
114
|
-
|
|
112
|
+
The model is informed by Sue Hertz's Delta representation and the Heterogeneous
|
|
113
|
+
Relation Graphs (HRGs) of the Festival Speech Synthesis System. tiergraph keeps
|
|
115
114
|
their emphasis on explicit tiered structure while defining a typed, immutable
|
|
116
115
|
model and a versioned interchange format.
|
|
117
116
|
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
tiergraph holds parallel ordered sequences and the declared links between them
|
|
6
6
|
as one immutable graph, checked when it is built. Every view — selection,
|
|
7
|
-
traversal, containment, timing, folds — is computed from that one graph
|
|
8
|
-
view can disagree with the store.
|
|
7
|
+
traversal, containment, timing, folds — is computed from that one graph.
|
|
9
8
|
|
|
10
9
|
The shape is the track view of an audio or video editor: rows of items, ordered
|
|
11
10
|
within a row, aligned across rows, with links between rows. Aligned annotations
|
|
@@ -76,8 +75,8 @@ The complete runnable example keeps the displayed phone labels separate from
|
|
|
76
75
|
their durable ids and prints `['K', 'AE', 'T']`; see
|
|
77
76
|
[`examples/caption_alignment.py`](examples/caption_alignment.py).
|
|
78
77
|
|
|
79
|
-
The model
|
|
80
|
-
|
|
78
|
+
The model is informed by Sue Hertz's Delta representation and the Heterogeneous
|
|
79
|
+
Relation Graphs (HRGs) of the Festival Speech Synthesis System. tiergraph keeps
|
|
81
80
|
their emphasis on explicit tiered structure while defining a typed, immutable
|
|
82
81
|
model and a versioned interchange format.
|
|
83
82
|
|