Repository navigation
Conversation
SQLAlchemy 2.1 types Result with variadic generics, so mypy 2.3.0 reports var-annotated on bare scalar_one() assignments.
SQLAlchemy 2.1 retyped Result and broke the type gate, so the next minor should be a deliberate bump. mypy stays pinned with data-pipeline.
runtime.txt pins what the image ships; dev.txt adds the test and dev extras. DEVELOPMENT.md documents how to regenerate both.
Wheels only and hashes required, then the project with --no-deps and pip check, so a drifted lock fails the build instead of shipping.
gate2 now fails when pyproject.toml and requirements/ drift, extras included, and gate5 imports the app with the runtime lock alone.
4 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
pyproject.tomlpins the direct dependencies, but nothing pinned the transitiveset, so two image builds could ship different bytes. This adds hash-locked sets
from
uv pip compile --universal --generate-hashes:requirements/runtime.txt(31 packages): what the image shipsrequirements/dev.txt(71 packages): runtime plus thetestanddevextrasThe Dockerfile installs
runtime.txtwheels-only with--require-hashes, thenthe project with
--no-depsandpip check. Every CI gate installs from thelock the same way. gate2 now fails when
pyproject.tomlandrequirements/drift (extras included, runtime pins equal in both files), and gate5 imports
the app from the runtime lock alone.
DEVELOPMENT.mddocuments regeneration.Depends on #103. This branch starts from it, so until #103 (and #102) merge the
diff also shows their two commits. Paired with the data-pipeline branch of the
same name,
build/lock-python-dependencies. Related: #104.Verified
python:3.12.13-slim-bookwormon linux/arm64 and linux/amd64 (QEMU): bothlocks install wheels-only with
--require-hashes,pip checkis clean, thegate2 lock check passes, and
backtest_engine.api,.workerand.orchestratorimport from the runtime lock alonedocker build --no-cache: builds,pip checkclean; inside it,as user
app,import backtest_engine.api, backtest_engine.workerworks andperl stays purged
requirements/dev.txton linux/arm64: ruff clean; mypy noissues in 74 files; pytest 1415 passed, 6 skipped (CI on build(deps): cap sqlalchemy below 2.2 #103: 1414, plus the
new Dockerfile test), coverage 77.62%; contract tests pass
pip check, the lock check, ruff and mypy passpytestinpyproject.tomlfails the gate2 lock check,bumping
fastapifailspip checkChecklist