xml: IndexError when parsing XML with empty <qualifier/> tags

I used the AASX Package Explorer (version 2021-01-16.alpha) to create a minimal AASX file with one asset, one AAS, one submodel and one property (see test1.aasx). When opening the file with PyI40AAS, I get an IndexError:

Traceback (most recent call last):
  File "open-aas.py", line 16, in <module>
    reader.read_into(object_store, file_store)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\aasx.py", line 139, in read_into
    self._read_aas_part_into(aas_part, object_store, file_store, read_identifiables, override_existing)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\aasx.py", line 180, in _read_aas_part_into
    for obj in self._parse_aas_part(part_name):
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\aasx.py", line 210, in _parse_aas_part
    return read_aas_xml_file(p)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 1398, in read_aas_xml_file
    read_aas_xml_file_into(object_store, file, **kwargs)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 1366, in read_aas_xml_file_into
    for element in _child_construct_multiple(list_, element_tag, constructor, decoder_.failsafe):
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 326, in _failsafe_construct_multiple
    parsed = _failsafe_construct(element, constructor, failsafe, **kwargs)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 280, in _failsafe_construct
    return constructor(element, **kwargs)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 982, in construct_submodel
    constructed = _failsafe_construct(submodel_element[0], cls.construct_submodel_element, cls.failsafe)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 280, in _failsafe_construct
    return constructor(element, **kwargs)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 665, in construct_submodel_element
    return cls.construct_data_element(element, abstract_class_name="SubmodelElement", **kwargs)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 685, in construct_data_element
    return data_elements[element.tag](element, **kwargs)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 851, in construct_property
    cls._amend_abstract_attributes(property_, element)
  File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 446, in _amend_abstract_attributes
    constructed = _failsafe_construct(constraint[0], cls.construct_constraint, cls.failsafe)
  File "src\lxml\etree.pyx", line 1161, in lxml.etree._Element.__getitem__
IndexError: list index out of range

This is the code I used to open the file:

filename = sys.argv[1]

try:
    object_store = model.DictObjectStore()
    file_store = aasx.DictSupplementaryFileContainer()
    with aasx.AASXReader(filename) as reader:
        reader.read_into(object_store, file_store)
        cp = reader.get_core_properties()
        print(filename, "SUCCESS", cp, sep="\t")
except:
    print(filename, "ERROR", sep="\t", flush=True)
    traceback.print_exc()

The error occurs both with the 0.2.0 release and the current development version 852c6f0a.

Edited by Michael Thies
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information