go2Demo/pyproject.toml

267 lines
8.3 KiB
TOML

# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
[project]
name = "isaaclab-dev"
version = "0.1.0"
description = "Isaac Lab source checkout development environment."
requires-python = ">=3.12,<3.13"
dependencies = [
"isaaclab",
"isaaclab-assets",
"isaaclab-contrib",
"isaaclab-experimental",
"isaaclab-newton[all]",
"isaaclab-ov",
"isaaclab-ovphysx",
"isaaclab-physx[newton]",
"isaaclab-ppisp",
"isaaclab-rl[rsl-rl]",
"isaaclab-tasks",
"isaaclab-tasks-experimental",
"isaaclab-visualizers",
"torch==2.10.0",
"torchaudio==2.10.0",
"torchvision==0.25.0",
]
[project.optional-dependencies]
contrib = [
"isaaclab-contrib",
]
mimic = [
"isaaclab-mimic",
]
newton = [
"isaaclab-newton[all]",
"isaaclab-physx[newton]",
"isaaclab-visualizers[newton]",
]
ov = [
"isaaclab-ovphysx[ovphysx]",
]
rl = [
"isaaclab-rl[rsl-rl]",
]
rl-all = [
"isaaclab-rl[all]",
]
rtx = [
"isaaclab-ov[ovrtx]",
]
all = [
"isaaclab-mimic",
"isaaclab-newton[all]",
"isaaclab-physx[newton]",
"isaaclab-rl[all]",
"isaaclab-visualizers[all]",
]
[tool.ruff]
line-length = 120
target-version = "py310"
# Exclude directories
extend-exclude = [
"logs",
"_isaac_sim",
".vscode",
"_*",
".git",
]
[tool.ruff.lint]
# Enable flake8 rules and other useful ones
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
"C90", # mccabe complexity
# "D", # pydocstyle
"SIM", # flake8-simplify
"RET", # flake8-return
]
# Ignore specific rules (matching your flake8 config)
ignore = [
"E402", # Module level import not at top of file
"D401", # First line should be in imperative mood
"RET504", # Unnecessary variable assignment before return statement
"RET505", # Unnecessary elif after return statement
"SIM102", # Use a single if-statement instead of nested if-statements
"SIM103", # Return the negated condition directly
"SIM108", # Use ternary operator instead of if-else statement
"SIM117", # Merge with statements for context managers
"SIM118", # Use {key} in {dict} instead of {key} in {dict}.keys()
"UP006", # Use 'dict' instead of 'Dict' type annotation
"UP018", # Unnecessary `float` call (rewrite as a literal)
]
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"] # Allow unused imports in __init__.py files
[tool.ruff.lint.mccabe]
max-complexity = 30
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.isort]
# Custom import sections with separate sections for each Isaac Lab extension
section-order = [
"future",
"standard-library",
"third-party",
# Group omniverse extensions separately since they are run-time dependencies
# which are pulled in by Isaac Lab extensions
"omniverse-extensions",
# Group Isaac Lab extensions together since they are all part of the Isaac Lab project
"isaaclab",
"isaaclab-contrib",
"isaaclab-rl",
"isaaclab-mimic",
"isaaclab-tasks",
"isaaclab-assets",
# First-party is reserved for project templates
"first-party",
"local-folder",
]
[tool.ruff.lint.isort.sections]
# Define what belongs in each custom section
"omniverse-extensions" = [
"isaacsim",
"omni",
"pxr",
"carb",
"usdrt",
"Semantics",
"curobo",
]
"isaaclab" = ["isaaclab"]
"isaaclab-assets" = ["isaaclab_assets"]
"isaaclab-contrib" = ["isaaclab_contrib"]
"isaaclab-rl" = ["isaaclab_rl"]
"isaaclab-mimic" = ["isaaclab_mimic"]
"isaaclab-tasks" = ["isaaclab_tasks"]
[tool.ruff.format]
docstring-code-format = true
[tool.pyright]
include = ["source", "scripts"]
exclude = [
"**/__pycache__",
"**/_isaac_sim",
"**/docs",
"**/logs",
".git",
".vscode",
]
typeCheckingMode = "basic"
pythonVersion = "3.12"
pythonPlatform = "Linux"
enableTypeIgnoreComments = true
# This is required as the CI pre-commit does not download the module (i.e. numpy, torch, prettytable)
# Therefore, we have to ignore missing imports
reportMissingImports = "none"
# This is required to ignore for type checks of modules with stubs missing.
reportMissingModuleSource = "none" # -> most common: prettytable in mdp managers
reportGeneralTypeIssues = "none" # -> raises 218 errors (usage of literal MISSING in dataclasses)
reportOptionalMemberAccess = "warning" # -> raises 8 errors
reportPrivateUsage = "warning"
[tool.codespell]
skip = '*.usd,*.usda,*.usdz,*.svg,*.png,_isaac_sim*,*.bib,*.css,*/_build'
quiet-level = 0
# the world list should always have words in lower case
ignore-words-list = "haa,slq,collapsable,buss,reacher,thirdparty,segway"
[tool.pytest.ini_options]
markers = [
"isaacsim_ci: mark test to run in isaacsim ci",
]
# Add pypi.nvidia.com so that `uv pip install isaaclab[isaacsim]` works without --extra-index-url.
# Pip still needs "--extra-index-url https://pypi.nvidia.com".
[[tool.uv.index]]
url = "https://pypi.nvidia.com"
explicit = false
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
[[tool.uv.index]]
name = "pytorch-cu130"
url = "https://download.pytorch.org/whl/cu130"
explicit = true
# Some NVIDIA-hosted dependencies have mismatched versions across pypi.nvidia.com
# and PyPI. unsafe-best-match lets uv resolve the correct version from any index,
# and prerelease=allow covers packages that only publish pre-release wheels.
[tool.uv]
index-strategy = "unsafe-best-match"
prerelease = "allow"
override-dependencies = ["numpy>=2"]
python-preference = "only-managed"
package = false
[tool.uv.sources]
isaaclab = { path = "source/isaaclab", editable = true }
"isaaclab-assets" = { path = "source/isaaclab_assets", editable = true }
"isaaclab-contrib" = { path = "source/isaaclab_contrib", editable = true }
"isaaclab-experimental" = { path = "source/isaaclab_experimental", editable = true }
"isaaclab-mimic" = { path = "source/isaaclab_mimic", editable = true }
"isaaclab-newton" = { path = "source/isaaclab_newton", editable = true }
"isaaclab-ov" = { path = "source/isaaclab_ov", editable = true }
"isaaclab-ovphysx" = { path = "source/isaaclab_ovphysx", editable = true }
"isaaclab-physx" = { path = "source/isaaclab_physx", editable = true }
"isaaclab-ppisp" = { path = "source/isaaclab_ppisp", editable = true }
"isaaclab-rl" = { path = "source/isaaclab_rl", editable = true }
"isaaclab-tasks" = { path = "source/isaaclab_tasks", editable = true }
"isaaclab-tasks-experimental" = { path = "source/isaaclab_tasks_experimental", editable = true }
"isaaclab-teleop" = { path = "source/isaaclab_teleop", editable = true }
"isaaclab-visualizers" = { path = "source/isaaclab_visualizers", editable = true }
torch = [
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' and platform_machine == 'x86_64'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' and platform_machine == 'AMD64'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'win32'" },
{ index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'aarch64'" },
{ index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'arm64'" },
]
torchaudio = [
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' and platform_machine == 'x86_64'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' and platform_machine == 'AMD64'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'win32'" },
{ index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'aarch64'" },
{ index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'arm64'" },
]
torchvision = [
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' and platform_machine == 'x86_64'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' and platform_machine == 'AMD64'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'win32'" },
{ index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'aarch64'" },
{ index = "pytorch-cu130", marker = "sys_platform == 'linux' and platform_machine == 'arm64'" },
]
[tool.uv.pip]
index-strategy = "unsafe-best-match"
prerelease = "allow"