PKºnEOV¨·ssdictdaora/__init__.py"""dictdaora""" from dictdaora.dictdaora import DictDaora __version__ = '0.0.1' __all__ = [DictDaora.__name__] PKºnEO&Èz«88dictdaora/dictdaora.pyfrom typing import Any, Dict class DictDaora(Dict[str, Any]): def __setattr__(self, key: str, value: Any) -> None: self[key] = value def __getattr__(self, key: str) -> Any: try: return self[key] except KeyError as error: raise AttributeError(*error.args) def set(self, key: str, value: Any) -> None: self[key] = value def unset(self, key: str, *args: Any) -> None: try: self.pop(key, *args) except KeyError as error: raise AttributeError(*error.args) PKºnEOØ2«½!dictdaora/tests/test_dictdaora.pyimport pytest from dictdaora import DictDaora def test_should_set_get_attribute(): daora = DictDaora() daora.fake = 'fake' assert daora.fake == 'fake' def test_should_set_attr(): daora = DictDaora() daora.set('fake', 'faked_value') assert daora['fake'] == 'faked_value' def test_should_unset_attr(): daora = DictDaora() daora.set('fake', 'faked_value') daora.unset('fake') with pytest.raises(AttributeError) as exc_info: daora.fake assert exc_info.value.args == ('fake',) def test_should_unset_attr_error(): daora = DictDaora() daora.set('fake', 'faked_value') daora.unset('fake') with pytest.raises(AttributeError) as exc_info: daora.unset('fake') assert exc_info.value.args == ('fake',) PK ª