Pins Python version to 3.12 across all packages#5213
Conversation
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.
Greptile SummaryThis PR pins
Confidence Score: 4/5Safe 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)
|
| 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)"]
Comments Outside Diff (3)
-
source/isaaclab/setup.py, line 1-5 (link)Missing CHANGELOG and version bump
The project guidelines (AGENTS.md) require updating
CHANGELOG.rstand bumpingconfig/extension.tomlfor every change targeting a source package. This PR modifiessetup.pyin 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 orextension.tomlversion strings were updated. For example,source/isaaclab/docs/CHANGELOG.rstis currently at version4.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.tomlshould have itsversionfield bumped to4.5.28to match. The same pattern applies to each affected package. -
source/isaaclab_rl/setup.py, line 47 (link)rl-gamesdependency references apython3.11branchThe
rl-gamesextra still points to thepython3.11git 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 apython3.12branch or a tagged release supporting 3.12 is available upstream, this reference should be updated. -
source/isaaclab_contrib/setup.py, line 56-61 (link)isaaclab_contribstill lists"Isaac Sim :: 4.5.0"and only"Isaac Sim :: 5.0.0", while all other packages in this PR were updated to5.0.0, 5.1.0, 6.0.0. If this is intentional (e.g.isaaclab_contribhas 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
There was a problem hiding this comment.
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.
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.
Can you review again? |
There was a problem hiding this comment.
🤖 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 installrespectspython_requires) - CI pipeline execution (currently blocked by the isaacsim version mismatch noted above)
- Pre-commit checks (passing ✅)
CI Status
| Check | Status |
|---|---|
| license-check | ❌ FAIL — isaacsim==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' |
There was a problem hiding this comment.
🔴 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.
There was a problem hiding this comment.
Can you review again and approve if it works for you?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Well if you can request changes surely you can approve.
There was a problem hiding this comment.
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.
Dismissing outdated request-changes review. Issues have been addressed in subsequent commits. Bot policy updated to only post COMMENT reviews going forward.
…)" This reverts commit 447b4a4.
…)" This reverts commit 447b4a4.
)" This reverts commit 89dd05f.
Description
Pins Python version to 3.12 across all packages
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there