diff --git a/BUILD_KORBAN.md b/BUILD_KORBAN.md index 5cdecfc5..68b222fa 100644 --- a/BUILD_KORBAN.md +++ b/BUILD_KORBAN.md @@ -33,7 +33,7 @@ The offering protocol — semichah, shechitah, zerikah, haktarah, routing — is python = "3.12.2" httpx = "0.27.0" pydantic = "2.6.1" -pyswip = "0.2.11" +pyswip = "0.2.10" hebrew-tokenizer = "2.3.0" ``` diff --git a/korban_processor/poetry.lock b/korban_processor/poetry.lock index 4dba9ee9..4ae36e23 100644 --- a/korban_processor/poetry.lock +++ b/korban_processor/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.5.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -12,6 +12,37 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.14.2" +description = "High-level concurrency and networking framework on top of asyncio or Trio" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494"}, + {file = "anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f"}, +] + +[package.dependencies] +idna = ">=2.8" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +trio = ["trio (>=0.32.0)"] + +[[package]] +name = "certifi" +version = "2026.7.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775"}, + {file = "certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55"}, +] + [[package]] name = "colorama" version = "0.4.6" @@ -25,6 +56,91 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, +] + +[[package]] +name = "hebrew-tokenizer" +version = "2.3.0" +description = "A very simple python tokenizer for Hebrew text" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] +files = [ + {file = "hebrew_tokenizer-2.3.0.tar.gz", hash = "sha256:ce96a160baa001785f52eeb095dfb9d219cf6d70654d3a8ac3aec5bedf969ace"}, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.27.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "idna" +version = "3.20" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "idna-3.20-py3-none-any.whl", hash = "sha256:ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c"}, + {file = "idna-3.20.tar.gz", hash = "sha256:a7db850025b95ded1eae8a46181a1a6c56c92c96f0e2b005d9ff8dc0210cab44"}, +] + +[package.extras] +all = ["coverage (>=7.10.0)", "hypothesis (>=6.141.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.16.0)", "ty (>=0.0.37)"] + [[package]] name = "iniconfig" version = "2.3.0" @@ -175,7 +291,7 @@ files = [ ] [package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +typing-extensions = ">=4.6.0,!=4.7.0" [[package]] name = "pygments" @@ -192,6 +308,18 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] +[[package]] +name = "pyswip" +version = "0.2.10" +description = "PySwip enables querying SWI-Prolog in your Python programs." +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "pyswip-0.2.10-py2.py3-none-any.whl", hash = "sha256:7abc3009f8badc7d0c23d72422960e9f229059a731430c9acd7e9a718cbd2832"}, + {file = "pyswip-0.2.10.tar.gz", hash = "sha256:7698584ddf73d051d22d5fed728b9e89bb444a9d384d48c9f5e6fd7060bbdb9f"}, +] + [[package]] name = "pytest" version = "8.4.2" @@ -214,6 +342,18 @@ pygments = ">=2.7.2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + [[package]] name = "typing-extensions" version = "4.15.0" @@ -229,4 +369,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = "==3.12.2" -content-hash = "05edb007ce5b000462960d9caaa0110ef611d4ffc74e97b38fcec20a3004b754" +content-hash = "37941043b8c8347259009cc14f757e3e68a6b3b0cf97c8bdcfefcd0c03aa40de" diff --git a/korban_processor/pyproject.toml b/korban_processor/pyproject.toml index 646c2afb..1a8dcbbb 100644 --- a/korban_processor/pyproject.toml +++ b/korban_processor/pyproject.toml @@ -9,7 +9,7 @@ requires-python = "==3.12.2" dependencies = [ "pydantic==2.6.1", "httpx==0.27.0", - "pyswip==0.2.11", + "pyswip==0.2.10", "hebrew-tokenizer==2.3.0", ] diff --git a/specs/shorashim_terumah.md b/specs/shorashim_terumah.md index 57b7e921..bb7e84f6 100644 --- a/specs/shorashim_terumah.md +++ b/specs/shorashim_terumah.md @@ -94,7 +94,7 @@ All pinned via lock files per Construction Specification §§1.3-1.5. |---------|---------|--------|-------| | httpx | 0.27.0 | ✅ | PyPI (free) — API calls | | pydantic | 2.6.1 | ✅ | PyPI (free) — data validation | -| pyswip | 0.2.11 | ⚠️ | PyPI. Needs testing with SWI-Prolog 9.2.2. | +| pyswip | 0.2.10 | ⚠️ | PyPI. (0.2.11 was pinned here until 2026-10-04 and was never published.) Declared and installed, not yet imported; needs libswipl in the image and testing with SWI-Prolog 9.2.2 before first use. | | hebrew-tokenizer | 2.3.0 | ⚠️ | PyPI. Needs evaluation for biblical vs. modern Hebrew. | | pytest | latest stable | ✅ | PyPI (free) | | llama-cpp-python | 0.2.55 | ✅ | PyPI (free) — Mistral inference | diff --git a/specs/shorashim_vayakhel.md b/specs/shorashim_vayakhel.md index b7c50a8b..530d918c 100644 --- a/specs/shorashim_vayakhel.md +++ b/specs/shorashim_vayakhel.md @@ -80,7 +80,7 @@ constraints: python = "3.12.2" httpx = "0.27.0" pydantic = "2.6.1" -pyswip = "0.2.11" +pyswip = "0.2.10" hebrew-tokenizer = "2.3.0" # Kushya generator additional diff --git a/vav_pipeline/lib/vav_pipeline/doorpost.ex b/vav_pipeline/lib/vav_pipeline/doorpost.ex index 69765515..d47601f9 100644 --- a/vav_pipeline/lib/vav_pipeline/doorpost.ex +++ b/vav_pipeline/lib/vav_pipeline/doorpost.ex @@ -175,7 +175,7 @@ defmodule VavPipeline.Doorpost do # changes; the update is a deliberate operator commit. A bare # hash-update commit (without a corresponding spec change in the # same commit) is itself a drift signal. - @expected_hash "ed2a6aece482392b4d900d4e3f9947076746b3103e3a8c70d3a97436b72c2e22" + @expected_hash "81da49d4e37f3d01cb2cd11eafc745adc4360a399871ba391f8f78dd05c1e555" @doc "Return the list of files that constitute the category-grade specification." @spec files() :: [String.t()]