Skip to content
This repository was archived by the owner on Apr 17, 2026. It is now read-only.

Commit 30fcda8

Browse files
committed
refactor: simplify DataBase behavior for cleaner human-style code
1 parent bc2c716 commit 30fcda8

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

dbase/__init__.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def _collect_public_data(self) -> dict[str, Any]:
7474
json.dumps(value)
7575
data[key] = value
7676
except TypeError:
77-
self._log(f"Skipped non-JSON value for key '{key}'", 'WARNING')
77+
continue
7878
return data
7979

8080
def _encrypt_text(self, text: str) -> str:
@@ -276,11 +276,10 @@ def __setattr__(self, name: str, value) -> None:
276276
def __getattr__(self, name: str):
277277
raise AttributeError(get_message('attribute_not_found').format(name=name))
278278

279-
def __getattribute__(self, name: str):
280-
return super().__getattribute__(name)
281-
282279
def __dir__(self) -> list[str]:
283-
return sorted(self._public_data_keys())
280+
attrs = set(super().__dir__())
281+
attrs.update(self._public_data_keys())
282+
return sorted(attrs)
284283

285284
def __getitem__(self, key: str):
286285
if not isinstance(key, str):
@@ -358,8 +357,8 @@ def __deepcopy__(self, memo):
358357
return new_db
359358

360359
def __hash__(self) -> int:
361-
data_tuple = tuple(sorted(self.items()))
362-
return hash(data_tuple)
360+
encoded = json.dumps(self._collect_public_data(), sort_keys=True, ensure_ascii=False)
361+
return hash(encoded)
363362

364363
def __eq__(self, other) -> bool:
365364
if isinstance(other, DataBase):

0 commit comments

Comments
 (0)