diff --git a/frappe/types/frappedict.py b/frappe/types/frappedict.py index 08c60fd376..9e39cef398 100644 --- a/frappe/types/frappedict.py +++ b/frappe/types/frappedict.py @@ -24,6 +24,14 @@ class _dict(dict[_KT, _VT]): __delattr__ = dict.__delitem__ __setstate__ = dict.update + @override + def __getattribute__(self, name): + if name in _dict_attributes: + return object.__getattribute__(self, name) + + if name in self: + return self[name] + @override def __getstate__(self) -> Self: return self @@ -51,3 +59,6 @@ class _dict(dict[_KT, _VT]): @override def copy(self) -> "_dict[_KT, _VT]": return _dict(self) + + +_dict_attributes = frozenset(dir(_dict)) diff --git a/pyproject.toml b/pyproject.toml index c002e170a8..b0d1709b83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -226,7 +226,6 @@ files = [ "frappe/types/__init__.py", "frappe/types/DF.py", "frappe/types/docref.py", - "frappe/types/frappedict.py", "frappe/types/filter.py", ] exclude = [