morphata 2.0.3__tar.gz → 2.0.5__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.
- {morphata-2.0.3 → morphata-2.0.5}/CHANGELOG.md +22 -0
- {morphata-2.0.3 → morphata-2.0.5}/PKG-INFO +2 -2
- {morphata-2.0.3 → morphata-2.0.5}/ci/make-release +3 -3
- {morphata-2.0.3 → morphata-2.0.5}/pixi.lock +1 -1
- {morphata-2.0.3 → morphata-2.0.5}/pixi.toml +1 -1
- {morphata-2.0.3 → morphata-2.0.5}/pyproject.toml +2 -2
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/hoa/__init__.py +2 -1
- morphata-2.0.5/src/morphata/hoa/exporter.py +689 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/symbolic/automaton.py +79 -0
- morphata-2.0.5/tests/hoa/test_exporter_streaming.py +250 -0
- morphata-2.0.5/tests/symbolic/test_to_hoa.py +163 -0
- {morphata-2.0.3 → morphata-2.0.5}/uv.lock +2 -2
- morphata-2.0.3/src/morphata/hoa/exporter.py +0 -324
- {morphata-2.0.3 → morphata-2.0.5}/.basedpyright/baseline.json +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.claude/settings.local.json +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.dockerignore +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.editorconfig +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.envrc +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.envrc.recommended +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.fdignore +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.gitattributes +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.gitignore +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.mailmap +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.python-version +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/.rstcheck.cfg +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/AGENTS.md +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/CLAUDE.md +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/CONTRIBUTING.md +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/LICENSE +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/README.md +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/bench/README.md +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/bench/__init__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/bench/conftest.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/bench/test_sere_nlm_perf.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/cliff.toml +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/_static/navigation.html +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/modules.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.acceptance.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.alphabet.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.automaton.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.builder.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.hoa.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.logic.ltl.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.logic.psl.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.logic.sere.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.logic.strel.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.operators.matrix.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.operators.polynomial.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.operators.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/api/morphata.symbolic.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/concepts/acceptance.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/concepts/hoa.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/concepts/index.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/concepts/operators.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/concepts/spec.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/concepts/weights.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/conf.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/index.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/quick-start.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/docs/symbolic-transforms.rst +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/justfile +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/mypy.ini +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/project.utf-8.add +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/project.utf-8.add.spl +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/pyrefly.toml +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/pyrightconfig.json +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/pytest.toml +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/ruff.toml +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/__init__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/acceptance.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/alphabet.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/automaton.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/builder.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/hoa/__main__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/hoa/acc_expr.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/hoa/hoa.lark +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/hoa/parser.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/logic/__init__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/logic/_common.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/logic/ltl.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/logic/psl.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/logic/sere.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/logic/strel.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/operators/__init__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/operators/_backend.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/operators/matrix.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/operators/polynomial.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/py.typed +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/symbolic/__init__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/symbolic/bdd.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/symbolic/compose.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/symbolic/equivalence.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/src/morphata/symbolic/transforms.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/conftest.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut1.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut11.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut2.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut3.2.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut3.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut4.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut5.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut6.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut7.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/aut8.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/finite_aut.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/gen_buchi_3.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/gen_cobuchi_2.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/rabin_2pair.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/streett_2pair.hoa +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/test_exporter_basic.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/test_exporter_roundtrip.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/hoa/test_parser.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/logic/__init__.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/logic/test_ltl.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/logic/test_psl.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/logic/test_sere.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/logic/test_sere_properties.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/logic/test_strel.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/operators/test_matrix_from_ir.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/operators/test_matrix_from_ltl.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/operators/test_polynomial_from_ir.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_bdd_helpers.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_compose.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_from_hoaf.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_ltlf2dfa_equivalence.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_step.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_symbolic_automaton.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_symbolic_from_ir.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_transforms.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_transforms_ir.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/symbolic/test_transforms_properties.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/test_alphabet.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/test_automaton.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/test_builder.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/tests/test_from_parsed.py +0 -0
- {morphata-2.0.3 → morphata-2.0.5}/ty.toml +0 -0
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.5 — 2026-06-01
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
`SymbolicAutomaton` and `Automaton` now support a streaming writer
|
|
8
|
+
for HOA export via `morphata.hoa.symbolic_automaton_to_hoa`
|
|
9
|
+
and `morphata.hoa.automaton_to_hoa`, and is also present in `SymbolicAutomaton.to_hoa`.
|
|
10
|
+
|
|
11
|
+
This is mostly a performance thing:
|
|
12
|
+
providing a buffered writer to the exporter allows one to stream the HOA format into a
|
|
13
|
+
file, without having to manifest the entire string representation of the automaton,
|
|
14
|
+
which can be cumbersome.
|
|
15
|
+
|
|
16
|
+
## 2.0.4 — 2026-05-28
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
Technically a feature release almost immediately
|
|
21
|
+
after another feature release masquerading as a patch,
|
|
22
|
+
this release adds the ability to translate from a `SymbolicAutomaton` back to an
|
|
23
|
+
`Automaton`, allowing for the `SymbolicAutomaton` to be exported to an HOA file.
|
|
24
|
+
|
|
3
25
|
## 2.0.3 — 2026-05-28
|
|
4
26
|
|
|
5
27
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: morphata
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.5
|
|
4
4
|
Summary: Representation theory for automata, made practical.
|
|
5
5
|
Project-URL: Documentation, https://docs.anandb.dev/morphata
|
|
6
6
|
Project-URL: Repository, https://git.anandb.dev/morphata.git
|
|
@@ -20,7 +20,7 @@ Requires-Dist: logic-asts>=1.6.2
|
|
|
20
20
|
Requires-Dist: networkx
|
|
21
21
|
Requires-Dist: numpy
|
|
22
22
|
Requires-Dist: types-networkx
|
|
23
|
-
Requires-Dist: typing-extensions
|
|
23
|
+
Requires-Dist: typing-extensions>=4.14
|
|
24
24
|
Provides-Extra: dot
|
|
25
25
|
Requires-Dist: pydot>=4.0.1; extra == 'dot'
|
|
26
26
|
Provides-Extra: jax
|
|
@@ -88,7 +88,7 @@ echo "==> Promoting CHANGELOG Unreleased -> ${NEW_VERSION} (${RELEASE_DATE})"
|
|
|
88
88
|
sed -i "s/^## Unreleased$/## ${NEW_VERSION} \xe2\x80\x94 ${RELEASE_DATE}/" CHANGELOG.md
|
|
89
89
|
|
|
90
90
|
# Commit
|
|
91
|
-
COMMIT_MSG="chore(release): $
|
|
91
|
+
COMMIT_MSG="chore(release): $(uv version)"
|
|
92
92
|
echo "==> Committing: $COMMIT_MSG"
|
|
93
93
|
|
|
94
94
|
if is_jj; then
|
|
@@ -120,8 +120,8 @@ echo "==> Tagging $TAG"
|
|
|
120
120
|
if is_jj; then
|
|
121
121
|
jj git import 2>/dev/null || true
|
|
122
122
|
fi
|
|
123
|
-
printf '%s\n\n%s\n' "$TAG_TITLE" "$TAG_BODY"
|
|
124
|
-
|
|
123
|
+
printf '%s\n\n%s\n' "$TAG_TITLE" "$TAG_BODY" |
|
|
124
|
+
git tag -a "$TAG" --cleanup=verbatim -F -
|
|
125
125
|
if is_jj; then
|
|
126
126
|
jj git import 2>/dev/null || true
|
|
127
127
|
fi
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name = "morphata"
|
|
3
3
|
authors = [{ name = "Anand Balakrishnan", email = "anandbala1597@gmail.com" }]
|
|
4
4
|
description = "Representation theory for automata, made practical."
|
|
5
|
-
version = "2.0.
|
|
5
|
+
version = "2.0.5"
|
|
6
6
|
requires-python = ">=3.12"
|
|
7
7
|
classifiers = [
|
|
8
8
|
"Intended Audience :: Science/Research",
|
|
@@ -21,7 +21,7 @@ dependencies = [
|
|
|
21
21
|
"networkx",
|
|
22
22
|
"numpy",
|
|
23
23
|
"types-networkx",
|
|
24
|
-
"typing-extensions",
|
|
24
|
+
"typing-extensions>=4.14",
|
|
25
25
|
]
|
|
26
26
|
|
|
27
27
|
[project.optional-dependencies]
|
|
@@ -37,7 +37,8 @@ Example extended HOA with finite acceptance::
|
|
|
37
37
|
|
|
38
38
|
import morphata.hoa.parser as parser
|
|
39
39
|
from morphata.hoa.exporter import automaton_to_hoa as automaton_to_hoa
|
|
40
|
+
from morphata.hoa.exporter import symbolic_automaton_to_hoa as symbolic_automaton_to_hoa
|
|
40
41
|
from morphata.hoa.parser import ParsedAutomaton as ParsedAutomaton
|
|
41
42
|
from morphata.hoa.parser import parse as parse
|
|
42
43
|
|
|
43
|
-
__all__ = ["parse", "parser", "ParsedAutomaton", "automaton_to_hoa"]
|
|
44
|
+
__all__ = ["parse", "parser", "ParsedAutomaton", "automaton_to_hoa", "symbolic_automaton_to_hoa"]
|