Repository navigation
build(flaskapi): adopt released itis-sumo==0.1.0 from PyPI (drop TestPyPI, python floor 3.12) - #746
JavierGOrdonnez wants to merge 3 commits into
Conversation
|
Stack position (top). Chain: #740 → #741 → #742 → #745 → this. Base retargets to |
|
/ponytail-review — over-engineering pass on The diff is deletion-shaped: Lean already. Ship. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## jgo/moga-performance-score-83 #746 +/- ##
==============================================================
Coverage 90.91% 90.92%
==============================================================
Files 117 117
Lines 15141 15138 -3
Branches 1778 1777 -1
==============================================================
- Hits 13766 13764 -2
+ Misses 1290 1289 -1
Partials 85 85
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Merging this PR will regress 4 benchmarks2 warnings
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing |
|
CI |
|
CodSpeed "3 regressed" — expected cross-runtime artifact, not a code regression. The check compares HEAD (this PR: Python 3.12 +
That pattern is the interpreter/pydantic-core version's timing profile, not algorithmic work — nothing in this PR touches serialization code paths (the PEP 695 commit is typing syntax only; annotations have no runtime cost). Absolute numbers stay in the sub-20 ms range on the worst side. The check is not required for merge (branch ruleset carries no required status checks); the actionable follow-up is re-anchoring the CodSpeed baseline on |
eda33cf to
4c80681
Compare
There was a problem hiding this comment.
🟢 Approval recommended
The dependency, runtime, typing, and documentation changes are consistent, with no blocking issues identified.
No open issues 🎉
What changed in this PR
Moves the Flask backend to released itis-sumo==0.1.0 from PyPI and aligns its runtime with Python 3.12. Python 3.14 support remains deferred.
Changes:
- Removes TestPyPI configuration and refreshes the dependency lock.
- Updates runtime settings and three generic functions to Python 3.12 syntax.
- Documents the released engine and compatibility requirements.
| File | Description |
|---|---|
| tests/e2e/scripts/gen-baselines.sh | Installs Python 3.12 for baseline generation. |
| SPEC.md | Records the engine migration. |
| README.md | Updates the engine-pin compatibility note. |
| flaskapi/uv.lock | Locks released dependencies and removes Python 3.11 artifacts. |
| flaskapi/src/mmux_flaskapi/utils/json_serializer.py | Modernizes request-parser generic syntax. |
| flaskapi/src/mmux_flaskapi/utils/helpers.py | Modernizes dictionary-overload generic syntax. |
| flaskapi/src/mmux_flaskapi/blueprints/dakota.py | Modernizes engine-wrapper generic syntax. |
| flaskapi/SPEC.md | Updates Python and engine requirements. |
| flaskapi/pyproject.toml | Pins the release, removes TestPyPI, and raises the Python floor. |
| flaskapi/Dockerfile | Uses a Python 3.12 base image. |
| flaskapi/.python-version | Selects Python 3.12. |
Review effort: Balanced
4c80681 to
02a2238
Compare
…ypi index+sources, python floor 3.12 (requires-python/.python-version/Dockerfile/ty/gen-baselines), engine wheel itis-dakota 6.24.7->6.24.13 via relock, README pin note + flaskapi SPEC §C retargeted to the release
Ruff infers its target from requires-python; the 3.12 floor in the previous commit activates UP047, which flags three pre-existing TypeVar-style generics. Converting them is the floor's only code consequence; the pinned CI 'prek run --all-files' fails without it. 606 passed / 3 skipped after.
02a2238 to
a330045
Compare
|
CodSpeed red cleared via the repo's T46cs lever ( |
|
CodSpeed check red — root-caused, intentional, needs one admin acknowledgment. Re-measuring base+head twice (T46cs lever) did NOT clear it, which ruled out the #742-style runner noise: the deltas reproduce deterministically (same 9 benchmarks, same values across three head measurements). Root cause: this PR moves the python floor 3.11 → 3.12 (the release's
This is exactly CodSpeed's documented "intentional regression" case: the check cannot go green pre-merge because the base-branch baseline stays pinned to 3.11 until this PR lands; the first post-merge develop run re-baselines on 3.12 and the deltas disappear. Action for a CodSpeed org admin: acknowledge the 9 branch changes on the branch page (Settings → regressions → Acknowledge) — after that the check reports success and only approvals gate the merge. Nothing in the PR to fix. |
Points the compute engine at its first released PyPI package:
itis-sumo==0.1.0(2026-10-15), replacing the pre-release TestPyPI feed.What changes
flaskapi/pyproject.toml:itis-sumopinned to0.1.0from PyPI; the explicittestpypiindex and the[tool.uv.sources]stanza are deleted — the whole dependency set now resolves from one registry.requires-python >=3.12. Carried throughrequires-python(>=3.12,<3.14— the 3.14 ceiling work stays open in Finalize itis-sumo migration and Python 3.14 support #626, this PR doesn't touch it),.python-version, theDockerfilebase (uv:python3.12-bookworm-slim),tool.ty.environmentandtests/e2e/scripts/gen-baselines.sh.flaskapi/uv.lockrelocked:itis-sumo 0.1.0frompypi.org, engine wheelitis-dakota 6.24.7 → 6.24.13(cp312/cp313 wheels), py3.11-onlytomlibackport dropped, lockmmux-flaskapistamp follows the current dev version.flaskapi/SPEC.md§C python/engine rows retargeted to the release (historical §T/§B mentions of thea-series stay as dated records); rootSPEC.mdlogs the adoption as T52gm.requires-python, so the 3.12 floor activates UP047 (PEP 695 type parameters) — three pre-existingTypeVargenerics (_run_engine,sanitize_varnames' dict overload,parse_request_model) are converted todef f[T](...)syntax; CIprek run --all-filesrequires it. Pure typing-syntax change, suite unchanged at 606 passed / 3 skipped.No API surface moved: the Sobol' auto-infer contract the node client wire-locks (
itis_sumo.api.evaluate_sobolkeeping optionaldomains/fixed, node V49) was re-verified on the 0.1.0 wheel — the wire contract is unchanged.Verified on the full stacked tree
make ci: flask + node + all 8 stack images no-cache build green.playwright:v1.64.0-nobleimage): all baselines green with zero baseline retypes — the released engine renders byte-identical to the pre-release one on every baseline, including the re-typed converged MOGA lane (fix(node): MOGA Performance column converges to one writer and one domain (B63px) #745). Re-verified on the re-based tree: full boot 20/21 pixel-green (the one red was the knownroute.fulfillrace mid-MOGA-flow, not a pixel diff — theuq-mogalane re-run 4/4 with fresh backend)..devN).Stack
Sits on
jgo/moga-performance-score-83(#745) — stack top. Chain: #740 → #741 → #742 → #745 → this. Retargets todevelopafter #745 merges.Refs #626 (python ceiling work), flaskapi/SPEC.md §C, T32qx, T48jk.
Re-base note (2026-10-27, head
a330045d)Re-based onto the re-based #745 head (
b63551f1). Conflict resolutions, all base-movement only:flaskapi/SPEC.md§C: took the released-pin line, kept the base'spsutilwatchdog line (flaskapi: one hung Dakota subprocess wedges ENGINE_LOCK forever — hard engine timeout, fail-fast 5xx, single-flight dedupe (e2e 5/20 RED on #744) #753 landed below).SPEC.md: kept the base'sT47fl/T47sl/T47mx/T48jkrows, added onlyT52gm— and its cross-ref to the sampling-limits row follows the base's re-mint (T47jk → T48jk).dakota.py: the UP047def _run_engine[T]merged onto flaskapi: one hung Dakota subprocess wedges ENGINE_LOCK forever — hard engine timeout, fail-fast 5xx, single-flight dedupe (e2e 5/20 RED on #744) #753's reworked multi-line signature (watchdogworkflow/dedupeparams kept). The file's diff vs base remains exactly the TypeVar→PEP 695 conversion.Local gates on
a330045d: flaskapi 625/3 + ty clean, prek hooks green, pinned-image e2e as described above. No node/pixel content moved — the stack's FE bytes are #745's.CodSpeed check (expected red until acknowledged)
The performance check flags 9 benchmarks deterministically (reproduced across three measurements; not runner noise): the floor bump makes base benches run Python 3.11 vs head's 3.12 — the compared variable is the interpreter, not the code (bench-relevant dep pins byte-identical; diff is typing syntax only; deltas bidirectional −18%…+39%). CodSpeed's documented intentional-regression case: acknowledge once on the branch page (org-admin), or simply merge — the first post-merge develop run re-baselines on 3.12 and the deltas vanish. Analysis: PR comment.