statikk 0.1.19__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
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import decimal
2
3
  from datetime import datetime
3
4
  from typing import Any, Dict, Type, Optional, List, Union
4
5
 
@@ -23,6 +24,14 @@ from aws_xray_sdk.core import patch_all
23
24
  patch_all()
24
25
 
25
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
+
26
35
  class InvalidIndexNameError(Exception):
27
36
  pass
28
37
 
@@ -535,6 +544,8 @@ class Table:
535
544
 
536
545
  if actual_annotation is datetime or "datetime" in str(annotation) and value is not None:
537
546
  return datetime.fromtimestamp(int(value))
547
+ if isinstance(value, decimal.Decimal):
548
+ return float(value)
538
549
  if actual_annotation is float:
539
550
  return float(value)
540
551
  if actual_annotation is list:
@@ -555,7 +566,7 @@ class Table:
555
566
  if isinstance(value, datetime):
556
567
  return int(value.timestamp())
557
568
  if isinstance(value, float):
558
- return Decimal(value)
569
+ return DYNAMODB_CONTEXT.create_decimal_from_float(value)
559
570
  if isinstance(value, list):
560
571
  return [self._serialize_value(item) for item in value]
561
572
  if isinstance(value, set):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: statikk
3
- Version: 0.1.19
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=hEI9xQMDMOd7F05-ePki1CZAUynY6RTEu1KstXANluc,31904
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.19.dist-info/licenses/LICENSE.txt,sha256=uSH_2Hpb2Bigy5_HhBliN2fZbBU64G3ERM5zzhKPUEE,1078
9
- statikk-0.1.19.dist-info/METADATA,sha256=6A80zHVaRA9Y08gS6Zd62juhMTdWKuhdR7Z97pfPazY,3183
10
- statikk-0.1.19.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
11
- statikk-0.1.19.dist-info/top_level.txt,sha256=etKmBbjzIlLpSefXoiOfhWGEgvqUEALaFwCjFDBD9YI,8
12
- statikk-0.1.19.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,,