statikk 0.1.20__py3-none-any.whl → 0.1.21__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/engine.py CHANGED
@@ -24,6 +24,14 @@ from aws_xray_sdk.core import patch_all
24
24
  patch_all()
25
25
 
26
26
 
27
+ DYNAMODB_CONTEXT = decimal.Context(
28
+ prec=38, # precision
29
+ rounding=decimal.ROUND_HALF_EVEN,
30
+ traps=[decimal.Overflow, decimal.Underflow, decimal.InvalidOperation],
31
+ )
32
+ decimal.setcontext(DYNAMODB_CONTEXT)
33
+
34
+
27
35
  class InvalidIndexNameError(Exception):
28
36
  pass
29
37
 
@@ -536,6 +544,8 @@ class Table:
536
544
 
537
545
  if actual_annotation is datetime or "datetime" in str(annotation) and value is not None:
538
546
  return datetime.fromtimestamp(int(value))
547
+ if isinstance(value, decimal.Decimal):
548
+ return float(value)
539
549
  if actual_annotation is float:
540
550
  return float(value)
541
551
  if actual_annotation is list:
@@ -550,15 +560,13 @@ class Table:
550
560
  return {self._deserialize_value(item, item_annotation) for item in value}
551
561
  if isinstance(value, dict):
552
562
  return {key: self._deserialize_value(item, annotation) for key, item in value.items() if item is not None}
553
- if isinstance(value, decimal.Decimal):
554
- return float(value)
555
563
  return value
556
564
 
557
565
  def _serialize_value(self, value: Any):
558
566
  if isinstance(value, datetime):
559
567
  return int(value.timestamp())
560
568
  if isinstance(value, float):
561
- return Decimal(value)
569
+ return DYNAMODB_CONTEXT.create_decimal_from_float(value)
562
570
  if isinstance(value, list):
563
571
  return [self._serialize_value(item) for item in value]
564
572
  if isinstance(value, set):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: statikk
3
- Version: 0.1.20
3
+ Version: 0.1.21
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
@@ -1,12 +1,12 @@
1
1
  statikk/__init__.py,sha256=pH5i4Fj1tbXLqLtTVIdoojiplZssQn0nnud8-HXodRE,577
2
2
  statikk/conditions.py,sha256=63FYMR-UUaE-ZJEb_8CU721CQTwhajq39-BbokmKeMA,2166
3
- statikk/engine.py,sha256=bcUJfI9G1Nwe86NIrCwkB_Ni_fxdc_KBqa1ny2wJBzE,31998
3
+ statikk/engine.py,sha256=7SstnrKK5eiGYR31rlOTUkgsUmBsADWbE7uMpoJ3ipA,32249
4
4
  statikk/expressions.py,sha256=boAeGxZj2cDsXxoiX3IIEzfX9voSMQngi4-rE_jYeuE,12233
5
5
  statikk/fields.py,sha256=uLGD3xEnz2nqQY6EwG8Dd7pnRMMVP4PU2Z2I-uGNaTA,150
6
6
  statikk/models.py,sha256=1qnj2VmJivo4vJtI2UnlK85d9imuh_IiIp3UC1K7Y3I,17207
7
7
  statikk/typing.py,sha256=laOlOpWOm9_sOj4hhdZnGTUZRiq8760_B9I9B3wBhz8,750
8
- statikk-0.1.20.dist-info/licenses/LICENSE.txt,sha256=uSH_2Hpb2Bigy5_HhBliN2fZbBU64G3ERM5zzhKPUEE,1078
9
- statikk-0.1.20.dist-info/METADATA,sha256=GOv6D1HUYYGNbs-5UgWLS7C1wahrMZ7L39r4Gzni9T4,3183
10
- statikk-0.1.20.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
11
- statikk-0.1.20.dist-info/top_level.txt,sha256=etKmBbjzIlLpSefXoiOfhWGEgvqUEALaFwCjFDBD9YI,8
12
- statikk-0.1.20.dist-info/RECORD,,
8
+ statikk-0.1.21.dist-info/licenses/LICENSE.txt,sha256=uSH_2Hpb2Bigy5_HhBliN2fZbBU64G3ERM5zzhKPUEE,1078
9
+ statikk-0.1.21.dist-info/METADATA,sha256=mJs51n5Koa2cgorpZ9wV96FqJQV-E8TVCUkIkdE_esQ,3183
10
+ statikk-0.1.21.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
11
+ statikk-0.1.21.dist-info/top_level.txt,sha256=etKmBbjzIlLpSefXoiOfhWGEgvqUEALaFwCjFDBD9YI,8
12
+ statikk-0.1.21.dist-info/RECORD,,