mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-21 00:40:01 +02:00
adds warnings for non-overridden observable-list methods
This commit is contained in:
parent
569e343e89
commit
4bd0092fbf
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import TYPE_CHECKING, Any, ClassVar
|
from collections.abc import Iterable
|
||||||
|
from typing import TYPE_CHECKING, Any, ClassVar, SupportsIndex
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from pydase.observer_pattern.observer.observer import Observer
|
from pydase.observer_pattern.observer.observer import Observer
|
||||||
@ -151,6 +152,41 @@ class _ObservableList(ObservableObject, list[Any]):
|
|||||||
super().append(__object)
|
super().append(__object)
|
||||||
self._notify_changed("", self)
|
self._notify_changed("", self)
|
||||||
|
|
||||||
|
def clear(self) -> None:
|
||||||
|
logger.warning(
|
||||||
|
"'clear' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
)
|
||||||
|
super().clear()
|
||||||
|
|
||||||
|
def extend(self, __iterable: Iterable[Any]) -> None:
|
||||||
|
logger.warning(
|
||||||
|
"'extend' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
)
|
||||||
|
return super().extend(__iterable)
|
||||||
|
|
||||||
|
def insert(self, __index: SupportsIndex, __object: Any) -> None:
|
||||||
|
logger.warning(
|
||||||
|
"'insert' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
)
|
||||||
|
super().insert(__index, __object)
|
||||||
|
|
||||||
|
def pop(self, __index: SupportsIndex = -1) -> Any:
|
||||||
|
logger.warning(
|
||||||
|
"'pop' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
)
|
||||||
|
return super().pop(__index)
|
||||||
|
|
||||||
|
def remove(self, __value: Any) -> None:
|
||||||
|
logger.warning(
|
||||||
|
"'remove' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
)
|
||||||
|
super().remove(__value)
|
||||||
|
|
||||||
def _remove_observer_if_observable(self, name: str) -> None:
|
def _remove_observer_if_observable(self, name: str) -> None:
|
||||||
key = int(name[1:-1])
|
key = int(name[1:-1])
|
||||||
current_value = self.__getitem__(key)
|
current_value = self.__getitem__(key)
|
||||||
|
@ -280,3 +280,44 @@ def test_list_in_dict_instance(caplog: pytest.LogCaptureFixture) -> None:
|
|||||||
instance.list_in_dict["some_list"][0] = "Ciao"
|
instance.list_in_dict["some_list"][0] = "Ciao"
|
||||||
|
|
||||||
assert "'list_in_dict['some_list'][0]' changed to 'Ciao'" in caplog.text
|
assert "'list_in_dict['some_list'][0]' changed to 'Ciao'" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_list_warnings(caplog: pytest.LogCaptureFixture) -> None:
|
||||||
|
class MyObservable(Observable):
|
||||||
|
def __init__(self) -> None:
|
||||||
|
super().__init__()
|
||||||
|
self.my_list = [1, 2, 3]
|
||||||
|
|
||||||
|
observable_instance = MyObservable()
|
||||||
|
|
||||||
|
observable_instance.my_list.insert(1, -1)
|
||||||
|
assert (
|
||||||
|
"'insert' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
) in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
observable_instance.my_list.extend([1])
|
||||||
|
assert (
|
||||||
|
"'extend' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
) in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
observable_instance.my_list.remove(1)
|
||||||
|
assert (
|
||||||
|
"'remove' has not been overridden yet. This might lead to unexpected "
|
||||||
|
"behaviour."
|
||||||
|
) in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
observable_instance.my_list.pop()
|
||||||
|
assert (
|
||||||
|
"'pop' has not been overridden yet. This might lead to unexpected behaviour."
|
||||||
|
) in caplog.text
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
observable_instance.my_list.clear()
|
||||||
|
assert (
|
||||||
|
"'clear' has not been overridden yet. This might lead to unexpected behaviour."
|
||||||
|
) in caplog.text
|
||||||
|
Loading…
x
Reference in New Issue
Block a user