Skip to content

Commit 2ecadfc

Browse files
committed
Fix AssociatedDataStore behavior
Fixes #6802 Fixes #6798
1 parent 0e93a5d commit 2ecadfc

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

python/associateddatastore.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1919
# IN THE SOFTWARE.
2020

21-
import copy
2221
from typing import Any
2322

2423

@@ -29,18 +28,22 @@ class _AssociatedDataStore(dict):
2928
def set_default(cls, name: str, value: Any):
3029
cls._defaults[name] = value
3130

31+
def get(self, key: Any, default: Any = None) -> Any:
32+
if key in self.keys():
33+
return self[key]
34+
if key in self.__class__._defaults:
35+
return self.__class__._defaults[key]
36+
return default
37+
3238
def __getattr__(self, name: str) -> Any:
33-
if name in self.__dict__:
34-
return self.__dict__[name]
35-
if name not in self:
36-
if name in self.__class__._defaults:
37-
result = copy.copy(self.__class__._defaults[name])
38-
self[name] = result
39-
return result
39+
if name in self.keys():
40+
return self[name]
41+
if name in self.__class__._defaults:
42+
return self.__class__._defaults[name]
4043
return self.__getitem__(name)
4144

42-
def __setattr__(self, name: str, value: Any):
45+
def __setattr__(self, name: str, value: Any) -> None:
4346
self.__setitem__(name, value)
4447

45-
def __delattr__(self, name: str):
48+
def __delattr__(self, name: str) -> None:
4649
self.__delitem__(name)

0 commit comments

Comments
 (0)