267 lines
8.3 KiB
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"
|