adds warnings for non-overridden observable-list methods

This commit is contained in:
Mose Müller 2023-12-05 14:25:40 +01:00
parent 569e343e89
commit 4bd0092fbf
2 changed files with 78 additions and 1 deletions

View File

@ -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)

View File

@ -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