build: require PyAV >= 17 and cap requires-python below 3.14 - #267
Merged
Merged
Conversation
…hon below 3.14 The release PRs since #265 fail `unittest`: the newly shipped cosmos_framework/data/generator/augmentors/hr_lr_degradation/codec.py calls ``VideoFrame.reformat(threads=...)``, added in PyAV 17, but this repo listed ``av`` without a floor and the lock resolved 16.1.0, so 12 tests raise ``TypeError: reformat() got an unexpected keyword argument 'threads'``. One of them then leaves its thread-count sampler running, so pytest never exits and the job dies at the 60-minute timeout. Mirror what cosmos-framework-private already carries: - ``av>=17,<18; python_version < '3.11'`` and ``av>=18,<19; python_version >= '3.11'`` (private e428840 + #94). PyAV 18 is what the imaginaire4 images ship. - ``requires-python = ">=3.10,<3.14"`` (private #92): without the cap uv 0.12.17 cannot re-resolve this lock at all -- multi-storage-client 0.44.0 has no aarch64 wheel for the Python 3.14 split -- so no dependency change is possible until it lands here too. Verification (uv 0.12.17, the version setup-uv@v7 installs): the untouched tree re-locks byte-for-byte; after the change only ``av`` moves (16.1.0 -> 17.1.0 / 18.1.0), no other (name, version) pair changes; ``uv lock --check`` passes. The remaining lock churn is the dropped 3.14 resolution splits, as in private #92.
lfengad
enabled auto-merge (squash)
September 20, 2026 08:18
lfengad
approved these changes
Sep 20, 2026
lfengad
disabled auto-merge
September 20, 2026 08:28
lfengad
enabled auto-merge (squash)
September 20, 2026 08:29
foreverlms
approved these changes
Sep 20, 2026
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.
Why
Release PRs #265 and #266 fail the
unittestjob and nothing else. The tree they ship now includescosmos_framework/data/generator/augmentors/hr_lr_degradation/codec.py, which callsVideoFrame.reformat(threads=...)(PyAV >= 17). This repo listsavwith no floor and the lock resolved 16.1.0, so 12 codec tests fail withTypeError: reformat() got an unexpected keyword argument 'threads'.degrade_test.py::test_codec_round_trip_bounds_encoder_and_decoder_threadsthen leaves its non-daemon thread-count sampler running (the error is raised beforestop.set()), pytest never exits after printing its summary at ~36 min, and the job is killed at the 60-minute timeout. Same picture on both days.What
Mirror the three constraints
cosmos-framework-privatealready has (suggested by @lfengad):av>=17,<18; python_version < '3.11'av>=18,<19; python_version >= '3.11'(what the imaginaire4 images ship)requires-python = ">=3.10,<3.14"The cap is not optional: without it uv 0.12.17 cannot re-resolve this lock at all (
multi-storage-client 0.44.0has no aarch64 wheel for the Python 3.14 split), so no dependency bump can land here until it does.Verification
setup-uv@v7installs) reproducesmain'suv.lockbyte-for-byte on the untouched tree.(name, version)pairs that move areav 16.1.0 -> 17.1.0 / 18.1.0; every other package is unchanged. The large diff is the dropped 3.14 resolution splits, exactly as in private toml_config: add [job].upload_reproducible_setup, default False for OSS #92.uv lock --checkpasses.Follow-ups (not in this PR)
degrade_test.pyshould be daemon or wrapped intry/finallyso a codec failure can never hang the whole unittest job again; that is an imaginaire4-side change (the file is release-mapped).