From 8d4fe1ad6a3a2ecc7cf7ee1e0bc0a7a7a7cda912 Mon Sep 17 00:00:00 2001 From: AdilZouitine Date: Tue, 3 Jun 2025 17:45:10 +0200 Subject: [PATCH] (fix): linter --- .pre-commit-config.yaml | 2 -- lerobot/common/motors/motors_bus.py | 7 ++-- .../so100_follower_end_effector.py | 2 +- lerobot/common/transport/services_pb2.py | 1 - lerobot/common/transport/services_pb2_grpc.py | 6 ++-- pyproject.toml | 3 ++ tests/datasets/test_datasets.py | 32 ++++--------------- 7 files changed, 16 insertions(+), 37 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3a731c3a..7ea6557a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -46,8 +46,6 @@ repos: rev: v3.20.0 hooks: - id: pyupgrade - # Exclude generated protobuf files - exclude: '^(.*_pb2_grpc\.py|.*_pb2\.py$)' - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.11.11 hooks: diff --git a/lerobot/common/motors/motors_bus.py b/lerobot/common/motors/motors_bus.py index 7e6cfe19..7f0c4e06 100644 --- a/lerobot/common/motors/motors_bus.py +++ b/lerobot/common/motors/motors_bus.py @@ -795,7 +795,6 @@ class MotorsBus(abc.ABC): norm = ((bounded_val - min_) / (max_ - min_)) * 100 normalized_values[id_] = 100 - norm if drive_mode else norm elif self.motors[motor].norm_mode is MotorNormMode.DEGREE: - homing_offset = self.calibration[motor].homing_offset resolution = self.model_resolution_table[self.motors[motor].model] if drive_mode: val *= -1 @@ -830,16 +829,14 @@ class MotorsBus(abc.ABC): bounded_val = min(100.0, max(0.0, val)) unnormalized_values[id_] = int((bounded_val / 100) * (max_ - min_) + min_) elif self.motors[motor].norm_mode is MotorNormMode.DEGREE: - homing_offset = self.calibration[motor].homing_offset resolution = self.model_resolution_table[self.motors[motor].model] - # middle_pos = homing_offset + resolution // 2 middle_pos = int((max_ + min_) / 2) unnormalized_values[id_] = int((val / 180) * resolution // 2) + middle_pos if drive_mode: unnormalized_values[id_] *= -1 - if unnormalized_values[id_] < 0: - breakpoint() + # if unnormalized_values[id_] < 0: + # breakpoint() else: # TODO(aliberts): degree mode raise NotImplementedError diff --git a/lerobot/common/robots/so100_follower_end_effector/so100_follower_end_effector.py b/lerobot/common/robots/so100_follower_end_effector/so100_follower_end_effector.py index 993b7196..fc34ef42 100644 --- a/lerobot/common/robots/so100_follower_end_effector/so100_follower_end_effector.py +++ b/lerobot/common/robots/so100_follower_end_effector/so100_follower_end_effector.py @@ -131,7 +131,7 @@ class SO100FollowerEndEffector(SO100Follower): if self.current_joint_pos is None: # Read current joint positions current_joint_pos = self.bus.sync_read("Present_Position") - self.current_joint_pos = np.array([current_joint_pos[name] for name in self.bus.motors.keys()]) + self.current_joint_pos = np.array([current_joint_pos[name] for name in self.bus.motors]) # Calculate current end-effector position using forward kinematics if self.current_ee_pos is None: diff --git a/lerobot/common/transport/services_pb2.py b/lerobot/common/transport/services_pb2.py index ba2120fd..238e3f65 100644 --- a/lerobot/common/transport/services_pb2.py +++ b/lerobot/common/transport/services_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # NO CHECKED-IN PROTOBUF GENCODE # source: lerobot/common/transport/services.proto diff --git a/lerobot/common/transport/services_pb2_grpc.py b/lerobot/common/transport/services_pb2_grpc.py index 2e36f7b6..62a4627c 100644 --- a/lerobot/common/transport/services_pb2_grpc.py +++ b/lerobot/common/transport/services_pb2_grpc.py @@ -25,7 +25,7 @@ if _version_not_supported: ) -class LearnerServiceStub(object): +class LearnerServiceStub: """LearnerService: the Actor calls this to push transitions. The Learner implements this service. """ @@ -63,7 +63,7 @@ class LearnerServiceStub(object): _registered_method=True) -class LearnerServiceServicer(object): +class LearnerServiceServicer: """LearnerService: the Actor calls this to push transitions. The Learner implements this service. """ @@ -135,7 +135,7 @@ def add_LearnerServiceServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. -class LearnerService(object): +class LearnerService: """LearnerService: the Actor calls this to push transitions. The Learner implements this service. """ diff --git a/pyproject.toml b/pyproject.toml index 47c46a03..76ddc406 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -137,6 +137,9 @@ exclude = [ [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "I", "N", "B", "C4", "SIM"] +[tool.ruff.lint.per-file-ignores] +"__init__.py" = ["F401", "F403"] + [tool.bandit] exclude_dirs = [ "tests", diff --git a/tests/datasets/test_datasets.py b/tests/datasets/test_datasets.py index 22b35fce..81447089 100644 --- a/tests/datasets/test_datasets.py +++ b/tests/datasets/test_datasets.py @@ -72,9 +72,7 @@ def test_same_attributes_defined(tmp_path, lerobot_dataset_factory): # Instantiate both ways robot = make_robot("koch", mock=True) root_create = tmp_path / "create" - dataset_create = LeRobotDataset.create( - repo_id=DUMMY_REPO_ID, fps=30, robot=robot, root=root_create - ) + dataset_create = LeRobotDataset.create(repo_id=DUMMY_REPO_ID, fps=30, robot=robot, root=root_create) root_init = tmp_path / "init" dataset_init = lerobot_dataset_factory(root=root_init) @@ -126,9 +124,7 @@ def test_add_frame_extra_feature(tmp_path, empty_lerobot_dataset_factory): with pytest.raises( ValueError, match="Feature mismatch in `frame` dictionary:\nExtra features: {'extra'}\n" ): - dataset.add_frame( - {"state": torch.randn(1), "task": "Dummy task", "extra": "dummy_extra"} - ) + dataset.add_frame({"state": torch.randn(1), "task": "Dummy task", "extra": "dummy_extra"}) def test_add_frame_wrong_type(tmp_path, empty_lerobot_dataset_factory): @@ -137,9 +133,7 @@ def test_add_frame_wrong_type(tmp_path, empty_lerobot_dataset_factory): with pytest.raises( ValueError, match="The feature 'state' of dtype 'float16' is not of the expected dtype 'float32'.\n" ): - dataset.add_frame( - {"state": torch.randn(1, dtype=torch.float16), "task": "Dummy task"} - ) + dataset.add_frame({"state": torch.randn(1, dtype=torch.float16), "task": "Dummy task"}) def test_add_frame_wrong_shape(tmp_path, empty_lerobot_dataset_factory): @@ -147,9 +141,7 @@ def test_add_frame_wrong_shape(tmp_path, empty_lerobot_dataset_factory): dataset = empty_lerobot_dataset_factory(root=tmp_path / "test", features=features) with pytest.raises( ValueError, - match=re.escape( - "The feature 'state' of shape '(1,)' does not have the expected shape '(2,)'.\n" - ), + match=re.escape("The feature 'state' of shape '(1,)' does not have the expected shape '(2,)'.\n"), ): dataset.add_frame({"state": torch.randn(1), "task": "Dummy task"}) @@ -171,9 +163,7 @@ def test_add_frame_wrong_shape_torch_ndim_0(tmp_path, empty_lerobot_dataset_fact dataset = empty_lerobot_dataset_factory(root=tmp_path / "test", features=features) with pytest.raises( ValueError, - match=re.escape( - "The feature 'state' of shape '()' does not have the expected shape '(1,)'.\n" - ), + match=re.escape("The feature 'state' of shape '()' does not have the expected shape '(1,)'.\n"), ): dataset.add_frame({"state": torch.tensor(1.0), "task": "Dummy task"}) @@ -467,9 +457,7 @@ def test_flatten_unflatten_dict(): d = unflatten_dict(flatten_dict(d)) # test equality between nested dicts - assert json.dumps(original_d, sort_keys=True) == json.dumps(d, sort_keys=True), ( - f"{original_d} != {d}" - ) + assert json.dumps(original_d, sort_keys=True) == json.dumps(d, sort_keys=True), f"{original_d} != {d}" @pytest.mark.parametrize( @@ -523,13 +511,7 @@ def test_backward_compatibility(repo_id): load_and_compare(i + 1) # test 2 frames at the middle of first episode - i = int( - ( - dataset.episode_data_index["to"][0].item() - - dataset.episode_data_index["from"][0].item() - ) - / 2 - ) + i = int((dataset.episode_data_index["to"][0].item() - dataset.episode_data_index["from"][0].item()) / 2) load_and_compare(i) load_and_compare(i + 1)