mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-25 13:40:00 +00:00
feat(robots): add context managers (#2828)
This commit is contained in:
@@ -58,6 +58,32 @@ class Robot(abc.ABC):
|
|||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f"{self.id} {self.__class__.__name__}"
|
return f"{self.id} {self.__class__.__name__}"
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
"""
|
||||||
|
Context manager entry.
|
||||||
|
Automatically connects to the camera.
|
||||||
|
"""
|
||||||
|
self.connect()
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback) -> None:
|
||||||
|
"""
|
||||||
|
Context manager exit.
|
||||||
|
Automatically disconnects, ensuring resources are released even on error.
|
||||||
|
"""
|
||||||
|
self.disconnect()
|
||||||
|
|
||||||
|
def __del__(self) -> None:
|
||||||
|
"""
|
||||||
|
Destructor safety net.
|
||||||
|
Attempts to disconnect if the object is garbage collected without cleanup.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
if self.is_connected:
|
||||||
|
self.disconnect()
|
||||||
|
except Exception: # nosec B110
|
||||||
|
pass
|
||||||
|
|
||||||
# TODO(aliberts): create a proper Feature class for this that links with datasets
|
# TODO(aliberts): create a proper Feature class for this that links with datasets
|
||||||
@property
|
@property
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
|
|||||||
@@ -58,6 +58,32 @@ class Teleoperator(abc.ABC):
|
|||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f"{self.id} {self.__class__.__name__}"
|
return f"{self.id} {self.__class__.__name__}"
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
"""
|
||||||
|
Context manager entry.
|
||||||
|
Automatically connects to the camera.
|
||||||
|
"""
|
||||||
|
self.connect()
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback) -> None:
|
||||||
|
"""
|
||||||
|
Context manager exit.
|
||||||
|
Automatically disconnects, ensuring resources are released even on error.
|
||||||
|
"""
|
||||||
|
self.disconnect()
|
||||||
|
|
||||||
|
def __del__(self) -> None:
|
||||||
|
"""
|
||||||
|
Destructor safety net.
|
||||||
|
Attempts to disconnect if the object is garbage collected without cleanup.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
if self.is_connected:
|
||||||
|
self.disconnect()
|
||||||
|
except Exception: # nosec B110
|
||||||
|
pass
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def action_features(self) -> dict:
|
def action_features(self) -> dict:
|
||||||
|
|||||||
Reference in New Issue
Block a user