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 CHANGED
@@ -56,11 +56,13 @@ class IndexFieldConfig(BaseModel):
56
56
  class TrackingMixin:
57
57
  _original_hash: int = Field(exclude=True)
58
58
 
59
- @classmethod
60
- def should_track(cls) -> bool:
61
- return True
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 __init__(self):
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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: statikk
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: statikk is a single table application (STA) library for DynamoDb.
5
5
  Home-page: https://github.com/terinia/statikk
6
6
  Author: Balint Biro
@@ -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=rekTKPnN-I3oBOTzqkAy4FmSnaXI-woQNyG3rG85en8,13155
6
+ statikk/models.py,sha256=r8vjVvm1wgPTeGuuiUW0ydfppytZ3PJxYDEOZudmCTU,13307
7
7
  statikk/typing.py,sha256=qfpegORcdODuILK3gvuD4SdcZA1a7Myn0yvscOLPHOM,68
8
- statikk-0.1.2.dist-info/LICENSE.txt,sha256=uSH_2Hpb2Bigy5_HhBliN2fZbBU64G3ERM5zzhKPUEE,1078
9
- statikk-0.1.2.dist-info/METADATA,sha256=7IOtn9UQIVO-Iy0jJKooQrtzbtSJRq90Q_Z0wKg05-Y,3160
10
- statikk-0.1.2.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
11
- statikk-0.1.2.dist-info/top_level.txt,sha256=etKmBbjzIlLpSefXoiOfhWGEgvqUEALaFwCjFDBD9YI,8
12
- statikk-0.1.2.dist-info/RECORD,,
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,,