MambuPy 2.3.1__py3-none-any.whl → 2.3.2__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.
MambuPy/__init__.py CHANGED
@@ -37,7 +37,7 @@ import sys
37
37
  from importlib.abc import MetaPathFinder
38
38
  from importlib.util import spec_from_file_location
39
39
 
40
- __version__ = "2.3.1"
40
+ __version__ = "2.3.2"
41
41
  """The version of this module."""
42
42
 
43
43
 
@@ -9,11 +9,14 @@ Currently supports REST.
9
9
 
10
10
  import base64
11
11
  import copy
12
+ import datetime
13
+ import enum
12
14
  import json
13
15
  import mimetypes
14
16
  import os
15
17
  import re
16
18
  import uuid
19
+ from decimal import Decimal
17
20
 
18
21
  import requests
19
22
  from requests_toolbelt.multipart.encoder import MultipartEncoder
@@ -43,6 +46,19 @@ from MambuPy.mambuutil import (
43
46
  logger = setup_logging(__name__)
44
47
 
45
48
 
49
+ class _MambuJSONEncoder(json.JSONEncoder):
50
+ """JSON encoder that handles Python types not natively serializable by json.dumps."""
51
+
52
+ def default(self, obj):
53
+ if isinstance(obj, (datetime.datetime, datetime.date)):
54
+ return obj.isoformat()
55
+ if isinstance(obj, enum.Enum):
56
+ return obj.value
57
+ if isinstance(obj, Decimal):
58
+ return float(obj)
59
+ return super().default(obj)
60
+
61
+
46
62
  def _configure_retry_strategy(session, retries=5):
47
63
  """Configure retry strategy for a session.
48
64
 
@@ -154,11 +170,8 @@ class MambuConnectorREST(MambuConnector, MambuConnectorReader, MambuConnectorWri
154
170
  return params
155
171
 
156
172
  def __request_data(self, data):
157
- if data is not None:
158
- try:
159
- data = json.dumps(data)
160
- except TypeError:
161
- data = data
173
+ if isinstance(data, (dict, list)):
174
+ data = json.dumps(data, cls=_MambuJSONEncoder)
162
175
  return data
163
176
 
164
177
  def __request(self, method, url, params=None, data=None, content_type=None):
MambuPy/api/entities.py CHANGED
@@ -6,6 +6,8 @@
6
6
  """
7
7
 
8
8
  import copy
9
+ import datetime
10
+ import enum
9
11
  from importlib import import_module
10
12
  import json
11
13
  import time
@@ -503,6 +505,10 @@ class MambuEntityWritable(MambuStruct, MambuWritable):
503
505
  val = attrs[field]["value"]
504
506
  except (TypeError, KeyError):
505
507
  val = attrs[field]
508
+ if isinstance(val, (datetime.datetime, datetime.date)):
509
+ val = val.isoformat()
510
+ elif isinstance(val, enum.Enum):
511
+ val = val.value
506
512
  return (operation, path, val)
507
513
 
508
514
  def __patch_field_op(self, field, original_attrs):
mambupy/__init__.py CHANGED
@@ -37,7 +37,7 @@ import sys
37
37
  from importlib.abc import MetaPathFinder
38
38
  from importlib.util import spec_from_file_location
39
39
 
40
- __version__ = "2.3.1"
40
+ __version__ = "2.3.2"
41
41
  """The version of this module."""
42
42
 
43
43
 
@@ -9,11 +9,14 @@ Currently supports REST.
9
9
 
10
10
  import base64
11
11
  import copy
12
+ import datetime
13
+ import enum
12
14
  import json
13
15
  import mimetypes
14
16
  import os
15
17
  import re
16
18
  import uuid
19
+ from decimal import Decimal
17
20
 
18
21
  import requests
19
22
  from requests_toolbelt.multipart.encoder import MultipartEncoder
@@ -43,6 +46,19 @@ from MambuPy.mambuutil import (
43
46
  logger = setup_logging(__name__)
44
47
 
45
48
 
49
+ class _MambuJSONEncoder(json.JSONEncoder):
50
+ """JSON encoder that handles Python types not natively serializable by json.dumps."""
51
+
52
+ def default(self, obj):
53
+ if isinstance(obj, (datetime.datetime, datetime.date)):
54
+ return obj.isoformat()
55
+ if isinstance(obj, enum.Enum):
56
+ return obj.value
57
+ if isinstance(obj, Decimal):
58
+ return float(obj)
59
+ return super().default(obj)
60
+
61
+
46
62
  def _configure_retry_strategy(session, retries=5):
47
63
  """Configure retry strategy for a session.
48
64
 
@@ -154,11 +170,8 @@ class MambuConnectorREST(MambuConnector, MambuConnectorReader, MambuConnectorWri
154
170
  return params
155
171
 
156
172
  def __request_data(self, data):
157
- if data is not None:
158
- try:
159
- data = json.dumps(data)
160
- except TypeError:
161
- data = data
173
+ if isinstance(data, (dict, list)):
174
+ data = json.dumps(data, cls=_MambuJSONEncoder)
162
175
  return data
163
176
 
164
177
  def __request(self, method, url, params=None, data=None, content_type=None):
mambupy/api/entities.py CHANGED
@@ -6,6 +6,8 @@
6
6
  """
7
7
 
8
8
  import copy
9
+ import datetime
10
+ import enum
9
11
  from importlib import import_module
10
12
  import json
11
13
  import time
@@ -503,6 +505,10 @@ class MambuEntityWritable(MambuStruct, MambuWritable):
503
505
  val = attrs[field]["value"]
504
506
  except (TypeError, KeyError):
505
507
  val = attrs[field]
508
+ if isinstance(val, (datetime.datetime, datetime.date)):
509
+ val = val.isoformat()
510
+ elif isinstance(val, enum.Enum):
511
+ val = val.value
506
512
  return (operation, path, val)
507
513
 
508
514
  def __patch_field_op(self, field, original_attrs):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MambuPy
3
- Version: 2.3.1
3
+ Version: 2.3.2
4
4
  Summary: A python library for using Mambu APIs.
5
5
  Author-email: "Javier Novoa C." <jstitch@gmail.com>
6
6
  License: LICENSE
@@ -1,10 +1,10 @@
1
- MambuPy/__init__.py,sha256=1SkWKTKLNAWoAivu2Yv_89ZPn9eBgclG8PKb7JFnR1s,1548
1
+ MambuPy/__init__.py,sha256=Ps-C49zn-vyag70kZhy5JhIegv5l2FehezEN7LpavcM,1548
2
2
  MambuPy/mambuconfig.py,sha256=6T8jT9LvB2e2HkR6DVD-BwksOgucqo617_xYIlWrc3M,7441
3
3
  MambuPy/mambugeturl.py,sha256=D7jTr3tY1nPMXER-s5Uqaoi7_L6WjHTLLnqRYYWAh2Q,23405
4
4
  MambuPy/mambuutil.py,sha256=tcElYEix-GYsjfuCsKxrBaEsP3IB6PXv6fop7Ln5-9c,13455
5
5
  MambuPy/api/__init__.py,sha256=B8lABs6zq9owokHc4VGDQ_AirzszWiu7EAYM-FsaSWE,621
6
6
  MambuPy/api/classes.py,sha256=0LnsG6vyB7HQk11SaL43X6ftdkv7u6KyL7ynNvLQUTg,8030
7
- MambuPy/api/entities.py,sha256=xQ5sP39IpJWC3bhIYi5FAKTpb72lZo1siHSpErc95n4,34042
7
+ MambuPy/api/entities.py,sha256=Vwv-DqmaFkjpkCWhTcvoVzVuEb34aGgjXkbcOBzrkF0,34237
8
8
  MambuPy/api/interfaces.py,sha256=vRf1NDskUum-rnyyCygCVlYvuRWu_QvsEDwekcYK308,4870
9
9
  MambuPy/api/mambubranch.py,sha256=yfpMN_OWFIaa_EGpEmOzoH-_uFkWExfuq5IDVDp61F8,778
10
10
  MambuPy/api/mambucentre.py,sha256=2ferlA_8GTAoom-jwjBKVMUHGV0Um59vSl6_pdesT-4,952
@@ -21,7 +21,7 @@ MambuPy/api/mambuuser.py,sha256=PkW64XFSxRzUEOc2-D2yfJkAKwq6cNyCMecKSmaPoKY,3488
21
21
  MambuPy/api/vos.py,sha256=ppsHTITgQ_waymyV9-lxUpBTCC3TsfQpw51ZbTMlcXM,2590
22
22
  MambuPy/api/connector/__init__.py,sha256=gTRQao9uSbJ-iDO-CuH4rLGNsVgrKDVeN2nau6t5o7Q,173
23
23
  MambuPy/api/connector/mambuconnector.py,sha256=1sp9UYybtpTAUrW4RhHYQ-O-xvATwwP1VCQOFAkAmDw,9847
24
- MambuPy/api/connector/rest.py,sha256=ji___M-sSeJgtS5npzwoH9QgUlFDp0frGOnlgrwfWv0,33257
24
+ MambuPy/api/connector/rest.py,sha256=CV151bclrnP4wrxLb_JmZlZqFnDDr6OIIFB7Dk85-HA,33705
25
25
  MambuPy/orm/__init__.py,sha256=U8zAMqm-W-5c2QaLmcbxR0l2g0o6gUw26w0TgrjRsHM,801
26
26
  MambuPy/orm/schema_activities.py,sha256=uKva4zqloesXSGJxth8w4GN-zz8PC1IIpQMs8pDalAI,3391
27
27
  MambuPy/orm/schema_addresses.py,sha256=dLvEISuZuo6faWK1i3iU56vmwnrM16X5X40IhWOq4Ec,1598
@@ -41,13 +41,13 @@ MambuPy/rest/mambuactivity.py,sha256=lpLkTO4mtn3VfsmobAlWeAWqXWCTQ4I2f7koNiDIG54
41
41
  MambuPy/utils/__init__.py,sha256=xHJUVRE3PdETa8SPaUwdgKQfx8iMOAurSmnm7ROND_k,119
42
42
  MambuPy/utils/update_user_roles.py,sha256=CUkkBv2HJ-LaczmYu9Bud269Kb9NisJDoli64KZ1BeI,14675
43
43
  MambuPy/utils/userdeactivate.py,sha256=Rjlznm2KW23bqnrR_ogB36-O2rIHcBn9xTJdVIMynZQ,3134
44
- mambupy/__init__.py,sha256=1SkWKTKLNAWoAivu2Yv_89ZPn9eBgclG8PKb7JFnR1s,1548
44
+ mambupy/__init__.py,sha256=Ps-C49zn-vyag70kZhy5JhIegv5l2FehezEN7LpavcM,1548
45
45
  mambupy/mambuconfig.py,sha256=6T8jT9LvB2e2HkR6DVD-BwksOgucqo617_xYIlWrc3M,7441
46
46
  mambupy/mambugeturl.py,sha256=D7jTr3tY1nPMXER-s5Uqaoi7_L6WjHTLLnqRYYWAh2Q,23405
47
47
  mambupy/mambuutil.py,sha256=tcElYEix-GYsjfuCsKxrBaEsP3IB6PXv6fop7Ln5-9c,13455
48
48
  mambupy/api/__init__.py,sha256=B8lABs6zq9owokHc4VGDQ_AirzszWiu7EAYM-FsaSWE,621
49
49
  mambupy/api/classes.py,sha256=0LnsG6vyB7HQk11SaL43X6ftdkv7u6KyL7ynNvLQUTg,8030
50
- mambupy/api/entities.py,sha256=xQ5sP39IpJWC3bhIYi5FAKTpb72lZo1siHSpErc95n4,34042
50
+ mambupy/api/entities.py,sha256=Vwv-DqmaFkjpkCWhTcvoVzVuEb34aGgjXkbcOBzrkF0,34237
51
51
  mambupy/api/interfaces.py,sha256=vRf1NDskUum-rnyyCygCVlYvuRWu_QvsEDwekcYK308,4870
52
52
  mambupy/api/mambubranch.py,sha256=yfpMN_OWFIaa_EGpEmOzoH-_uFkWExfuq5IDVDp61F8,778
53
53
  mambupy/api/mambucentre.py,sha256=2ferlA_8GTAoom-jwjBKVMUHGV0Um59vSl6_pdesT-4,952
@@ -64,7 +64,7 @@ mambupy/api/mambuuser.py,sha256=PkW64XFSxRzUEOc2-D2yfJkAKwq6cNyCMecKSmaPoKY,3488
64
64
  mambupy/api/vos.py,sha256=ppsHTITgQ_waymyV9-lxUpBTCC3TsfQpw51ZbTMlcXM,2590
65
65
  mambupy/api/connector/__init__.py,sha256=gTRQao9uSbJ-iDO-CuH4rLGNsVgrKDVeN2nau6t5o7Q,173
66
66
  mambupy/api/connector/mambuconnector.py,sha256=1sp9UYybtpTAUrW4RhHYQ-O-xvATwwP1VCQOFAkAmDw,9847
67
- mambupy/api/connector/rest.py,sha256=ji___M-sSeJgtS5npzwoH9QgUlFDp0frGOnlgrwfWv0,33257
67
+ mambupy/api/connector/rest.py,sha256=CV151bclrnP4wrxLb_JmZlZqFnDDr6OIIFB7Dk85-HA,33705
68
68
  mambupy/orm/__init__.py,sha256=U8zAMqm-W-5c2QaLmcbxR0l2g0o6gUw26w0TgrjRsHM,801
69
69
  mambupy/orm/schema_activities.py,sha256=uKva4zqloesXSGJxth8w4GN-zz8PC1IIpQMs8pDalAI,3391
70
70
  mambupy/orm/schema_addresses.py,sha256=dLvEISuZuo6faWK1i3iU56vmwnrM16X5X40IhWOq4Ec,1598
@@ -84,8 +84,8 @@ mambupy/rest/mambuactivity.py,sha256=lpLkTO4mtn3VfsmobAlWeAWqXWCTQ4I2f7koNiDIG54
84
84
  mambupy/utils/__init__.py,sha256=xHJUVRE3PdETa8SPaUwdgKQfx8iMOAurSmnm7ROND_k,119
85
85
  mambupy/utils/update_user_roles.py,sha256=CUkkBv2HJ-LaczmYu9Bud269Kb9NisJDoli64KZ1BeI,14675
86
86
  mambupy/utils/userdeactivate.py,sha256=Rjlznm2KW23bqnrR_ogB36-O2rIHcBn9xTJdVIMynZQ,3134
87
- mambupy-2.3.1.dist-info/licenses/LICENSE,sha256=8MsXxZQL8tpxeo5kLHxQ-46sKu11g-_YOu0YnceJhuA,35165
88
- mambupy-2.3.1.dist-info/METADATA,sha256=Sl7XR5V4LKDsld8RgY5qyZIuwm3UnqozaN7oIBhPPrM,43259
89
- mambupy-2.3.1.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
90
- mambupy-2.3.1.dist-info/top_level.txt,sha256=60TnLWD6zn0VyfBdMGCHI1_RLrKyG-anEUDQeGNpn9g,16
91
- mambupy-2.3.1.dist-info/RECORD,,
87
+ mambupy-2.3.2.dist-info/licenses/LICENSE,sha256=8MsXxZQL8tpxeo5kLHxQ-46sKu11g-_YOu0YnceJhuA,35165
88
+ mambupy-2.3.2.dist-info/METADATA,sha256=EkX4xs7VonK5AoHzaWwm410Qb_vLFlI4CF-C14Z9VlA,43259
89
+ mambupy-2.3.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
90
+ mambupy-2.3.2.dist-info/top_level.txt,sha256=60TnLWD6zn0VyfBdMGCHI1_RLrKyG-anEUDQeGNpn9g,16
91
+ mambupy-2.3.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (82.0.0)
2
+ Generator: setuptools (82.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5