From 21eb4860c4ec32f016adc9fbbc35c9c512db0287 Mon Sep 17 00:00:00 2001 From: Khalil Meftah Date: Wed, 15 Apr 2026 16:43:40 +0200 Subject: [PATCH] refactor(imports): conditionally import pandas based on availability --- src/lerobot/rewards/sarm/rabc.py | 8 +++++++- tests/utils/test_sample_weighting.py | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lerobot/rewards/sarm/rabc.py b/src/lerobot/rewards/sarm/rabc.py index 485665261..8d7ce6bde 100644 --- a/src/lerobot/rewards/sarm/rabc.py +++ b/src/lerobot/rewards/sarm/rabc.py @@ -30,14 +30,20 @@ See: https://arxiv.org/abs/2509.25358 for the SARM paper. import logging from pathlib import Path +from typing import TYPE_CHECKING import numpy as np -import pandas as pd import torch from huggingface_hub import hf_hub_download +from lerobot.utils.import_utils import _pandas_available from lerobot.utils.sample_weighting import SampleWeighter +if TYPE_CHECKING or _pandas_available: + import pandas as pd +else: + pd = None # type: ignore[assignment] + def resolve_hf_path(path: str | Path) -> Path: """Resolve a path that may be a HuggingFace URL (hf://datasets/...) to a local path.""" diff --git a/tests/utils/test_sample_weighting.py b/tests/utils/test_sample_weighting.py index dee0511ef..4507d7f18 100644 --- a/tests/utils/test_sample_weighting.py +++ b/tests/utils/test_sample_weighting.py @@ -19,6 +19,9 @@ from unittest.mock import Mock import pytest + +pytest.importorskip("pandas", reason="pandas is required (install lerobot[dataset])") + import torch from lerobot.utils.sample_weighting import (