statikk 0.1.2__py3-none-any.whl → 0.1.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- statikk/models.py +13 -7
- {statikk-0.1.2.dist-info → statikk-0.1.4.dist-info}/METADATA +1 -1
- {statikk-0.1.2.dist-info → statikk-0.1.4.dist-info}/RECORD +6 -6
- {statikk-0.1.2.dist-info → statikk-0.1.4.dist-info}/LICENSE.txt +0 -0
- {statikk-0.1.2.dist-info → statikk-0.1.4.dist-info}/WHEEL +0 -0
- {statikk-0.1.2.dist-info → statikk-0.1.4.dist-info}/top_level.txt +0 -0
statikk/models.py
CHANGED
@@ -56,11 +56,13 @@ class IndexFieldConfig(BaseModel):
|
|
56
56
|
class TrackingMixin:
|
57
57
|
_original_hash: int = Field(exclude=True)
|
58
58
|
|
59
|
-
@
|
60
|
-
def should_track(
|
61
|
-
|
59
|
+
@property
|
60
|
+
def should_track(self) -> bool:
|
61
|
+
if self._parent is not None:
|
62
|
+
return self._parent.should_track
|
63
|
+
return False
|
62
64
|
|
63
|
-
def
|
65
|
+
def init_tracking(self):
|
64
66
|
self._original_hash = self._recursive_hash()
|
65
67
|
|
66
68
|
def _recursive_hash(self) -> int:
|
@@ -72,6 +74,9 @@ class TrackingMixin:
|
|
72
74
|
Returns:
|
73
75
|
A hash value representing the model's non-model fields.
|
74
76
|
"""
|
77
|
+
if not self.should_track:
|
78
|
+
return 0
|
79
|
+
|
75
80
|
values = []
|
76
81
|
for field_name in self.model_fields:
|
77
82
|
if not hasattr(self, field_name):
|
@@ -131,7 +136,7 @@ class TrackingMixin:
|
|
131
136
|
|
132
137
|
@property
|
133
138
|
def was_modified(self) -> bool:
|
134
|
-
if self.should_track
|
139
|
+
if self.should_track:
|
135
140
|
return self._recursive_hash() != self._original_hash
|
136
141
|
|
137
142
|
return True
|
@@ -173,7 +178,7 @@ class DatabaseModel(BaseModel, TrackingMixin, extra=Extra.allow):
|
|
173
178
|
range_key: Optional[Condition] = None,
|
174
179
|
filter_condition: Optional[ComparisonCondition] = None,
|
175
180
|
index_name: Optional[str] = None,
|
176
|
-
) -> T:
|
181
|
+
) -> list[T]:
|
177
182
|
return cls._table.query_index(
|
178
183
|
hash_key=hash_key,
|
179
184
|
model_class=cls,
|
@@ -253,10 +258,10 @@ class DatabaseModel(BaseModel, TrackingMixin, extra=Extra.allow):
|
|
253
258
|
|
254
259
|
@model_validator(mode="after")
|
255
260
|
def initialize_tracking(self):
|
256
|
-
self._original_hash = self._recursive_hash()
|
257
261
|
self._model_types_in_hierarchy[self.type()] = type(self)
|
258
262
|
if not self.is_nested():
|
259
263
|
self._set_parent_references(self)
|
264
|
+
self.init_tracking()
|
260
265
|
|
261
266
|
return self
|
262
267
|
|
@@ -351,6 +356,7 @@ class DatabaseModel(BaseModel, TrackingMixin, extra=Extra.allow):
|
|
351
356
|
field._parent = parent
|
352
357
|
root._model_types_in_hierarchy[field.type()] = type(field)
|
353
358
|
field._set_parent_references(root)
|
359
|
+
field.init_tracking()
|
354
360
|
|
355
361
|
def _set_parent_references(self, root: DatabaseModel):
|
356
362
|
for field_name, field_value in self:
|
@@ -3,10 +3,10 @@ statikk/conditions.py,sha256=63FYMR-UUaE-ZJEb_8CU721CQTwhajq39-BbokmKeMA,2166
|
|
3
3
|
statikk/engine.py,sha256=hMA6V_aneWpJlCa4mogu6rE3-T7qwFuRGAkK-0nREj8,30884
|
4
4
|
statikk/expressions.py,sha256=mF6Hmj3Kmj6KKXTymeTHSepVA7rhiSINpFgSAPeBTRY,12210
|
5
5
|
statikk/fields.py,sha256=LkMP5NnX7WS0HSLxI3Q-dMOrfaJ0SD7SayZxJU5Acgg,86
|
6
|
-
statikk/models.py,sha256=
|
6
|
+
statikk/models.py,sha256=r8vjVvm1wgPTeGuuiUW0ydfppytZ3PJxYDEOZudmCTU,13307
|
7
7
|
statikk/typing.py,sha256=qfpegORcdODuILK3gvuD4SdcZA1a7Myn0yvscOLPHOM,68
|
8
|
-
statikk-0.1.
|
9
|
-
statikk-0.1.
|
10
|
-
statikk-0.1.
|
11
|
-
statikk-0.1.
|
12
|
-
statikk-0.1.
|
8
|
+
statikk-0.1.4.dist-info/LICENSE.txt,sha256=uSH_2Hpb2Bigy5_HhBliN2fZbBU64G3ERM5zzhKPUEE,1078
|
9
|
+
statikk-0.1.4.dist-info/METADATA,sha256=dMTY_5ZNupxlY1GkAIfQGMZVdBsc1tvdueh0JRd64mo,3160
|
10
|
+
statikk-0.1.4.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
11
|
+
statikk-0.1.4.dist-info/top_level.txt,sha256=etKmBbjzIlLpSefXoiOfhWGEgvqUEALaFwCjFDBD9YI,8
|
12
|
+
statikk-0.1.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|