# Copyright 2024 The HuggingFace Inc. team. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. [project.urls] homepage = "https://github.com/huggingface/lerobot" issues = "https://github.com/huggingface/lerobot/issues" discord = "https://discord.gg/s3KuuzsPFb" [project] name = "lerobot" version = "0.1.0" description = "🤗 LeRobot: State-of-the-art Machine Learning for Real-World Robotics in Pytorch" authors = [ { name = "Rémi Cadène", email = "re.cadene@gmail.com" }, { name = "Simon Alibert", email = "alibert.sim@gmail.com" }, { name = "Alexander Soare", email = "alexander.soare159@gmail.com" }, { name = "Quentin Gallouédec", email = "quentin.gallouedec@ec-lyon.fr" }, { name = "Adil Zouitine", email = "adilzouitinegm@gmail.com" }, { name = "Thomas Wolf", email = "thomaswolfcontact@gmail.com" }, { name = "Steven Palma", email = "imstevenpmwork@ieee.org" }, ] readme = "README.md" license = { text = "Apache-2.0" } requires-python = ">=3.10" keywords = ["robotics", "deep learning", "pytorch"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "Topic :: Software Development :: Build Tools", "Topic :: Scientific/Engineering :: Artificial Intelligence", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.10", ] dependencies = [ "cmake>=3.29.0.1", "datasets>=2.19.0", "deepdiff>=7.0.1", "diffusers>=0.27.2", "draccus>=0.10.0", "einops>=0.8.0", "flask>=3.0.3", "gdown>=5.1.0", "gymnasium==0.29.1", # TODO(rcadene, aliberts): Make gym 1.0.0 work "h5py>=3.10.0", "huggingface-hub[hf-transfer,cli]>=0.27.1 ; python_version < '4.0'", "imageio[ffmpeg]>=2.34.0", "jsonlines>=4.0.0", "numba>=0.59.0", "omegaconf>=2.3.0", "opencv-python>=4.9.0", "packaging>=24.2", "av>=12.0.5", "pymunk>=6.6.0", "pynput>=1.7.7", "pyzmq>=26.2.1", "rerun-sdk>=0.21.0", "termcolor>=2.4.0", "torch>=2.2.1", "torchcodec>=0.2.1 ; sys_platform != 'linux' or (sys_platform == 'linux' and platform_machine != 'aarch64' and platform_machine != 'arm64' and platform_machine != 'armv7l')", "torchvision>=0.21.0", "wandb>=0.16.3", "zarr>=2.17.0", ] [project.optional-dependencies] aloha = ["gym-aloha>=0.1.1 ; python_version < '4.0'"] dev = ["pre-commit>=3.7.0", "debugpy>=1.8.1"] dora = [ "gym-dora @ git+https://github.com/dora-rs/dora-lerobot.git#subdirectory=gym_dora ; python_version < '4.0'", ] dynamixel = ["dynamixel-sdk>=3.7.31", "pynput>=1.7.7"] feetech = ["feetech-servo-sdk>=1.0.0", "pynput>=1.7.7"] intelrealsense = ["pyrealsense2>=2.55.1.6486 ; sys_platform != 'darwin'"] pi0 = ["transformers>=4.48.0"] pusht = ["gym-pusht>=0.1.5 ; python_version < '4.0'"] stretch = [ "hello-robot-stretch-body>=0.7.27 ; python_version < '4.0' and sys_platform == 'linux'", "pyrender @ git+https://github.com/mmatl/pyrender.git ; sys_platform == 'linux'", "pyrealsense2>=2.55.1.6486 ; sys_platform != 'darwin'", "pynput>=1.7.7", ] test = ["pytest>=8.1.0", "pytest-cov>=5.0.0", "pyserial>=3.5"] umi = ["imagecodecs>=2024.1.1"] video_benchmark = ["scikit-image>=0.23.2", "pandas>=2.2.2"] xarm = ["gym-xarm>=0.1.1 ; python_version < '4.0'"] [tool.poetry] requires-poetry = ">=2.1" [tool.ruff] line-length = 110 target-version = "py310" exclude = ["tests/artifacts/**/*.safetensors"] [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "I", "N", "B", "C4", "SIM"] [tool.bandit] exclude_dirs = [ "tests", "benchmarks", "lerobot/common/datasets/push_dataset_to_hub", "lerobot/common/datasets/v2/convert_dataset_v1_to_v2", "lerobot/common/policies/pi0/conversion_scripts", "lerobot/scripts/push_dataset_to_hub.py", ] skips = ["B101", "B311", "B404", "B603"] [tool.typos] default.extend-ignore-re = [ "(?Rm)^.*(#|//)\\s*spellchecker:disable-line$", # spellchecker:disable-line "(?s)(#|//)\\s*spellchecker:off.*?\\n\\s*(#|//)\\s*spellchecker:on", # spellchecker: ] default.extend-ignore-identifiers-re = [ # Add individual words here to ignore them "2nd", "pn", "ser", "ein", ] [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"