From 4d218cc46a6b777dd66165c3261af2857eec5a8b Mon Sep 17 00:00:00 2001 From: Javier Garcia Ordonez Date: Tue, 6 Oct 2026 18:25:37 +0200 Subject: [PATCH 1/2] chore(deps): bump itis-sumo 0.1.0a10 -> 0.1.0a11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a11 (itis-sumo#54) promotes the incubator tooling + adds the curated itis_sumo.report facade for notebook consumers - additive to the itis_sumo.api surface flaskapi consumes. - flaskapi 582 pass/3 skip @93%; analytical (real Dakota) 2/2 - e2e in pinned playwright:v1.63.0-noble: 20/20, ZERO pixel drift (no regen needed; baselines untouched by design) - SPEC: §C compute pin line synced; §B B32gs history row left at a10 (historical record: that fix landed WITH a10) - uv.lock also syncs the stale self-version stamp (1.6.3 -> 1.6.3.dev2) --- flaskapi/SPEC.md | 2 +- flaskapi/pyproject.toml | 2 +- flaskapi/uv.lock | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flaskapi/SPEC.md b/flaskapi/SPEC.md index e627b0ca..0e3e06c8 100644 --- a/flaskapi/SPEC.md +++ b/flaskapi/SPEC.md @@ -12,7 +12,7 @@ Flask API: relay frontend ↔ oSPARC (functions, jobs, collections, studies), ge ## §C - Python `>=3.11,<3.14`; `flask==3.1.3`, `flask-cors==6.0.5`, `gevent==26.9.0`, `gunicorn==26.2.0` - run: dev `uv run python -m flask run` (entrypoint.sh), prod `uv run gunicorn main:app` (`main:app = create_flask_app()`) -- oSPARC client `osparc==0.8.4.post0.dev2`; compute `itis-sumo==0.1.0a10` (TestPyPI index; owns the Dakota engine behind `itis_sumo.api`, parent SPEC T32qx) +- oSPARC client `osparc==0.8.4.post0.dev2`; compute `itis-sumo==0.1.0a11` (TestPyPI index; owns the Dakota engine behind `itis_sumo.api`, parent SPEC T32qx) - numerics: `numpy==2.4.6`, `pandas==2.2.3`, `scipy==1.17.1`, `scikit-learn==1.9.1` - ⊥ in-repo compute: `mmux_flaskapi.dakota` subpackage + `mmux_flaskapi.data_preprocessor` DELETED (former §T15 inlining of vendored `mmux_python`); dakota/sampling blueprints delegate to `itis_sumo.api` (§V48ad) - requests accept camelCase|snake_case (pydantic `populate_by_name`); responses camelCase diff --git a/flaskapi/pyproject.toml b/flaskapi/pyproject.toml index 7a643238..dded9e06 100644 --- a/flaskapi/pyproject.toml +++ b/flaskapi/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "flask-cors==6.0.5", "gevent==26.9.0", "gunicorn==26.2.0", - "itis-sumo==0.1.0a10", + "itis-sumo==0.1.0a11", "numpy==2.4.6", "osparc==0.8.4.post0.dev2", "pandas==2.2.3", diff --git a/flaskapi/uv.lock b/flaskapi/uv.lock index 61571827..a230738a 100644 --- a/flaskapi/uv.lock +++ b/flaskapi/uv.lock @@ -365,7 +365,7 @@ wheels = [ [[package]] name = "itis-sumo" -version = "0.1.0a10" +version = "0.1.0a11" source = { registry = "https://test.pypi.org/simple/" } dependencies = [ { name = "itis-dakota" }, @@ -375,9 +375,9 @@ dependencies = [ { name = "scikit-learn" }, { name = "scipy" }, ] -sdist = { url = "https://test-files.pythonhosted.org/packages/23/3e/2eed92b25cd27b11bb28139adac8f21512fea4f74bb1693e79832fe15faf/itis_sumo-0.1.0a10.tar.gz", hash = "sha256:bfe23e60061796a17f21c351ccc8a708d9341a87606b08dd3279d511d7594909", size = 69660, upload-time = "2026-10-01T07:58:27.887Z" } +sdist = { url = "https://test-files.pythonhosted.org/packages/d8/b3/337a30cbb83c4fe4891384660e2034ae56eba39d82d7df06de7ac629aa6a/itis_sumo-0.1.0a11.tar.gz", hash = "sha256:f6fdec8aed91252090989e3541081369cedf92ce13d17979cdd7501f05b03b94", size = 78378, upload-time = "2026-10-01T15:47:03.417Z" } wheels = [ - { url = "https://test-files.pythonhosted.org/packages/1c/ea/5a96d8825b1b27eedb7080c413f92ac66d1fca00a52b741d884f0a7664d6/itis_sumo-0.1.0a10-py3-none-any.whl", hash = "sha256:87f318dfa6ade0280bf35d10c957292fec55abf1d460e32d0cd97560bcded86a", size = 79797, upload-time = "2026-10-01T07:58:26.608Z" }, + { url = "https://test-files.pythonhosted.org/packages/a9/76/f4862070658c7277fa2bbb31597a51bca1659f333747095ffac65ad74bbc/itis_sumo-0.1.0a11-py3-none-any.whl", hash = "sha256:d01a97224ac6a20838d326f0269038840150ace068a00b4102c5393b9aacffa6", size = 89026, upload-time = "2026-10-01T15:47:02.117Z" }, ] [[package]] @@ -464,7 +464,7 @@ wheels = [ [[package]] name = "mmux-flaskapi" -version = "1.6.3" +version = "1.6.3.dev2" source = { editable = "." } dependencies = [ { name = "flask" }, @@ -505,7 +505,7 @@ requires-dist = [ { name = "flask-cors", specifier = "==6.0.5" }, { name = "gevent", specifier = "==26.9.0" }, { name = "gunicorn", specifier = "==26.2.0" }, - { name = "itis-sumo", specifier = "==0.1.0a10", index = "https://test.pypi.org/simple/" }, + { name = "itis-sumo", specifier = "==0.1.0a11", index = "https://test.pypi.org/simple/" }, { name = "numpy", specifier = "==2.4.6" }, { name = "osparc", specifier = "==0.8.4.post0.dev2" }, { name = "pandas", specifier = "==2.2.3" }, From def6c138f9957a580c819c9b3f9d29c4a6660212 Mon Sep 17 00:00:00 2001 From: Javier Garcia Ordonez Date: Tue, 6 Oct 2026 18:37:13 +0200 Subject: [PATCH 2/2] fix(lock+hooks): keep uv.lock at semver 1.6.3; ty hook runs uv run --frozen Two sides of one trap the auto-version bot set today: - the bot stamps pyproject with PEP440 dev versions (1.6.3.dev2); a plain 'uv run' (ty hook) auto-syncs and mirrors that stamp into uv.lock -- whose project version feeds the image build's oSPARC MetadataConfig, which validates SEMVER (verify-image-build failed on #694's first push for exactly this). This commit restores the lock to 1.6.3 (as on develop) and switches the hook to 'uv run --frozen' (installs from lock as-is, mirroring the CI 'uv sync --frozen' convention), so no future flaskapi-touching PR can be forced to propagate the dev stamp into the lock. --- flaskapi/scripts/run-ty-hook.sh | 6 ++++-- flaskapi/uv.lock | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/flaskapi/scripts/run-ty-hook.sh b/flaskapi/scripts/run-ty-hook.sh index 60307d9a..743edd4d 100755 --- a/flaskapi/scripts/run-ty-hook.sh +++ b/flaskapi/scripts/run-ty-hook.sh @@ -8,5 +8,7 @@ cd "$flaskapi_dir" # ty type-checks the whole src/ tree (not incrementally per changed file) since # cross-module inference can surface errors outside the changed files. `uv run` -# syncs the environment as needed, so no separate venv presence check is required. -exec uv run ty check src/mmux_flaskapi +# syncs the environment as needed -- but --frozen: the auto-version bot stamps +# pyproject with PEP440 dev versions that uv would mirror into uv.lock, and the +# image build requires the lock's semver form. Never let the hook rewrite the lock. +exec uv run --frozen ty check src/mmux_flaskapi diff --git a/flaskapi/uv.lock b/flaskapi/uv.lock index a230738a..81d1b628 100644 --- a/flaskapi/uv.lock +++ b/flaskapi/uv.lock @@ -464,7 +464,7 @@ wheels = [ [[package]] name = "mmux-flaskapi" -version = "1.6.3.dev2" +version = "1.6.3" source = { editable = "." } dependencies = [ { name = "flask" },