iris-pex-embedded-python 3.4.1b3__py3-none-any.whl → 3.4.1b5__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.

Potentially problematic release.


This version of iris-pex-embedded-python might be problematic. Click here for more details.

iop/_serialization.py CHANGED
@@ -4,13 +4,13 @@ import importlib
4
4
  import inspect
5
5
  import pickle
6
6
  import json
7
- from dataclasses import asdict, is_dataclass
7
+ from dataclasses import is_dataclass
8
8
  from typing import Any, Dict, Type
9
9
 
10
10
  from . import _iris
11
11
  from pydantic import BaseModel, TypeAdapter, ValidationError
12
12
 
13
- from iop._message import _PydanticPickleMessage
13
+ from iop._message import _PydanticPickleMessage, _Message
14
14
  from iop._utils import _Utils
15
15
 
16
16
  class SerializationError(Exception):
@@ -31,10 +31,10 @@ class MessageSerializer:
31
31
  """Convert objects to JSON-safe format."""
32
32
  if isinstance(obj, BaseModel):
33
33
  return obj.model_dump_json()
34
- elif is_dataclass(obj):
34
+ elif is_dataclass(obj) and isinstance(obj, _Message):
35
35
  return TempPydanticModel.model_validate(dataclass_to_dict(obj)).model_dump_json()
36
36
  else:
37
- raise SerializationError(f"Object {obj} must be a Pydantic model or dataclass")
37
+ raise SerializationError(f"Object {obj} must be a Pydantic model or dataclass Message")
38
38
 
39
39
  @staticmethod
40
40
  def serialize(message: Any, use_pickle: bool = False) -> Any:
@@ -149,12 +149,20 @@ def dataclass_from_dict(klass: Type, dikt: Dict) -> Any:
149
149
  def dataclass_to_dict(instance: Any) -> Dict:
150
150
  """Converts a class instance to a dictionary.
151
151
  Handles non attended fields."""
152
- dikt = asdict(instance)
153
- # assign any extra fields
154
- for k, v in vars(instance).items():
155
- if k not in dikt:
156
- dikt[k] = v
157
- return dikt
152
+ result = {}
153
+ for field in instance.__dict__:
154
+ value = getattr(instance, field)
155
+ if is_dataclass(value):
156
+ result[field] = dataclass_to_dict(value)
157
+ elif isinstance(value, list):
158
+ result[field] = [dataclass_to_dict(i) if is_dataclass(i) else i for i in value]
159
+ elif isinstance(value, dict):
160
+ result[field] = {k: dataclass_to_dict(v) if is_dataclass(v) else v for k, v in value.items()}
161
+ elif hasattr(value, '__dict__'):
162
+ result[field] = dataclass_to_dict(value)
163
+ else:
164
+ result[field] = value
165
+ return result
158
166
 
159
167
  # Maintain backwards compatibility
160
168
  serialize_pickle_message = lambda msg: MessageSerializer.serialize(msg, use_pickle=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.4.1b3
3
+ Version: 3.4.1b5
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License
@@ -47,7 +47,7 @@ iop/_message_validator.py,sha256=K6FxLe72gBHQXZTLVrFw87rABGM0F6CTaNtZ2MqJoss,140
47
47
  iop/_outbound_adapter.py,sha256=YTAhLrRf9chEAd53mV6KKbpaHOKNOKJHoGgj5wakRR0,726
48
48
  iop/_private_session_duplex.py,sha256=mzlFABh-ly51X1uSWw9YwQbktfMvuNdp2ALlRvlDow4,5152
49
49
  iop/_private_session_process.py,sha256=todprfYFSDr-h-BMvWL_IGC6wbQqkMy3mPHWEWCUSE0,1686
50
- iop/_serialization.py,sha256=iMC51QMIcWwj1ntDbTgZbLZIFFQuBcC4wH9kfQNivic,6164
50
+ iop/_serialization.py,sha256=lS5zHS14Olpw2i2s-cXMHV8CsjJLNmYdAhfZFvLfqe4,6652
51
51
  iop/_utils.py,sha256=zguWjvZQkzAScHXl4OomZr2ZtPljDqVAs1CFllQZn5g,20092
52
52
  iop/cls/IOP/BusinessOperation.cls,sha256=lrymqZ8wHl5kJjXwdjbQVs5sScV__yIWGh-oGbiB_X0,914
53
53
  iop/cls/IOP/BusinessProcess.cls,sha256=s3t38w1ykHqM26ETcbCYLt0ocjZyVVahm-_USZkuJ1E,2855
@@ -71,9 +71,9 @@ iop/cls/IOP/PrivateSession/Message/Start.cls,sha256=uk-WTe66GicCshgmVy3F5ugHiAyP
71
71
  iop/cls/IOP/PrivateSession/Message/Stop.cls,sha256=7g3gKFUjNg0WXBLuWnj-VnCs5G6hSE09YTzGEp0zbGc,1390
72
72
  iop/cls/IOP/Service/WSGI.cls,sha256=VLNCXEwmHW9dBnE51uGE1nvGX6T4HjhqePT3LVhsjAE,10440
73
73
  iop/wsgi/handlers.py,sha256=NrFLo_YbAh-x_PlWhAiWkQnUUN2Ss9HoEm63dDWCBpQ,2947
74
- iris_pex_embedded_python-3.4.1b3.dist-info/licenses/LICENSE,sha256=rZSiBFId_sfbJ6RL0GjjPX-InNLkNS9ou7eQsikciI8,1089
75
- iris_pex_embedded_python-3.4.1b3.dist-info/METADATA,sha256=9EmsdVoVtDZEmrDsWt-3o8_gcxQ4wquLG5n_lsvPnbE,4419
76
- iris_pex_embedded_python-3.4.1b3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
77
- iris_pex_embedded_python-3.4.1b3.dist-info/entry_points.txt,sha256=pj-i4LSDyiSP6xpHlVjMCbg1Pik7dC3_sdGY3Yp9Vhk,38
78
- iris_pex_embedded_python-3.4.1b3.dist-info/top_level.txt,sha256=4p0q6hCATmYIVMVi3I8hOUcJE1kwzyBeHygWv_rGvrU,13
79
- iris_pex_embedded_python-3.4.1b3.dist-info/RECORD,,
74
+ iris_pex_embedded_python-3.4.1b5.dist-info/licenses/LICENSE,sha256=rZSiBFId_sfbJ6RL0GjjPX-InNLkNS9ou7eQsikciI8,1089
75
+ iris_pex_embedded_python-3.4.1b5.dist-info/METADATA,sha256=gl9Pr67eVGmn8UaiANlFUMkuSudDJ1W7X2DMTn4bMnw,4419
76
+ iris_pex_embedded_python-3.4.1b5.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
77
+ iris_pex_embedded_python-3.4.1b5.dist-info/entry_points.txt,sha256=pj-i4LSDyiSP6xpHlVjMCbg1Pik7dC3_sdGY3Yp9Vhk,38
78
+ iris_pex_embedded_python-3.4.1b5.dist-info/top_level.txt,sha256=4p0q6hCATmYIVMVi3I8hOUcJE1kwzyBeHygWv_rGvrU,13
79
+ iris_pex_embedded_python-3.4.1b5.dist-info/RECORD,,