mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-20 00:10:03 +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
|
||||
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:
|
||||
from pydase.observer_pattern.observer.observer import Observer
|
||||
@ -151,6 +152,41 @@ class _ObservableList(ObservableObject, list[Any]):
|
||||
super().append(__object)
|
||||
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:
|
||||
key = int(name[1:-1])
|
||||
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"
|
||||
|
||||
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