Repository navigation
fix(deps): correct minimum versions for supported Python releases - #41706
joshua-berri wants to merge 3 commits into
Conversation
|
bugbot run Please review commit eebc76c for dependency-marker compatibility and regressions across the supported Python versions |
|
@greptileai Please review draft commit eebc76c for dependency-marker correctness and the minimum-install matrix before readiness is considered |
|
@veria-ai Please review commit eebc76c for compatibility regressions in the Python dependency minimums and base installation checks |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
bugbot run Please review current commit 0a87dc6, including the GitHub Actions installation matrix replacing the unexecuted CircleCI additions |
|
@greptileai Please review current commit 0a87dc6, including the GitHub Actions installation matrix and compatibility of the dependency minimums |
|
@veria-ai Please review current commit 0a87dc6, including artifact handling and permissions in the GitHub Actions installation workflow |
|
@greptileai Added exact version comments for every pinned action in c19b5c5; parsed workflow behavior is unchanged. Please confirm resolution |
|
bugbot run Please review c19b5c5, which adds pinned-action version comments without changing parsed workflow behavior or dependency requirements |
|
@veria-ai Please review c19b5c5, which adds pinned-action version comments without changing parsed workflow behavior or dependency requirements |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit c19b5c5. Configure here.
| - uses: ./.github/actions/setup-uv-with-retries | ||
| with: | ||
| version: "0.10.9" | ||
| - run: rustup toolchain install --no-self-update |
There was a problem hiding this comment.
The new workflow runs rustup toolchain install without pinning a specific Rust toolchain or verifying the downloaded artifact's checksum. This violates the repository directive that external tools downloaded in CI must be version-pinned and checksum-verified, so this requirement must be satisfied before merging.
Context Used: CLAUDE.md (source)
There was a problem hiding this comment.
rust-toolchain.toml pins 1.98.0; Rustup verifies SHA-256. Self-updates are disabled. Please reassess, as with the withdrawn finding on #41718
There was a problem hiding this comment.
You're right. rust-toolchain.toml pins Rust 1.98.0, and rustup verifies downloaded components. I withdraw this finding; no workflow change is needed.
|
Closing without merging; core dependency findings are preserved in LIT-8117, assigned to Ryan Crabbe for separate compatibility assessment. |
TLDR
Problem this solves:
How it solves it:
User Flow
Before: a developer installing the declared minimum dependencies cannot use LiteLLM
PydanticSchemaGenerationErrorAfter: the same installation selects compatible minimums
Relevant issues
A prerequisite discovered while testing LIT-7737. Related #39718 raises tiktoken globally to 0.14.0; this change preserves the existing 0.8 minimum below Python 3.14 and does not include that PR's model-mapping changes or replace it
Affected release
Linear ticket
Related to LIT-7737. This prerequisite fixes core dependency metadata; SDK2 isolation and eventual runtime activation are separate work
Pre-Submission checklist
GitHub Actions builds one wheel and shares its artifact across six jobs. The existing seven-check base SDK runner now runs against lowest-direct installs on Python 3.10–3.14, alongside a highest-resolution control. Declaring dependencies directly with
-r pyproject.tomlis necessary: passing only the wheel tolowest-directdoes not minimize its dependenciesLocal
make lintpassed all applicable Ruff, formatting, test-tree, strict-rule, type-discipline, test-quality and basedpyright gates againstdeb9d8ae. The mapped type and token-counter files passed 172 tests; one existing test is explicitly skipped because its implementation is being removedIndependent Devin verification through MCP passed at
c19b5c584708be8ed72e13e3add043b4fb3bc0eb: fresh source builds, five minimum installations, frozen-lock and highest-resolution controls, seven base SDK checks per environment, unsupported-pin rejection, and serialization/token comparisons against baseline. The structured lock comparison found 458 packages with no version or artifact changesCurrent commit
c19b5c584708be8ed72e13e3add043b4fb3bc0ebadds only action-version comments. Parsed workflow behavior is unchanged. Fresh local and independent source-wheel checks pass. All required CI passes; the transient image-download failure passed on retry. Greptile is currently 4/5 with a later Rustup pin/checksum finding awaiting reassessment. The repository pins Rust 1.98.0, and Rustup verifies distribution checksums; evidence is provided in the review thread. Bugbot is clean, and Veria reports no security issues. Codecov is complete with no coverable changed lines; repository-wide coverage is 81.17%Screenshots / Proof of Fix
Use uv 0.10.9 and Rust to build each source revision with
uv build --wheel --out-dir dist. Run each case in a fresh environment from its matching checkout, withWHEELset to its built wheel's absolute path. These are actual wheel installations, not mocked testsBefore (deb9d8a)
Python 3.12 minimum
uv venv /tmp/base-before-312 --python 3.12uv pip install --python /tmp/base-before-312/bin/python --resolution lowest-direct --no-sources -r pyproject.toml "$WHEEL": succeeds, selecting Pydantic 2.10.0 and tiktoken 0.8.0/tmp/base-before-312/bin/python -I tests/base_sdk_tests/check_base_sdk_install.py: exits 1, includingPydanticSchemaGenerationErrorimporting LiteLLMPython 3.14 minimum
uv venv /tmp/base-before-314 --python 3.14uv pip install --python /tmp/base-before-314/bin/python --resolution lowest-direct --no-sources -r pyproject.toml "$WHEEL": exits 1 building an unsupported native dependency; local macOS reports tiktoken's PyO3 Python-version limit, independent Linux verification reports pydantic-core's build failure firstLocked-version control
uv venv /tmp/base-before-control --python 3.12uv pip install --python /tmp/base-before-control/bin/python "$WHEEL" pydantic==2.13.4 tiktoken==0.12.0: succeeds/tmp/base-before-control/bin/python -I tests/base_sdk_tests/check_base_sdk_install.py: all seven checks passAfter (c19b5c5)
Python 3.12 minimum
uv venv /tmp/base-after-312 --python 3.12uv pip install --python /tmp/base-after-312/bin/python --resolution lowest-direct --no-sources -r pyproject.toml "$WHEEL": succeeds, selecting Pydantic 2.11.0 and tiktoken 0.8.0/tmp/base-after-312/bin/python -I tests/base_sdk_tests/check_base_sdk_install.py: all seven checks passPython 3.14 minimum
uv venv /tmp/base-after-314 --python 3.14uv pip install --python /tmp/base-after-314/bin/python --resolution lowest-direct --no-sources -r pyproject.toml "$WHEEL": succeeds with Pydantic 2.12.0 and tiktoken 0.12.0; the same seven-check base SDK command passesLocked-version control
uv venv /tmp/base-after-control --python 3.12uv pip install --python /tmp/base-after-control/bin/python "$WHEEL" pydantic==2.13.4 tiktoken==0.12.0: succeeds/tmp/base-after-control/bin/python -I tests/base_sdk_tests/check_base_sdk_install.py: all seven checks passType
Bug Fix, Test
Caveats (if any)
Low
Final Attestation