armodel 1.8.0__py3-none-any.whl → 1.8.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.
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +1 -2
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +14 -14
- armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +2 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +7 -7
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +4 -4
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +3 -3
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +3 -3
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +86 -9
- armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py +1249 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +13 -10
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +238 -225
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +5 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +46 -25
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +33 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +18 -20
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -19
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +4 -4
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +71 -27
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +9 -9
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -8
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +2 -2
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +6 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +6 -6
- armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
- armodel/parser/abstract_arxml_parser.py +8 -5
- armodel/parser/arxml_parser.py +332 -16
- armodel/tests/test_armodel/models/test_ECUCParameterDefTemplate.py +116 -0
- armodel/tests/test_armodel/models/test_Identifiable.py +85 -0
- armodel/tests/test_armodel/models/test_ar_object.py +85 -86
- armodel/tests/test_armodel/models/test_ar_package.py +70 -70
- armodel/tests/test_armodel/models/test_ar_ref.py +36 -36
- armodel/tests/test_armodel/models/test_common_structure.py +37 -35
- armodel/tests/test_armodel/models/test_datatype.py +4 -4
- armodel/tests/test_armodel/models/test_general_structure.py +19 -18
- armodel/tests/test_armodel/models/test_port_interface.py +2 -6
- armodel/tests/test_armodel/parser/test_arxml_parser.py +8 -8
- armodel/writer/abstract_arxml_writer.py +6 -2
- armodel/writer/arxml_writer.py +376 -29
- {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/METADATA +20 -1
- {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/RECORD +49 -46
- {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/LICENSE +0 -0
- {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/WHEEL +0 -0
- {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/entry_points.txt +0 -0
- {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/top_level.txt +0 -0
|
@@ -82,7 +82,7 @@ class PhysicalChannel (Identifiable, metaclass=ABCMeta):
|
|
|
82
82
|
return self
|
|
83
83
|
|
|
84
84
|
def getFrameTriggerings(self) -> List[FrameTriggering]:
|
|
85
|
-
return list(sorted(filter(lambda a: isinstance(a, FrameTriggering), self.elements
|
|
85
|
+
return list(sorted(filter(lambda a: isinstance(a, FrameTriggering), self.elements), key=lambda o: o.getShortName()))
|
|
86
86
|
|
|
87
87
|
def createCanFrameTriggering(self, short_name: str) -> CanFrameTriggering:
|
|
88
88
|
if (short_name not in self.elements):
|
|
@@ -106,7 +106,7 @@ class PhysicalChannel (Identifiable, metaclass=ABCMeta):
|
|
|
106
106
|
return self.getElement(short_name)
|
|
107
107
|
|
|
108
108
|
def getISignalTriggerings(self) -> List[ISignalTriggering]:
|
|
109
|
-
return list(sorted(filter(lambda a: isinstance(a, ISignalTriggering), self.elements
|
|
109
|
+
return list(sorted(filter(lambda a: isinstance(a, ISignalTriggering), self.elements), key=lambda o: o.getShortName()))
|
|
110
110
|
|
|
111
111
|
def createISignalTriggering(self, short_name: str):
|
|
112
112
|
if (short_name not in self.elements):
|
|
@@ -122,7 +122,7 @@ class PhysicalChannel (Identifiable, metaclass=ABCMeta):
|
|
|
122
122
|
return self
|
|
123
123
|
|
|
124
124
|
def getPduTriggerings(self) -> List[PduTriggering]:
|
|
125
|
-
return list(sorted(filter(lambda a: isinstance(a, PduTriggering), self.elements
|
|
125
|
+
return list(sorted(filter(lambda a: isinstance(a, PduTriggering), self.elements), key=lambda o: o.getShortName()))
|
|
126
126
|
|
|
127
127
|
def createPduTriggering(self, short_name: str):
|
|
128
128
|
if (short_name not in self.elements):
|
|
@@ -268,16 +268,16 @@ class CommunicationCluster(FibexElement, metaclass=ABCMeta):
|
|
|
268
268
|
return self
|
|
269
269
|
|
|
270
270
|
def getPhysicalChannels(self) -> List[PhysicalChannel]:
|
|
271
|
-
return list(sorted(filter(lambda a: isinstance(a, PhysicalChannel), self.elements
|
|
271
|
+
return list(sorted(filter(lambda a: isinstance(a, PhysicalChannel), self.elements), key=lambda o: o.getShortName()))
|
|
272
272
|
|
|
273
273
|
def getCanPhysicalChannels(self) -> List[CanPhysicalChannel]:
|
|
274
|
-
return list(sorted(filter(lambda a: isinstance(a, CanPhysicalChannel), self.elements
|
|
274
|
+
return list(sorted(filter(lambda a: isinstance(a, CanPhysicalChannel), self.elements), key=lambda o: o.getShortName()))
|
|
275
275
|
|
|
276
276
|
def getLinPhysicalChannels(self) -> List[LinPhysicalChannel]:
|
|
277
|
-
return list(sorted(filter(lambda a: isinstance(a, LinPhysicalChannel), self.elements
|
|
277
|
+
return list(sorted(filter(lambda a: isinstance(a, LinPhysicalChannel), self.elements), key=lambda o: o.getShortName()))
|
|
278
278
|
|
|
279
279
|
def getEthernetPhysicalChannels(self) -> List[EthernetPhysicalChannel]:
|
|
280
|
-
return list(sorted(filter(lambda a: isinstance(a, EthernetPhysicalChannel), self.elements
|
|
280
|
+
return list(sorted(filter(lambda a: isinstance(a, EthernetPhysicalChannel), self.elements), key=lambda o: o.getShortName()))
|
|
281
281
|
|
|
282
282
|
def createCanPhysicalChannel(self, short_name: str):
|
|
283
283
|
if (short_name not in self.elements):
|
|
@@ -624,7 +624,7 @@ class CommunicationConnector(Identifiable, metaclass=ABCMeta):
|
|
|
624
624
|
return self
|
|
625
625
|
|
|
626
626
|
def getEcuCommPortInstances(self):
|
|
627
|
-
return list(sorted(filter(lambda a: isinstance(a, CommConnectorPort), self.elements
|
|
627
|
+
return list(sorted(filter(lambda a: isinstance(a, CommConnectorPort), self.elements), key=lambda o: o.getShortName()))
|
|
628
628
|
|
|
629
629
|
def createFramePort(self, short_name) -> FramePort:
|
|
630
630
|
if short_name not in self.elements:
|
|
@@ -104,7 +104,7 @@ class EcuInstance(FibexElement):
|
|
|
104
104
|
return self
|
|
105
105
|
|
|
106
106
|
def getCommControllers(self):
|
|
107
|
-
return list(sorted(filter(lambda a: isinstance(a, CommunicationController), self.elements
|
|
107
|
+
return list(sorted(filter(lambda a: isinstance(a, CommunicationController), self.elements), key= lambda o:o.short_name))
|
|
108
108
|
|
|
109
109
|
def createCanCommunicationController(self, short_name: str) -> CanCommunicationController:
|
|
110
110
|
if (not self.IsElementExists(short_name)):
|
|
@@ -131,7 +131,7 @@ class EcuInstance(FibexElement):
|
|
|
131
131
|
return self.getElement(short_name)
|
|
132
132
|
|
|
133
133
|
def getConnectors(self):
|
|
134
|
-
return list(sorted(filter(lambda a: isinstance(a, CommunicationConnector), self.elements
|
|
134
|
+
return list(sorted(filter(lambda a: isinstance(a, CommunicationConnector), self.elements), key= lambda o:o.short_name))
|
|
135
135
|
|
|
136
136
|
def createCanCommunicationConnector(self, short_name: str) -> CanCommunicationConnector:
|
|
137
137
|
if (not self.IsElementExists(short_name)):
|
|
@@ -392,13 +392,13 @@ class NmConfig(FibexElement):
|
|
|
392
392
|
return self.getElement(short_name)
|
|
393
393
|
|
|
394
394
|
def getCanNmClusters(self): # type: () -> List[CanNmCluster]
|
|
395
|
-
return list(sorted(filter(lambda a: isinstance(a, CanNmCluster), self.elements
|
|
395
|
+
return list(sorted(filter(lambda a: isinstance(a, CanNmCluster), self.elements), key= lambda o:o.short_name))
|
|
396
396
|
|
|
397
397
|
def getUdpNmClusters(self): # type: () -> List[UdpNmCluster]
|
|
398
|
-
return list(sorted(filter(lambda a: isinstance(a, UdpNmCluster), self.elements
|
|
398
|
+
return list(sorted(filter(lambda a: isinstance(a, UdpNmCluster), self.elements), key= lambda o:o.short_name))
|
|
399
399
|
|
|
400
400
|
def getNmClusters(self): # type: () -> List[NmCluster]
|
|
401
|
-
return list(sorted(filter(lambda a: isinstance(a, NmCluster), self.elements
|
|
401
|
+
return list(sorted(filter(lambda a: isinstance(a, NmCluster), self.elements), key= lambda o:o.short_name))
|
|
402
402
|
|
|
403
403
|
def getNmClusterCouplings(self):
|
|
404
404
|
return self.nmClusterCouplings
|
|
@@ -467,13 +467,13 @@ class NmCluster(Identifiable, metaclass=ABCMeta):
|
|
|
467
467
|
return self.getElement(short_name)
|
|
468
468
|
|
|
469
469
|
def getCanNmNodes(self) -> List[CanNmNode]:
|
|
470
|
-
return list(sorted(filter(lambda a: isinstance(a, CanNmNode), self.elements
|
|
470
|
+
return list(sorted(filter(lambda a: isinstance(a, CanNmNode), self.elements), key= lambda o:o.short_name))
|
|
471
471
|
|
|
472
472
|
def getUdpNmNodes(self) -> List[UdpNmNode]:
|
|
473
|
-
return list(sorted(filter(lambda a: isinstance(a, UdpNmNode), self.elements
|
|
473
|
+
return list(sorted(filter(lambda a: isinstance(a, UdpNmNode), self.elements), key= lambda o:o.short_name))
|
|
474
474
|
|
|
475
475
|
def getNmNodes(self) -> List[NmNode]:
|
|
476
|
-
return list(sorted(filter(lambda a: isinstance(a, NmNode), self.elements
|
|
476
|
+
return list(sorted(filter(lambda a: isinstance(a, NmNode), self.elements), key= lambda o:o.short_name))
|
|
477
477
|
|
|
478
478
|
def getNmNodeDetectionEnabled(self):
|
|
479
479
|
return self.nmNodeDetectionEnabled
|
|
@@ -269,7 +269,7 @@ class SystemMapping(Identifiable):
|
|
|
269
269
|
return self.swMappings
|
|
270
270
|
|
|
271
271
|
def getSwcToEcuMappings(self) -> List[SwcToEcuMapping]:
|
|
272
|
-
return list(sorted(filter(lambda a: isinstance(a, SwcToEcuMapping), self.elements
|
|
272
|
+
return list(sorted(filter(lambda a: isinstance(a, SwcToEcuMapping), self.elements), key=lambda o: o.short_name))
|
|
273
273
|
|
|
274
274
|
def createSwcToEcuMapping(self, short_name: str) -> SwcToEcuMapping:
|
|
275
275
|
if short_name not in self.elements:
|
|
@@ -401,16 +401,16 @@ class System(ARElement):
|
|
|
401
401
|
return self
|
|
402
402
|
|
|
403
403
|
def getMappings(self) -> List[SystemMapping]:
|
|
404
|
-
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements
|
|
404
|
+
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements), key=lambda o: o.short_name))
|
|
405
405
|
|
|
406
406
|
def getSystemMappings(self) -> List[SystemMapping]:
|
|
407
|
-
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements
|
|
407
|
+
return list(sorted(filter(lambda a: isinstance(a, SystemMapping), self.elements), key=lambda o: o.short_name))
|
|
408
408
|
|
|
409
409
|
def createSystemMapping(self, short_name) -> SystemMapping:
|
|
410
|
-
if
|
|
410
|
+
if not self.IsElementExists(short_name):
|
|
411
411
|
mapping = SystemMapping(self, short_name)
|
|
412
|
-
self.
|
|
413
|
-
return self.
|
|
412
|
+
self.addElement(mapping)
|
|
413
|
+
return self.getElement(short_name, SystemMapping)
|
|
414
414
|
|
|
415
415
|
def getPncVectorLength(self):
|
|
416
416
|
return self.pncVectorLength
|
|
@@ -1,21 +1,116 @@
|
|
|
1
|
+
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import DateTime, NameToken, RevisionLabelString, String
|
|
1
2
|
from ....M2.MSR.Documentation.TextModel.LanguageDataModel import LEnum
|
|
2
|
-
from ....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguagePlainText
|
|
3
|
+
from ....M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph, MultiLanguagePlainText
|
|
3
4
|
from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
4
5
|
from typing import List
|
|
5
6
|
|
|
7
|
+
|
|
8
|
+
class Modification(ARObject):
|
|
9
|
+
def __init__(self):
|
|
10
|
+
super().__init__()
|
|
11
|
+
|
|
12
|
+
self.change: MultiLanguageOverviewParagraph = None
|
|
13
|
+
self.reason: MultiLanguageOverviewParagraph = None
|
|
14
|
+
|
|
15
|
+
def getChange(self) -> MultiLanguageOverviewParagraph:
|
|
16
|
+
return self.change
|
|
17
|
+
|
|
18
|
+
def setChange(self, value: MultiLanguageOverviewParagraph):
|
|
19
|
+
if value is not None:
|
|
20
|
+
self.change = value
|
|
21
|
+
return self
|
|
22
|
+
|
|
23
|
+
def getReason(self) -> MultiLanguageOverviewParagraph:
|
|
24
|
+
return self.reason
|
|
25
|
+
|
|
26
|
+
def setReason(self, value: MultiLanguageOverviewParagraph):
|
|
27
|
+
if value is not None:
|
|
28
|
+
self.reason = value
|
|
29
|
+
return self
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class DocRevision(ARObject):
|
|
33
|
+
def __init__(self):
|
|
34
|
+
super().__init__()
|
|
35
|
+
|
|
36
|
+
self.date: DateTime = None
|
|
37
|
+
self.issuedBy: String = None
|
|
38
|
+
self.modifications: List[Modification] = []
|
|
39
|
+
self.revisionLabel: RevisionLabelString = None
|
|
40
|
+
self.revisionLabelP1: RevisionLabelString = None
|
|
41
|
+
self.revisionLabelP2: RevisionLabelString = None
|
|
42
|
+
self.state: NameToken = None
|
|
43
|
+
|
|
44
|
+
def getDate(self) -> DateTime:
|
|
45
|
+
return self.date
|
|
46
|
+
|
|
47
|
+
def setDate(self, value: DateTime):
|
|
48
|
+
if value is not None:
|
|
49
|
+
self.date = value
|
|
50
|
+
return self
|
|
51
|
+
|
|
52
|
+
def getIssuedBy(self) -> String:
|
|
53
|
+
return self.issuedBy
|
|
54
|
+
|
|
55
|
+
def setIssuedBy(self, value: String):
|
|
56
|
+
if value is not None:
|
|
57
|
+
self.issuedBy = value
|
|
58
|
+
return self
|
|
59
|
+
|
|
60
|
+
def getModifications(self) -> List[Modification]:
|
|
61
|
+
return self.modifications
|
|
62
|
+
|
|
63
|
+
def addModification(self, value: List[Modification]):
|
|
64
|
+
if value is not None:
|
|
65
|
+
self.modifications.append(value)
|
|
66
|
+
return self
|
|
67
|
+
|
|
68
|
+
def getRevisionLabel(self) -> RevisionLabelString:
|
|
69
|
+
return self.revisionLabel
|
|
70
|
+
|
|
71
|
+
def setRevisionLabel(self, value: RevisionLabelString):
|
|
72
|
+
if value is not None:
|
|
73
|
+
self.revisionLabel = value
|
|
74
|
+
return self
|
|
75
|
+
|
|
76
|
+
def getRevisionLabelP1(self) -> RevisionLabelString:
|
|
77
|
+
return self.revisionLabelP1
|
|
78
|
+
|
|
79
|
+
def setRevisionLabelP1(self, value: RevisionLabelString):
|
|
80
|
+
if value is not None:
|
|
81
|
+
self.revisionLabelP1 = value
|
|
82
|
+
return self
|
|
83
|
+
|
|
84
|
+
def getRevisionLabelP2(self) -> RevisionLabelString:
|
|
85
|
+
return self.revisionLabelP2
|
|
86
|
+
|
|
87
|
+
def setRevisionLabelP2(self, value: RevisionLabelString):
|
|
88
|
+
if value is not None:
|
|
89
|
+
self.revisionLabelP2 = value
|
|
90
|
+
return self
|
|
91
|
+
|
|
92
|
+
def getState(self) -> NameToken:
|
|
93
|
+
return self.state
|
|
94
|
+
|
|
95
|
+
def setState(self, value: NameToken):
|
|
96
|
+
if value is not None:
|
|
97
|
+
self.state = value
|
|
98
|
+
return self
|
|
99
|
+
|
|
100
|
+
|
|
6
101
|
class AdminData(ARObject):
|
|
7
102
|
def __init__(self):
|
|
8
103
|
super().__init__()
|
|
9
104
|
|
|
10
|
-
self.DocRevisions
|
|
11
|
-
self.language = None
|
|
12
|
-
self.sdgs = []
|
|
13
|
-
self.usedLanguages = None
|
|
105
|
+
self.DocRevisions: List[DocRevision] = []
|
|
106
|
+
self.language: LEnum = None
|
|
107
|
+
self.sdgs: List = []
|
|
108
|
+
self.usedLanguages: MultiLanguagePlainText = None
|
|
14
109
|
|
|
15
110
|
def getDocRevisions(self):
|
|
16
111
|
return self.DocRevisions
|
|
17
112
|
|
|
18
|
-
def
|
|
113
|
+
def addDocRevision(self, value: DocRevision):
|
|
19
114
|
self.DocRevisions.append(value)
|
|
20
115
|
return self
|
|
21
116
|
|
|
@@ -39,5 +134,3 @@ class AdminData(ARObject):
|
|
|
39
134
|
def setUsedLanguages(self, value):
|
|
40
135
|
self.usedLanguages = value
|
|
41
136
|
return self
|
|
42
|
-
|
|
43
|
-
|
|
@@ -9,9 +9,9 @@ import xml.etree.ElementTree as ET
|
|
|
9
9
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
10
10
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
11
11
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
|
|
12
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean
|
|
12
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean, DateTime
|
|
13
13
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Integer, PositiveInteger, TimeValue
|
|
14
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, Limit
|
|
14
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, Limit, RevisionLabelString
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class AbstractARXMLParser:
|
|
@@ -84,7 +84,7 @@ class AbstractARXMLParser:
|
|
|
84
84
|
return literal
|
|
85
85
|
self.raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
|
|
86
86
|
|
|
87
|
-
def getChildElementLiteralValueList(self, element: ET.Element, key: str) ->
|
|
87
|
+
def getChildElementLiteralValueList(self, element: ET.Element, key: str) -> List[ARLiteral]:
|
|
88
88
|
child_elements = self.findall(element, key)
|
|
89
89
|
results = []
|
|
90
90
|
for child_element in child_elements:
|
|
@@ -107,7 +107,7 @@ class AbstractARXMLParser:
|
|
|
107
107
|
literal.setValue(child_element.text)
|
|
108
108
|
return literal
|
|
109
109
|
|
|
110
|
-
def getChildElementOptionalRevisionLabelString(self, element: ET.Element, key: str) ->
|
|
110
|
+
def getChildElementOptionalRevisionLabelString(self, element: ET.Element, key: str) -> RevisionLabelString:
|
|
111
111
|
child_element = self.find(element, key)
|
|
112
112
|
literal = None
|
|
113
113
|
if (child_element is not None) and (child_element.text is not None):
|
|
@@ -115,7 +115,7 @@ class AbstractARXMLParser:
|
|
|
115
115
|
m = re.match(r'[0-9]+\.[0-9]+\.[0-9]+([\._;].*)?', child_element.text)
|
|
116
116
|
if not m:
|
|
117
117
|
raise ValueError("Invalid RevisionLabelString <%s>" % child_element.text)
|
|
118
|
-
literal =
|
|
118
|
+
literal = RevisionLabelString()
|
|
119
119
|
self.readARObjectAttributes(child_element, literal)
|
|
120
120
|
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
121
121
|
if child_element.text is None:
|
|
@@ -124,6 +124,9 @@ class AbstractARXMLParser:
|
|
|
124
124
|
literal.setValue(child_element.text)
|
|
125
125
|
return literal
|
|
126
126
|
|
|
127
|
+
def getChildElementOptionalDataTime(self, element: ET.Element, key: str) -> DateTime:
|
|
128
|
+
return self.getChildElementOptionalLiteral(element, key)
|
|
129
|
+
|
|
127
130
|
def _convertStringToBooleanValue(self, value: str) -> bool:
|
|
128
131
|
if (value == "true"):
|
|
129
132
|
return True
|