Skip to content

Modernize Python builds with uv and scikit-build-core - #2082

Open
jhodges10 wants to merge 3 commits into
AcademySoftwareFoundation:mainfrom
jhodges10:codex/modernize-python-tooling
Open

jhodges10 wants to merge 3 commits into
AcademySoftwareFoundation:mainfrom
jhodges10:codex/modernize-python-tooling

Conversation

@jhodges10

@jhodges10 jhodges10 commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Use uv for reproducible development environments and package builds, and replace the custom setuptools build integration with scikit-build-core. Native compilation continues through the existing CMake project, with standard PEP 517 frontends such as pip supported.

Python 3.9–3.15 support is preserved. VFX Reference Platform builds continue to use the Python interpreter, compiler, and libraries supplied by each ASWF image.

Changes

  • Move package metadata, dependency groups, and coverage configuration into pyproject.toml, with development dependencies pinned in uv.lock.
  • Replace the root setup.py build logic with scikit-build-core. Read the package version from _version.py and update the release helpers to use it.
  • Bundle native dependency sources in source distributions, build wheels from those archives, and verify installed package metadata, native modules, adapters, and console entry points.
  • Update the Makefile, packaging and documentation workflows, Read the Docs configuration, and contributor instructions to use uv.
  • Keep the CY2023–CY2027 CI matrix on its platform-provided toolchains, disable uv-managed Python downloads there, and retain the native MinGW packaging path.

Existing Flake8 rules and Python formatting are retained for this PR.

Validation

  • Native editable build and all 487 existing Python tests passed, with two skips.
  • Source distribution and wheel builds passed, including a wheel built from the source archive and smoke-tested in a clean environment.
  • Flake8, lockfile validation, strict Sphinx documentation, and workflow validation passed.

This remains a draft for cross-platform CI validation. Container checks run in CI; no local emulation was used.

PR stack

  1. This PR: uv and scikit-build-core.
  2. #2090 — Ruff setup and formatting.
  3. #2091 — VFX devcontainer and VS Code development tasks.

Merge in this order, retargeting each follow-up to main after its prerequisite lands and rebasing if needed.

Assisted-by: Codex / GPT-6.1 Sol

@codecov-commenter

codecov-commenter commented Oct 30, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.59%. Comparing base (80c5ff3) to head (6957b8e).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #2082   +/-   ##
=======================================
  Coverage   83.59%   83.59%           
=======================================
  Files         184      185    +1     
  Lines       13632    13633    +1     
  Branches     1271     1271           
=======================================
+ Hits        11395    11396    +1     
  Misses       2064     2064           
  Partials      173      173           
Flag Coverage Δ
py-unittests 83.59% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/py-opentimelineio/opentimelineio/__init__.py 100.00% <100.00%> (ø)
src/py-opentimelineio/opentimelineio/_version.py 100.00% <100.00%> (ø)

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 80c5ff3...6957b8e. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jhodges10 jhodges10 changed the title Modernize Python tooling with uv and Ruff Modernize Python tooling with uv, Ruff, and a VFX devcontainer Oct 30, 2026
@jhodges10 jhodges10 changed the title Modernize Python tooling with uv, Ruff, and a VFX devcontainer Modernize Python tooling with uv, Ruff, and a VFX ref platform-based devcontainer Oct 30, 2026
Signed-off-by: Jeff Hodges <jeff@jeffhq.com>
@jhodges10
jhodges10 force-pushed the codex/modernize-python-tooling branch from 861b7dc to 5c22df3 Compare October 31, 2026 01:04
@jhodges10 jhodges10 changed the title Modernize Python tooling with uv, Ruff, and a VFX ref platform-based devcontainer Modernize Python builds with uv and scikit-build-core Oct 31, 2026
@jhodges10
jhodges10 marked this pull request as ready for review October 31, 2026 01:22
Signed-off-by: Jeff Hodges <jeff@jeffhq.com>
Signed-off-by: Jeff Hodges <jeff@jeffhq.com>
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.

2 participants