Skip to content

Commit ae0550b

Browse files
committed
fix: XML DataSpecificationIEC61360.value independent of value_format
1 parent 148bd85 commit ae0550b

2 files changed

Lines changed: 45 additions & 1 deletion

File tree

sdk/basyx/aas/adapter/xml/xml_deserialization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1154,7 +1154,7 @@ def construct_data_specification_iec61360(cls, element: etree._Element,
11541154
if value_list is not None:
11551155
ds_iec.value_list = value_list
11561156
value = _get_text_or_none(element.find(NS_AAS + "value"))
1157-
if value is not None and value_format is not None:
1157+
if value is not None:
11581158
ds_iec.value = value
11591159
level_type = element.find(NS_AAS + "levelType")
11601160
if level_type is not None:

sdk/test/adapter/xml/test_xml_deserialization.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,50 @@ def test_stripped_asset_administration_shell(self) -> None:
428428
self.assertEqual(len(aas.submodel), 0)
429429

430430

431+
class XmlDeserializationDataSpecTest(unittest.TestCase):
432+
def test_data_spec_iec61360_value_without_value_format(self) -> None:
433+
xml = _xml_wrap(f"""
434+
<aas:conceptDescriptions>
435+
<aas:conceptDescription>
436+
<aas:id>http://example.org/test_cd</aas:id>
437+
<aas:embeddedDataSpecifications>
438+
<aas:embeddedDataSpecification>
439+
<aas:dataSpecification>
440+
<aas:type>ExternalReference</aas:type>
441+
<aas:keys>
442+
<aas:key>
443+
<aas:type>GlobalReference</aas:type>
444+
<aas:value>https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIec61360/3/0</aas:value>
445+
</aas:key>
446+
</aas:keys>
447+
</aas:dataSpecification>
448+
<aas:dataSpecificationContent>
449+
<aas:dataSpecificationIec61360>
450+
<aas:preferredName>
451+
<aas:langStringPreferredNameTypeIec61360>
452+
<aas:language>en</aas:language>
453+
<aas:text>Test</aas:text>
454+
</aas:langStringPreferredNameTypeIec61360>
455+
</aas:preferredName>
456+
<aas:value>test_value</aas:value>
457+
</aas:dataSpecificationIec61360>
458+
</aas:dataSpecificationContent>
459+
</aas:embeddedDataSpecification>
460+
</aas:embeddedDataSpecifications>
461+
</aas:conceptDescription>
462+
</aas:conceptDescriptions>
463+
""")
464+
object_store = read_aas_xml_file(io.StringIO(xml), failsafe=False)
465+
cd = object_store.get_item("http://example.org/test_cd")
466+
self.assertIsInstance(cd, model.ConceptDescription)
467+
assert isinstance(cd, model.ConceptDescription)
468+
ds_content = list(cd.embedded_data_specifications)[0].data_specification_content
469+
self.assertIsInstance(ds_content, model.DataSpecificationIEC61360)
470+
assert isinstance(ds_content, model.DataSpecificationIEC61360)
471+
self.assertEqual("test_value", ds_content.value)
472+
self.assertIsNone(ds_content.value_format)
473+
474+
431475
class XmlDeserializationDerivingTest(unittest.TestCase):
432476
def test_submodel_constructor_overriding(self) -> None:
433477
class EnhancedSubmodel(model.Submodel):

0 commit comments

Comments
 (0)