# Thor platform pyproject.toml — Jetson AGX Thor (aarch64, CUDA 13, Python 3.12) # This is a self-contained config with no platform markers needed. [build-system] requires = ["setuptools>=67", "wheel", "pip"] build-backend = "setuptools.build_meta" [project] name = "gr00t" version = "0.1.0" requires-python = ">=3.12,<3.13" dependencies = [ "albumentations==1.4.18", "av==16.1.0", "diffusers==0.36.0.dev0", "dm-tree==0.1.8", "lmdb==1.7.5", "msgpack==1.1.0", "msgpack-numpy==0.4.8", "pandas==2.2.3", "peft==0.17.1", "termcolor==3.2.0", "torch==2.10.0", "triton==3.5.0", "torchvision==0.25.0", "transformers==4.57.6", "tyro==0.9.17", "click==8.1.8", "datasets==3.6.0", "cryptography>=44.0.0", "einops==0.8.1", "gitpython==3.1.46", "gymnasium==1.2.2", "matplotlib==3.10.1", "numpy==1.26.4", "omegaconf==2.3.0", "scipy==1.15.3", "wandb==0.23.0", "pyzmq==27.0.1", "torchcodec==0.10.0", # Keep these as direct pins: the Jetson Thor torch wheel does not bundle these runtime libs, # and we want them installed even if torch's transitive dependency metadata changes upstream. # Revisit if the Jetson AI Lab torch packages start vendoring them or declaring them reliably. "nvidia-cudnn-cu13", "nvidia-cudss-cu13", "flash-attn==2.8.4", "onnx>=1.20.0", "onnxscript", "tensorrt>=10.14.1.48.post1", ] [project.optional-dependencies] dev = [ "ruff", "ipython", "pytest", "pytest-timeout", "build", "pre-commit", ] [tool.setuptools.packages.find] where = ["."] include = ["gr00t*"] [tool.uv] [tool.uv.extra-build-dependencies] flash-attn = ["torch==2.10.0", "numpy==1.26.4", "triton==3.5.0"] [tool.uv.sources] torch = [{ index = "jetson-sbsa-cu130" }] torchvision = [{ index = "jetson-sbsa-cu130" }] torchcodec = [{ index = "jetson-sbsa-cu130" }] triton = [{ index = "jetson-sbsa-cu130" }] flash-attn = [{ index = "jetson-sbsa-cu130" }] diffusers = [{ index = "jetson-sbsa-cu130" }] [tool.pytest.ini_options] addopts = "--import-mode=importlib" markers = [ "gpu: tests that require a GPU", ] [tool.ruff] line-length = 100 # Thor ships Python 3.12 (see requires-python above) — keep Ruff aligned # so rule behaviour matches the interpreter actually used on device. target-version = "py312" src = ["gr00t"] exclude = [ "__pycache__", ".git", ".mypy_cache", ".pytest_cache", ".vscode", ".venv", "dist", "logs", "*.ipynb", "external_dependencies", ] [tool.ruff.format] quote-style = "double" indent-style = "space" docstring-code-format = true [tool.ruff.lint] select = ["E", "F", "I"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] [tool.ruff.lint.isort] case-sensitive = false combine-as-imports = true force-sort-within-sections = true force-wrap-aliases = false split-on-trailing-comma = false lines-after-imports = 2 section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"] [[tool.uv.index]] name = "nvidia-pypi" url = "https://pypi.nvidia.com" explicit = true [[tool.uv.index]] name = "jetson-sbsa-cu130" url = "https://pypi.jetson-ai-lab.io/sbsa/cu130/+simple" explicit = true