diff --git a/pyproject.toml b/pyproject.toml index d3d0c0ed3..f38236426 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -332,6 +332,9 @@ ignore = [ "__init__.py" = ["F401", "F403", "E402"] # E402: conditional-import guards (TYPE_CHECKING / is_package_available) must precede the imports they protect "src/lerobot/scripts/convert_dataset_v21_to_v30.py" = ["E402"] +"src/lerobot/rl/actor.py" = ["E402"] +"src/lerobot/rl/learner.py" = ["E402"] +"src/lerobot/rl/learner_service.py" = ["E402"] "src/lerobot/policies/wall_x/**" = ["N801", "N812", "SIM102", "SIM108", "SIM210", "SIM211", "B006", "B007", "SIM118"] # Supprese these as they are coming from original Qwen2_5_vl code TODO(pepijn): refactor original [tool.ruff.lint.isort] diff --git a/src/lerobot/rl/actor.py b/src/lerobot/rl/actor.py index ebb746343..14e786268 100644 --- a/src/lerobot/rl/actor.py +++ b/src/lerobot/rl/actor.py @@ -53,6 +53,10 @@ from functools import lru_cache from queue import Empty from typing import Any +from lerobot.utils.import_utils import require_package + +require_package("grpcio", extra="hilserl", import_name="grpc") + import grpc import torch from torch import nn diff --git a/src/lerobot/rl/gym_manipulator.py b/src/lerobot/rl/gym_manipulator.py index ab43aae65..af451bfeb 100644 --- a/src/lerobot/rl/gym_manipulator.py +++ b/src/lerobot/rl/gym_manipulator.py @@ -312,6 +312,9 @@ def make_robot_env(cfg: HILSerlRobotEnvConfig) -> tuple[gym.Env, Any]: # Check if this is a GymHIL simulation environment if cfg.name == "gym_hil": assert cfg.robot is None and cfg.teleop is None, "GymHIL environment does not support robot or teleop" + from lerobot.utils.import_utils import require_package + + require_package("gym-hil", extra="hilserl", import_name="gym_hil") import gym_hil # noqa: F401 # Extract gripper settings with defaults diff --git a/src/lerobot/rl/learner.py b/src/lerobot/rl/learner.py index 7cfee9cba..7d3190230 100644 --- a/src/lerobot/rl/learner.py +++ b/src/lerobot/rl/learner.py @@ -53,6 +53,10 @@ from pathlib import Path from pprint import pformat from typing import Any +from lerobot.utils.import_utils import require_package + +require_package("grpcio", extra="hilserl", import_name="grpc") + import grpc import torch from termcolor import colored diff --git a/src/lerobot/rl/learner_service.py b/src/lerobot/rl/learner_service.py index 4128cdf55..358b01090 100644 --- a/src/lerobot/rl/learner_service.py +++ b/src/lerobot/rl/learner_service.py @@ -19,6 +19,10 @@ import logging import time from multiprocessing import Event, Queue +from lerobot.utils.import_utils import require_package + +require_package("grpcio", extra="hilserl", import_name="grpc") + from lerobot.transport import services_pb2, services_pb2_grpc from lerobot.transport.utils import receive_bytes_in_chunks, send_bytes_in_chunks