Skip to content

Pins Python version to 3.12 across all packages#5213

Merged
AntoineRichard merged 6 commits intodevelopfrom
antoiner/python-3.12-explicit
Apr 14, 2026
Merged

Pins Python version to 3.12 across all packages#5213
AntoineRichard merged 6 commits intodevelopfrom
antoiner/python-3.12-explicit

Conversation

@AntoineRichard
Copy link
Copy Markdown
Collaborator

Description

Pins Python version to 3.12 across all packages

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

Isaac Sim 6.x requires Python 3.12. The previous python_requires
constraints (>=3.10, >=3.11) and mixed classifiers were ambiguous.
This aligns all setup.py files, the extension template, CI workflows,
and documentation to require Python 3.12 explicitly.
@github-actions github-actions Bot added documentation Improvements or additions to documentation asset New asset feature or request isaac-mimic Related to Isaac Mimic team infrastructure labels Apr 9, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 9, 2026

Greptile Summary

This PR pins python_requires=">=3.12" and updates the Programming Language :: Python :: 3.12 classifier across all 15 setup.py files and the template, and sets Python 3.12 explicitly in the license-check.yaml workflow.

  • The CHANGELOG.rst and config/extension.toml version strings were not updated for any of the 11+ affected source packages, which is required by the project guidelines for every change targeting the source directory.

Confidence Score: 4/5

Safe to merge once CHANGELOG entries and extension.toml version bumps are added for each affected source package.

The version pin itself is correct and consistent across all packages. Score is 4 rather than 5 because the project's own guidelines (AGENTS.md) require a CHANGELOG update and version bump for every source change, and neither was done for any of the 11+ affected packages.

source/isaaclab/setup.py (representative of all 11 source packages missing changelog entries); source/isaaclab_rl/setup.py (rl-games python3.11 branch reference); source/isaaclab_contrib/setup.py (stale Isaac Sim classifiers)

Vulnerabilities

No security concerns identified.

Important Files Changed

Filename Overview
source/isaaclab/setup.py Pins python_requires to >=3.12 and updates Python 3.12 classifier; no CHANGELOG or extension.toml version bump included.
source/isaaclab_rl/setup.py Pins python_requires to >=3.12; rl-games extra still references the upstream python3.11 branch which may need verification for 3.12 compatibility.
source/isaaclab_contrib/setup.py Pins python_requires to >=3.12, but classifiers still list Isaac Sim 4.5.0/5.0.0 rather than 5.0.0/5.1.0/6.0.0 as in all other packages.
.github/workflows/license-check.yaml Adds explicit python-version: '3.12' to the setup-python step; all other workflow changes are consistent with the PR goal.
tools/template/templates/extension/setup.py Template setup.py updated to python_requires >=3.12 and Python 3.12 classifier; changes are consistent and complete.
docs/source/how-to/haply_teleoperation.rst System requirements section updated to reference Python 3.12+, consistent with the new python_requires pin.
source/isaaclab_assets/setup.py Straightforward pin to python_requires >=3.12 with updated classifier; no issues.
source/isaaclab_mimic/setup.py Pins python_requires to >=3.12 with updated classifier; no issues.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    PR["PR: Pin Python to 3.12"] --> SETUP["15 setup.py files\npython_requires='>=3.12'\nclassifier: Python :: 3.12"]
    PR --> CI[".github/workflows/license-check.yaml\npython-version: '3.12'"]
    PR --> DOCS["docs/haply_teleoperation.rst\nPython 3.12+ requirement noted"]
    PR --> TMPL["tools/template/templates/extension/setup.py\npython_requires='>=3.12'"]

    SETUP --> PKG1["isaaclab"]
    SETUP --> PKG2["isaaclab_assets"]
    SETUP --> PKG3["isaaclab_rl\n⚠ rl-games@python3.11 branch"]
    SETUP --> PKG4["isaaclab_contrib\n⚠ stale Isaac Sim classifiers"]
    SETUP --> PKG5["isaaclab_physx / isaaclab_newton\nisaaclab_tasks / isaaclab_teleop\nisaaclab_mimic / isaaclab_ov\nisaaclab_experimental\nisaaclab_visualizers\nisaaclab_tasks_experimental"]

    SETUP -.->|"⚠ Missing"| CHANGELOG["CHANGELOG.rst updates\n+ extension.toml version bumps\n(required by project guidelines)"]
Loading

Comments Outside Diff (3)

  1. source/isaaclab/setup.py, line 1-5 (link)

    P1 Missing CHANGELOG and version bump

    The project guidelines (AGENTS.md) require updating CHANGELOG.rst and bumping config/extension.toml for every change targeting a source package. This PR modifies setup.py in at least 11 source packages (isaaclab, isaaclab_assets, isaaclab_contrib, isaaclab_experimental, isaaclab_mimic, isaaclab_newton, isaaclab_ov, isaaclab_physx, isaaclab_rl, isaaclab_tasks, isaaclab_teleop) but none of their changelogs or extension.toml version strings were updated. For example, source/isaaclab/docs/CHANGELOG.rst is currently at version 4.5.27 — a new entry like the following should be added under a new version heading:

    4.5.28 (2026-04-09)
    ~~~~~~~~~~~~~~~~~~~
    
    Changed
    ^^^^^^^
    
    * Pinned ``python_requires`` to ``>=3.12`` and updated Python classifier to 3.12.

    And source/isaaclab/config/extension.toml should have its version field bumped to 4.5.28 to match. The same pattern applies to each affected package.

  2. source/isaaclab_rl/setup.py, line 47 (link)

    P2 rl-games dependency references a python3.11 branch

    The rl-games extra still points to the python3.11 git branch. While the branch name alone does not prevent installation on Python 3.12, it's worth verifying that this branch is actually compatible with Python 3.12 now that the minimum version has been raised. If a python3.12 branch or a tagged release supporting 3.12 is available upstream, this reference should be updated.

  3. source/isaaclab_contrib/setup.py, line 56-61 (link)

    P2 Stale Isaac Sim classifiers

    isaaclab_contrib still lists "Isaac Sim :: 4.5.0" and only "Isaac Sim :: 5.0.0", while all other packages in this PR were updated to 5.0.0, 5.1.0, 6.0.0. If this is intentional (e.g. isaaclab_contrib has a different support lifecycle), it should be documented; otherwise the classifiers should be aligned with the rest of the project.

Reviews (1): Last reviewed commit: "Pin Python version to 3.12 across all pa..." | Re-trigger Greptile

Copy link
Copy Markdown

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Choose a reason for hiding this comment

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

Thanks for the cleanup, Antoine! Pinning to 3.12 makes sense given Isaac Sim 6.x, but there are a few issues to address before this can merge.

CI is broken: The license-check workflow now uses Python 3.12 but still tries to install isaacsim==5.1.0, which only publishes wheels for Python 3.11. This causes the job to fail with No matching distribution found. The ISAACSIM_BASE_VERSION repo variable (or its 5.1.0 default) needs to be updated to a version that supports 3.12 (e.g., 6.0.0), or the workflow should be adjusted accordingly.

Inconsistent classifiers: Several setup.py files still list Isaac Sim :: 5.0.0 and Isaac Sim :: 5.1.0 in their classifiers, but those Isaac Sim versions require Python 3.11. Since python_requires is now >=3.12, these packages can never actually be installed alongside Isaac Sim 5.x. The classifiers should be cleaned up to only list Isaac Sim versions compatible with Python 3.12.

isaaclab_contrib inconsistency: The contrib package's classifiers were changed from 3.10 + 3.11 to just 3.12, but it still lists Isaac Sim :: 4.5.0 (Python 3.10) and Isaac Sim :: 5.0.0 (Python 3.11) — neither of which can work with python_requires>=3.12. If contrib isn't supporting Isaac Sim 6.x yet, it may need separate handling.

Otherwise the mechanical changes (bumping python_requires and removing stale classifiers) look correct and consistent across all packages. Just needs the CI fix and classifier cleanup.

Comment thread .github/workflows/license-check.yaml
Comment thread source/isaaclab/setup.py
Comment thread source/isaaclab_contrib/setup.py
Isaac Sim 4.x and 5.x ship Python 3.10/3.11 which no longer satisfy
the python_requires>=3.12 constraint. Remove stale classifiers so
packages consistently declare Isaac Sim 6.0.0 only.
@AntoineRichard
Copy link
Copy Markdown
Collaborator Author

Thanks for the cleanup, Antoine! Pinning to 3.12 makes sense given Isaac Sim 6.x, but there are a few issues to address before this can merge.

CI is broken: The license-check workflow now uses Python 3.12 but still tries to install isaacsim==5.1.0, which only publishes wheels for Python 3.11. This causes the job to fail with No matching distribution found. The ISAACSIM_BASE_VERSION repo variable (or its 5.1.0 default) needs to be updated to a version that supports 3.12 (e.g., 6.0.0), or the workflow should be adjusted accordingly.

Inconsistent classifiers: Several setup.py files still list Isaac Sim :: 5.0.0 and Isaac Sim :: 5.1.0 in their classifiers, but those Isaac Sim versions require Python 3.11. Since python_requires is now >=3.12, these packages can never actually be installed alongside Isaac Sim 5.x. The classifiers should be cleaned up to only list Isaac Sim versions compatible with Python 3.12.

isaaclab_contrib inconsistency: The contrib package's classifiers were changed from 3.10 + 3.11 to just 3.12, but it still lists Isaac Sim :: 4.5.0 (Python 3.10) and Isaac Sim :: 5.0.0 (Python 3.11) — neither of which can work with python_requires>=3.12. If contrib isn't supporting Isaac Sim 6.x yet, it may need separate handling.

Otherwise the mechanical changes (bumping python_requires and removing stale classifiers) look correct and consistent across all packages. Just needs the CI fix and classifier cleanup.

Can you review again?

Copy link
Copy Markdown

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Summary

This PR pins python_requires to >=3.12 and removes stale Python 3.10/3.11 and Isaac Sim 4.x/5.x classifiers across all 14 packages, the extension template, the license-check CI workflow, and one documentation file. The motivation is sound: Isaac Sim 6.x ships Python 3.12, so the older constraints were misleading. The changes are consistent and well-scoped, with one CI-breaking issue that needs attention.

Design Assessment

Design is sound. This is the right approach — centralizing the Python version constraint to match the Isaac Sim 6.x requirement eliminates confusion for downstream users and contributors. Using >=3.12 (rather than ==3.12) is a good choice: it correctly enforces the minimum while still permitting future Python 3.13+ if Isaac Sim supports it. Dropping the Isaac Sim 4.x/5.x classifiers is also correct since those versions ship incompatible Python runtimes.

Findings

🔴 Critical: CI license-check workflow fails — isaacsim version incompatible with Python 3.12.github/workflows/license-check.yaml

The Python version was correctly updated to 3.12 (line 55), but the install step on line 64 still defaults to isaacsim[all,extscache]==5.1.0 via ${{ vars.ISAACSIM_BASE_VERSION || '5.1.0' }}. Isaac Sim 5.1.0 declares Requires-Python ==3.11.*, so pip install fails immediately on Python 3.12:

ERROR: Could not find a version that satisfies the requirement isaacsim==5.1.0
ERROR: No matching distribution found for isaacsim==5.1.0

This is confirmed by the failing CI run. The fallback version needs to be updated to 6.0.0 to match the other workflows (e.g., build.yaml already defaults to 6.0.0). On line 64, change:

pip install 'isaacsim[all,extscache]==${{ vars.ISAACSIM_BASE_VERSION || '5.1.0' }}' --extra-index-url https://pypi.nvidia.com

to:

pip install 'isaacsim[all,extscache]==${{ vars.ISAACSIM_BASE_VERSION || '6.0.0' }}' --extra-index-url https://pypi.nvidia.com

🟡 Warning: PR checklist claims CHANGELOG and extension.toml version updates, but none are present in the diff

The PR checklist states: "I have updated the changelog and the corresponding version in the extension's config/extension.toml file." However, no CHANGELOG.rst or extension.toml files appear in the 16 changed files. Since this is a metadata-only change (no runtime behavior change), a CHANGELOG entry may not be strictly necessary — but the checklist should accurately reflect what was done. If the project convention requires CHANGELOG entries for python_requires changes, one should be added; otherwise, consider unchecking that box.

Test Coverage

This is a metadata-only change — no runtime Python code, tensor operations, or simulation logic was modified. All changes affect setup.py packaging metadata (python_requires and classifiers), one CI workflow, one documentation file, and the extension template.

No new tests are needed. The correctness of these changes is validated by:

  • Successful package installation (pip install respects python_requires)
  • CI pipeline execution (currently blocked by the isaacsim version mismatch noted above)
  • Pre-commit checks (passing ✅)

CI Status

Check Status
license-check FAILisaacsim==5.1.0 incompatible with Python 3.12 (see Critical finding)
pre-commit ✅ Pass
labeler ✅ Pass
Check for Broken Links ✅ Pass
Detect Changes ✅ Pass
Build Base Docker Image ⏳ Pending
Build Latest Docs ⏳ Pending

Verdict

COMMENT

Clean, well-scoped change that correctly aligns Python version constraints with Isaac Sim 6.x requirements. The one blocking issue is the license-check.yaml workflow's hardcoded isaacsim==5.1.0 fallback, which must be updated to 6.0.0 to unblock CI. Once that's fixed, this should be ready to merge.

uses: actions/setup-python@v5
with:
python-version: '3.11' # Adjust as needed
python-version: '3.12'
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔴 Critical: Updating Python to 3.12 here is correct, but line 64 below still defaults to isaacsim==5.1.0 (via the ${{ vars.ISAACSIM_BASE_VERSION || '5.1.0' }} fallback). Isaac Sim 5.1.0 declares Requires-Python ==3.11.*, which is now incompatible — this is the cause of the current CI failure.

The fallback on line 64 needs to be updated from '5.1.0' to '6.0.0' to match build.yaml and the rest of this PR's intent.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Can you review again and approve if it works for you?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Looks good — the fallback version on line 64 is now 6.0.0, which resolves the Python 3.12 incompatibility I flagged. Thanks for the fix! 👍

Note: As a bot, I post reviews as comments only. A human maintainer will still need to provide the final approval.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Well if you can request changes surely you can approve.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Looks good — the fallback version on line 64 is now 6.0.0, which resolves the Python 3.12 incompatibility I flagged. Thanks for the fix! 👍

Note: As a bot, I post reviews as comments only. A human maintainer will still need to provide the final approval.

How come you can request changes and not approve. The PR is all green you just need to approve.

The license-check workflow uses Python 3.12 but the isaacsim fallback
was still pinned to 5.1.0, which only has wheels for Python 3.11.
Update the default to 6.0.0 to match the rest of the PR.
Update license strings for aiohappyeyeballs, typing_extensions, and
usd-core which changed in newer package versions. Add missing entries
for isaaclab_tasks_experimental and osqp.
@isaaclab-review-bot isaaclab-review-bot Bot dismissed their stale review April 13, 2026 20:54

Dismissing outdated request-changes review. Issues have been addressed in subsequent commits. Bot policy updated to only post COMMENT reviews going forward.

@AntoineRichard AntoineRichard merged commit 447b4a4 into develop Apr 14, 2026
6 checks passed
@AntoineRichard AntoineRichard deleted the antoiner/python-3.12-explicit branch April 14, 2026 06:53
nvsekkin added a commit to nvsekkin/IsaacLab that referenced this pull request Apr 14, 2026
@greptile-apps greptile-apps Bot mentioned this pull request Apr 14, 2026
7 tasks
nvsekkin added a commit to nvsekkin/IsaacLab that referenced this pull request Apr 14, 2026
nvsekkin added a commit to nvsekkin/IsaacLab that referenced this pull request Apr 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

asset New asset feature or request documentation Improvements or additions to documentation infrastructure isaac-mimic Related to Isaac Mimic team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants