Skip to content

build(python): support Python 3.10 - #391

Merged
nachiketb-nvidia merged 2 commits into
mainfrom
build/python-310-support
Aug 12, 2026
Merged

build(python): support Python 3.10#391
nachiketb-nvidia merged 2 commits into
mainfrom
build/python-310-support

Conversation

@nachiketb-nvidia

@nachiketb-nvidia nachiketb-nvidia commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What

Lower the supported Python floor for nemo-switchyard and its native bindings from 3.12 to 3.10.

Why

This makes Switchyard usable by Python 3.10 and 3.11 consumers while retaining one abi3 wheel per platform. Closes #366.

How

  • set requires-python and Python tooling targets to 3.10
  • build the PyO3 extension with abi3-py310
  • test Python 3.10 through 3.14 in CI and release workflows
  • build and smoke-test the minimum-compatible wheel with CPython 3.10
  • update installation guidance and regenerate uv.lock
  • keep the experimental Harbor dependency gated to Python 3.12+

Validation

  • uv run pytest tests/ -v -m "not integration" (134 passed, 2 deselected)
  • uv run ruff check .
  • uv run mypy switchyard switchyard_rust
  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • built nemo_switchyard-0.2.0-cp310-abi3-manylinux_2_34_x86_64.whl
  • verified wheel metadata reports Requires-Python: >=3.10 and imports on CPython 3.10 and 3.12

Summary by CodeRabbit

  • New Features

    • Added support for Python 3.10 and newer, including Python 3.10 and 3.11 compatibility coverage.
    • Updated package compatibility to support the Python 3.10 ABI.
  • Documentation

    • Updated installation instructions, requirements, and release guidance to reference Python 3.10+.
  • Tests

    • Expanded validation across Python 3.10–3.14, including package builds, installation checks, and CLI smoke tests.

Signed-off-by: nachiketb <nachiketb@nvidia.com>
@nachiketb-nvidia
nachiketb-nvidia requested a review from a team as a code owner August 12, 2026 20:07
@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1

🚀 View preview at
https://NVIDIA-NeMo.github.io/Switchyard/pr-preview/pr-391/

Built to branch gh-pages at 2026-08-12 20:24 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

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: Enterprise

Run ID: 5daae6d4-3a4e-46f0-8f84-e2cfd451c97a

📥 Commits

Reviewing files that changed from the base of the PR and between 48b3b71 and c130bcf.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock, !uv.lock
📒 Files selected for processing (13)
  • .github/workflows/ci.yml
  • .github/workflows/package-portability.yml
  • .github/workflows/publish.yml
  • AGENTS.md
  • INSTALLATION.md
  • README.md
  • crates/switchyard-py/Cargo.toml
  • docs/cli_reference.md
  • docs/getting_started.md
  • docs/internal/release_workflow.md
  • pyproject.toml
  • tests/getting_started/test_getting_started.py
  • tests/readme/test_readme.py

Walkthrough

The project now supports Python 3.10 through 3.14. Package metadata, the PyO3 ABI, tooling targets, workflows, release checks, installation instructions, and documentation drift tests were updated.

Changes

Python 3.10 support

Layer / File(s) Summary
Package and ABI baseline
pyproject.toml, crates/switchyard-py/Cargo.toml, AGENTS.md
The minimum Python version, tooling targets, classifiers, and PyO3 ABI feature now target Python 3.10.
CI and release validation
.github/workflows/*, docs/internal/release_workflow.md
Test, portability, publishing, and release workflows now include Python 3.10 and use it for relevant builds and smoke tests.
Installation guidance and drift checks
INSTALLATION.md, README.md, docs/cli_reference.md, docs/getting_started.md, tests/getting_started/test_getting_started.py, tests/readme/test_readme.py
Installation commands and minimum-version statements now specify Python 3.10. Matching documentation drift tests were updated.

Estimated code review effort: 2 (Simple) | ~10 minutes

Poem

I’m a rabbit with a wheel,
Hopping on Python three-ten steel.
Tests and docs now share the way,
ABI blooms from night to day.
Squeak! The builds all pass hooray!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the primary change: adding Python 3.10 support.
Linked Issues check ✅ Passed The changes implement the abi3-py310 floor, Python 3.10 requirements, compatibility CI, release coverage, and updated installation guidance required by issue #366.
Out of Scope Changes check ✅ Passed All reviewed changes support the Python 3.10 compatibility objective and contain no unrelated code changes.

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

Signed-off-by: nachiketb <nachiketb@nvidia.com>

@bhuvan002 bhuvan002 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmarking scripts LGTM!

@nachiketb-nvidia
nachiketb-nvidia merged commit 0151621 into main Aug 12, 2026
22 checks passed
@nachiketb-nvidia
nachiketb-nvidia deleted the build/python-310-support branch August 12, 2026 20:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: lower the wheel's abi3 floor to cp310

3 participants