diff --git a/runtime/README.md b/runtime/README.md index 1e68cbe..f221d14 100644 --- a/runtime/README.md +++ b/runtime/README.md @@ -1,4 +1,11 @@ -# interscript-ml (Python runtime) +# interscript-ml (Python runtime) — SUPERSEDED by `secryst` + +> **Deprecated.** The canonical Python crystal is +> [`secryst`](https://pypi.org/project/secryst/) (same code, same +> IMF v1 contract, same SECRYST_INDEX/SECRYST_CACHE env vars) — +> `pip install secryst` instead. This package remains published for +> provenance; `runtime/` in this repo is the frozen origin of the +> crystal family (golden-owner history in the secryst-py README). The reference Python runtime for **IMF v1** model zips — the phonological layer of Interscript. The Ruby (secryst gem) and TypeScript diff --git a/runtime/pyproject.toml b/runtime/pyproject.toml index ed908e0..ff66ffb 100644 --- a/runtime/pyproject.toml +++ b/runtime/pyproject.toml @@ -4,13 +4,14 @@ build-backend = "setuptools.build_meta" [project] name = "interscript-ml" -version = "0.1.0" -description = "Python runtime for Interscript Model Format (IMF v1) — the phonological layer of Interscript" +version = "0.1.2" +description = "DEPRECATED — superseded by the 'secryst' package; Python runtime for Interscript Model Format (IMF v1)" readme = "README.md" license = { text = "BSD-3-Clause" } requires-python = ">=3.10" authors = [{ name = "Interscript Project" }] -keywords = ["transliteration", "diacritization", "g2p", "onnx", "byt5"] +classifiers = ["Development Status :: 7 - Inactive"] +keywords = ["transliteration", "diacritization", "g2p", "onnx", "byt5", "deprecated"] dependencies = [ "numpy>=1.26", diff --git a/runtime/src/interscript_ml/registry.py b/runtime/src/interscript_ml/registry.py index aae6c28..aede061 100644 --- a/runtime/src/interscript_ml/registry.py +++ b/runtime/src/interscript_ml/registry.py @@ -19,7 +19,7 @@ import yaml DEFAULT_INDEX_URL = ( - "https://raw.githubusercontent.com/interscript/interscript-ml/main/models.yaml" + "https://github.com/interscript/interscript-ml/releases/download/index-v6/models-index.yaml" ) ENV_INDEX = "SECRYST_INDEX" ENV_CACHE = "SECRYST_CACHE" diff --git a/runtime/tests/test_registry.py b/runtime/tests/test_registry.py index 4dd61d8..e2c0c2e 100644 --- a/runtime/tests/test_registry.py +++ b/runtime/tests/test_registry.py @@ -165,3 +165,16 @@ def test_resolve_parts_rejects_corrupt_part(tmp_path: Path) -> None: resolve("tiny-1.0", index_url=str(index_path)) finally: os.environ.pop("SECRYST_CACHE", None) + + +def test_default_index_url_pins_current_release() -> None: + # exact pin: raw.githubusercontent is NEVER a data channel (the + # contract is GitHub Releases + sha256 sidecar). Bump this test + # WITH the registry constant, never ahead of it. + from interscript_ml.registry import DEFAULT_INDEX_URL + + assert DEFAULT_INDEX_URL == ( + "https://github.com/interscript/interscript-ml" + "/releases/download/index-v6/models-index.yaml" + ) + assert "raw.githubusercontent" not in DEFAULT_INDEX_URL