Skip to content

Commit 43d4eaf

Browse files
bugfix in type naming for json export or qualifiedType or contenttype
1 parent 50bd141 commit 43d4eaf

3 files changed

Lines changed: 40 additions & 24 deletions

File tree

energyml-utils/src/energyml/utils/data/mesh.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from io import BytesIO
1212
from typing import List, Optional, Any, Callable, Dict, Union, Tuple
1313

14-
from energyml.resqml.v2_2.resqmlv2 import Grid2DRepresentation
1514

1615
from .helper import (
1716
read_array,

energyml-utils/src/energyml/utils/introspection.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,10 +1146,6 @@ def get_object_type_for_file_path_from_class(cls) -> str:
11461146
return parent_cls.Meta.name
11471147
except AttributeError:
11481148
pass
1149-
try:
1150-
return cls.Meta.name # to work with 3d transformed in 3D and Obj[A-Z] in obj_[A-Z]
1151-
except AttributeError:
1152-
pass
11531149

11541150
return classic_type
11551151

energyml-utils/src/energyml/utils/serialization.py

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -168,36 +168,57 @@ def _read_energyml_json_bytes_as_class(file: bytes, json_version: JSON_VERSION,
168168

169169

170170
def read_energyml_json_bytes(
171-
file: bytes, json_version: JSON_VERSION, obj_type: Optional[type] = None
171+
file: Union[dict, bytes], json_version: JSON_VERSION, obj_type: Optional[type] = None
172172
) -> Union[List, Any]:
173173
"""
174174
Read a json file into energyml object. If json_version==JSON_VERSION.XSDATA the instance will be of type :param:`obj_class`.
175175
For json_version==JSON_VERSION.OSDU_OFFICIAL a list of read objects is returned
176176
:param file:
177177
:param json_version:
178-
:param obj_type:
178+
:param obj_type: ignored if the json file is a list
179179
:return:
180180
"""
181-
if obj_type is None:
182-
obj_type = get_class_from_content_type(get_class_from_json_dict(file))
183-
if json_version == JSON_VERSION.XSDATA:
181+
182+
if isinstance(file, bytes):
183+
json_obj = json.loads(file)
184+
else:
185+
json_obj = file
186+
187+
if not isinstance(json_obj, list):
188+
json_obj = [json_obj]
189+
else:
190+
obj_type = None
191+
192+
result = []
193+
for obj in json_obj:
184194
try:
185-
return _read_energyml_json_bytes_as_class(file, obj_type)
186-
except xsdata.exceptions.ParserError as e:
187-
logging.error(
188-
f"Failed to read file with type {obj_type}: {get_energyml_class_in_related_dev_pkg(obj_type)}"
189-
)
190-
for obj_type_dev in get_energyml_class_in_related_dev_pkg(obj_type):
195+
if obj_type is None:
196+
obj_type = get_class_from_content_type(get_class_from_json_dict(obj))
197+
if json_version == JSON_VERSION.XSDATA:
191198
try:
192-
logging.debug(f"Trying with class : {obj_type_dev}")
193-
obj = _read_energyml_json_bytes_as_class(file, obj_type_dev)
194-
logging.debug(f" ==> succeed read with {obj_type_dev}")
195-
return obj
196-
except Exception:
197-
pass
199+
result = result + _read_energyml_json_bytes_as_class(obj, obj_type)
200+
except xsdata.exceptions.ParserError as e:
201+
logging.error(
202+
f"Failed to read file with type {obj_type}: {get_energyml_class_in_related_dev_pkg(obj_type)}"
203+
)
204+
for obj_type_dev in get_energyml_class_in_related_dev_pkg(obj_type):
205+
try:
206+
logging.debug(f"Trying with class : {obj_type_dev}")
207+
obj = _read_energyml_json_bytes_as_class(obj, obj_type_dev)
208+
logging.debug(f" ==> succeed read with {obj_type_dev}")
209+
result = result + obj
210+
except Exception:
211+
pass
212+
raise e
213+
elif json_version == JSON_VERSION.OSDU_OFFICIAL:
214+
result = result + read_json_dict(obj)
215+
except Exception as e:
216+
logging.error(e)
217+
logging.error(obj)
198218
raise e
199-
elif json_version == JSON_VERSION.OSDU_OFFICIAL:
200-
return read_json_dict(json.loads(file))
219+
obj_type = None
220+
221+
return result
201222

202223

203224
def read_energyml_json_io(

0 commit comments

Comments
 (0)