Skip to content

chore: cap requires-python at <3.14 across workspace#573

Merged
aliev merged 2 commits into
mainfrom
chore/cap-python-3.14
May 21, 2026
Merged

chore: cap requires-python at <3.14 across workspace#573
aliev merged 2 commits into
mainfrom
chore/cap-python-3.14

Conversation

@aliev
Copy link
Copy Markdown
Member

@aliev aliev commented May 21, 2026

Why

Trying uvx vision-agents on a machine where Python 3.14 is the newest installed interpreter currently fails: uv picks 3.14, scipy 1.15.3 has no cp314 wheels for macOS arm64, and the resulting source build needs a Fortran compiler:

× Failed to build `scipy==1.15.3`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `mesonpy.build_wheel` failed (exit status: 1)
  ...
  ../meson.build:80:0: ERROR: Unknown compiler(s): [['gfortran'], ['flang-new'], ...]
help: `scipy` (v1.15.3) was included because `vision-agents` (v0.6.1) depends on
      `getstream[webrtc]` (v3.3.4) which depends on `scipy`

scipy arrives transitively through getstream[webrtc], so we cannot easily fix the wheel coverage from our side. The workspace also only advertises support for 3.11/3.12/3.13 via trove classifiers in agents-core/pyproject.toml, so admitting 3.14 was unintentional.

Changes

  • Add <3.14 upper bound to requires-python in every workspace member (agents-core + all plugins + their example/ projects).
  • Regenerate uv.lock.

With this, uvx vision-agents will pick a compatible interpreter automatically (3.10-3.13) instead of falling into the scipy source build. We can bump the cap once upstream wheels (and our own trove classifiers) cover 3.14.

Python 3.14 has no scipy 1.15.3 wheels for macOS arm64, so uvx
falls through to a source build that needs gfortran and fails.
Capping the workspace at <3.14 makes uv pick a compatible
interpreter (3.10-3.13) instead.
@aliev aliev marked this pull request as ready for review May 21, 2026 08:43
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 21, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: cb82b60a-4839-4c7e-80e9-7ec62d57907e

📥 Commits

Reviewing files that changed from the base of the PR and between 02acd84 and a3cb89b.

📒 Files selected for processing (1)
  • agents-core/vision_agents/cli/init/templates/pyproject.toml.j2
✅ Files skipped from review due to trivial changes (1)
  • agents-core/vision_agents/cli/init/templates/pyproject.toml.j2

📝 Walkthrough

Walkthrough

This PR adds an upper bound <3.14 to requires-python across manifests and templates, restricting declared Python support to versions below 3.14. Changes appear in core, plugins, examples, and a template; a few files include minor whitespace or dependency-group span edits.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

The init scaffold produced new projects with `requires-python = ">=3.10"`,
inheriting the same Python 3.14 / scipy wheel problem the rest of the
workspace just fixed.
@aliev aliev merged commit a57ab63 into main May 21, 2026
6 checks passed
@aliev aliev deleted the chore/cap-python-3.14 branch May 21, 2026 09:41
aliev added a commit that referenced this pull request May 25, 2026
…CI (#582)

* chore: declare Python 3.14 support and add per-version compat CI

Lifts the `<3.14` cap added in #573 from `agents-core` and every plugin
except `kokoro` and `smart_turn` (both pin `numpy<2.3`, which conflicts
with the `numpy>=2.3.2` `getstream[webrtc]` carries on 3.14). The
workspace temporarily sources `getstream` from a `main` commit until a
release containing GetStream/stream-py#253 lands
on PyPI.

`smart_turn` and `vogent` had their `requires-python` raised to
`>=3.11` — both depend on `onnxruntime>=1.24.3`, which has no `cp310`
wheels, so the previous `>=3.10` metadata was broken.

Adds `dev.py check-python-versions <ver>` and a matching
`.github/workflows/python-versions.yml` matrix (3.10–3.14). For every
workspace member it resolves `pyproject.toml` from a tmpdir (so
workspace `override-dependencies` don't mask the install path real
users see) and skips members whose `requires-python` excludes the
target. This is what caught the `smart_turn`/`vogent` 3.10 regression.

* chore(vogent): cap requires-python at <3.14

`vogent-turn==0.1.1` pulls `onnxruntime-gpu==1.22.*` on Linux/Windows
x86_64, and that has no `cp314` wheels. The new compat CI caught this
on Ubuntu — the macOS local run had missed it because the platform
marker `(platform_machine == 'x86_64' and sys_platform == 'linux') or
(platform_machine == 'x86_64' and sys_platform == 'win32')` excludes
macOS arm64 from the `onnxruntime-gpu` dependency.

* chore: address CodeRabbit feedback

* CHANGELOG: add (#582) to the Python 3.14 support and the
  `smart_turn`/`vogent` `requires-python` fix headings, matching the
  existing per-entry PR-reference convention.
* Examples that depend on the now-3.11+ `smart_turn` or `vogent` plugins
  (pocket, inworld, openrouter, moondream, elevenlabs, fast_whisper,
  fish, mistral, examples/01_simple_agent_example) had their own
  `requires-python` floors raised so their metadata reflects what
  actually installs.

Skipped: the suggestion to pin `actions/checkout` to a full commit SHA
and set `persist-credentials: false`. The other workflows in the repo
(`ci.yml`, `run_tests.yml`, `daily.yml`) all use `@v6` with default
credential handling, and matching that pattern is more valuable here
than a workflow-only deviation.

* chore: bump getstream to >=3.4.0 and drop temporary git pin

`getstream` 3.4.0 is on PyPI now (the first release that includes the
Python 3.14 wheel-availability fix from
GetStream/stream-py#253), so the temporary
`[tool.uv.sources]` git pin against a `main` commit is no longer needed.

* Drop the `getstream = { git = ... }` source override in the root
  `pyproject.toml`.
* Raise the lower bound to `>=3.4.0` in `agents-core` and the
  `getstream` plugin (3.3.4 cannot install on 3.14).
* Regenerate `uv.lock` (now resolves `getstream` from PyPI).
* Trim the matching paragraph in `CHANGELOG.md` so it no longer
  mentions a temporary pin.

* chore(ci): rename "Python compat" workflow to "Python compatibility check"

`Python compat` was ambiguous out of context — could read as a feature
claim rather than a CI gate. Renaming the workflow (and its
`concurrency` group) makes it clear at a glance that the job verifies
dependency resolution across Python versions.
aliev added a commit that referenced this pull request May 25, 2026
#573 (Python 3.14 cap) and #582 (Python 3.14 support + smart_turn/vogent
requires-python bump) both happened between v0.6.1 and v0.6.2. The net
user-visible change in v0.6.2 is "Python 3.14 now works", so the
intermediate cap is dropped from the changelog and the #582 entries are
folded in instead — feature under New Features, the smart_turn/vogent
metadata fix under Bug Fixes alongside the packaging fix.

Also picks up entries that landed on main and were missing from this
PR:

- #581 (Richer `vision-agents init` scaffold) — tests/, Dockerfile, and
  the simpler `uv run agent.py run` invocation.
- #583 (Gemini default model bump) — `gemini-3.1-flash-lite-preview`
  was decommissioned; replaced with `gemini-flash-lite-latest`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants