armodel 1.7.1__py3-none-any.whl → 1.7.3__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/cli/arxml_dump_cli.py +3 -3
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
- armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +735 -27
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
- armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +20 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
- armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
- armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
- armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
- armodel/models/__init__.py +4 -0
- armodel/parser/abstract_arxml_parser.py +30 -27
- armodel/parser/arxml_parser.py +683 -371
- armodel/tests/test_armodel/models/test_ar_object.py +6 -2
- armodel/tests/test_armodel/models/test_datatype.py +4 -4
- armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
- armodel/tests/test_armodel/models/test_port_interface.py +4 -4
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
- armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
- armodel/tests/test_armodel/parser/test_system.py +0 -1
- armodel/writer/abstract_arxml_writer.py +10 -0
- armodel/writer/arxml_writer.py +668 -358
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
- {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
from abc import ABCMeta
|
|
3
2
|
from typing import List
|
|
4
3
|
from colorama import Fore
|
|
@@ -8,15 +7,12 @@ import logging
|
|
|
8
7
|
import xml.etree.ElementTree as ET
|
|
9
8
|
|
|
10
9
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
11
|
-
|
|
12
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean, Integer, TimeValue
|
|
13
|
-
|
|
10
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum, ARFloat, ARLiteral, ARNumerical, Boolean, Integer, PositiveInteger, TimeValue
|
|
14
11
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
15
12
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
16
13
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
|
|
17
14
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Limit
|
|
18
15
|
|
|
19
|
-
|
|
20
16
|
class AbstractARXMLParser:
|
|
21
17
|
__metaclass__ = ABCMeta
|
|
22
18
|
|
|
@@ -49,6 +45,12 @@ class AbstractARXMLParser:
|
|
|
49
45
|
else:
|
|
50
46
|
raise ValueError(error_msg)
|
|
51
47
|
|
|
48
|
+
def notImplemented(self, error_msg):
|
|
49
|
+
if (self.options['warning'] == True):
|
|
50
|
+
self.logger.error(Fore.RED + error_msg + Fore.WHITE)
|
|
51
|
+
else:
|
|
52
|
+
raise NotImplementedError(error_msg)
|
|
53
|
+
|
|
52
54
|
def _raiseWarning(self, error_msg):
|
|
53
55
|
self.logger.warning(error_msg)
|
|
54
56
|
|
|
@@ -76,7 +78,7 @@ class AbstractARXMLParser:
|
|
|
76
78
|
child_element = self.find(element, key)
|
|
77
79
|
if (child_element is not None):
|
|
78
80
|
literal = ARLiteral()
|
|
79
|
-
self.
|
|
81
|
+
self.readARObjectAttributes(child_element, literal)
|
|
80
82
|
literal._value = child_element.text
|
|
81
83
|
return literal
|
|
82
84
|
self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
|
|
@@ -96,7 +98,7 @@ class AbstractARXMLParser:
|
|
|
96
98
|
if (child_element is not None):
|
|
97
99
|
self.logger.debug("getChildElementOptionalLiteral : %s" % child_element.text)
|
|
98
100
|
literal = ARLiteral()
|
|
99
|
-
self.
|
|
101
|
+
self.readARObjectAttributes(child_element, literal)
|
|
100
102
|
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
101
103
|
if child_element.text is None:
|
|
102
104
|
literal.setValue("")
|
|
@@ -113,14 +115,14 @@ class AbstractARXMLParser:
|
|
|
113
115
|
if not m:
|
|
114
116
|
raise ValueError("Invalid RevisionLabelString <%s>" % child_element.text)
|
|
115
117
|
literal = ARLiteral()
|
|
116
|
-
self.
|
|
118
|
+
self.readARObjectAttributes(child_element, literal)
|
|
117
119
|
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
118
120
|
if child_element.text is None:
|
|
119
121
|
literal.setValue("")
|
|
120
122
|
else:
|
|
121
123
|
literal.setValue(child_element.text)
|
|
122
124
|
return literal
|
|
123
|
-
|
|
125
|
+
|
|
124
126
|
def _convertStringToBooleanValue(self, value: str) -> bool:
|
|
125
127
|
if (value == "true"):
|
|
126
128
|
return True
|
|
@@ -131,6 +133,7 @@ class AbstractARXMLParser:
|
|
|
131
133
|
float_value = None
|
|
132
134
|
if (child_element is not None) and (child_element.text is not None):
|
|
133
135
|
float_value = ARFloat()
|
|
136
|
+
self.readARObjectAttributes(child_element, float_value)
|
|
134
137
|
float_value.setValue(child_element.text)
|
|
135
138
|
return float_value
|
|
136
139
|
|
|
@@ -160,7 +163,9 @@ class AbstractARXMLParser:
|
|
|
160
163
|
|
|
161
164
|
def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> Boolean:
|
|
162
165
|
literal = self.getChildElementOptionalLiteral(element, key)
|
|
163
|
-
if
|
|
166
|
+
if literal == None:
|
|
167
|
+
return None
|
|
168
|
+
if literal.getText() == "":
|
|
164
169
|
return None
|
|
165
170
|
bool_value = Boolean()
|
|
166
171
|
bool_value.timestamp = literal.timestamp
|
|
@@ -173,25 +178,12 @@ class AbstractARXMLParser:
|
|
|
173
178
|
return int(m.group(1), 16)
|
|
174
179
|
return int(value)
|
|
175
180
|
|
|
176
|
-
'''
|
|
177
|
-
def getChildElementNumberValue(self, short_name: str, element: ET.Element, key: str) -> int:
|
|
178
|
-
value = self.getChildElement(short_name, element, key)
|
|
179
|
-
return self._convertStringToNumberValue(value)
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
def getChildElementOptionalNumberValue(self, element: ET.Element, key: str) -> int:
|
|
183
|
-
value = self.getChildElementOptionalValue(element, key)
|
|
184
|
-
if (value == None):
|
|
185
|
-
return None
|
|
186
|
-
return self._convertStringToNumberValue(value)
|
|
187
|
-
'''
|
|
188
|
-
|
|
189
181
|
def getChildElementOptionalNumericalValue(self, element: ET.Element, key: str) -> ARNumerical:
|
|
190
182
|
child_element = self.find(element, key)
|
|
191
183
|
if child_element == None:
|
|
192
184
|
return None
|
|
193
185
|
numerical = ARNumerical()
|
|
194
|
-
self.
|
|
186
|
+
self.readARObjectAttributes(child_element, numerical)
|
|
195
187
|
numerical.setValue(child_element.text)
|
|
196
188
|
return numerical
|
|
197
189
|
|
|
@@ -200,8 +192,19 @@ class AbstractARXMLParser:
|
|
|
200
192
|
if child_element == None:
|
|
201
193
|
return None
|
|
202
194
|
numerical = Integer()
|
|
203
|
-
self.
|
|
195
|
+
self.readARObjectAttributes(child_element, numerical)
|
|
196
|
+
numerical.setValue(child_element.text)
|
|
197
|
+
return numerical
|
|
198
|
+
|
|
199
|
+
def getChildElementOptionalPositiveInteger(self, element: ET.Element, key: str) -> PositiveInteger:
|
|
200
|
+
child_element = self.find(element, key)
|
|
201
|
+
if child_element == None:
|
|
202
|
+
return None
|
|
203
|
+
numerical = PositiveInteger()
|
|
204
|
+
self.readARObjectAttributes(child_element, numerical)
|
|
204
205
|
numerical.setValue(child_element.text)
|
|
206
|
+
if numerical.getValue() < 0:
|
|
207
|
+
raise ValueError("Invalid PositiveInteger <%s>" % child_element.text)
|
|
205
208
|
return numerical
|
|
206
209
|
|
|
207
210
|
def getChildElementNumericalValueList(self, element: ET.Element, key: str) -> List[ARNumerical]:
|
|
@@ -217,7 +220,7 @@ class AbstractARXMLParser:
|
|
|
217
220
|
child_element = self.find(element, key)
|
|
218
221
|
if (child_element is not None):
|
|
219
222
|
limit = Limit()
|
|
220
|
-
self.
|
|
223
|
+
self.readARObjectAttributes(child_element, limit)
|
|
221
224
|
if ('INTERVAL-TYPE' in child_element.attrib):
|
|
222
225
|
limit.intervalType = child_element.attrib['INTERVAL-TYPE']
|
|
223
226
|
else:
|
|
@@ -262,7 +265,7 @@ class AbstractARXMLParser:
|
|
|
262
265
|
return element.attrib[key]
|
|
263
266
|
return None
|
|
264
267
|
|
|
265
|
-
def
|
|
268
|
+
def readARObjectAttributes(self, element: ET.Element, ar_object: ARObject):
|
|
266
269
|
ar_object.timestamp = self.readElementOptionalAttrib(element, "T") # read the timestamp
|
|
267
270
|
ar_object.uuid = self.readElementOptionalAttrib(element, "UUID") # read the uuid
|
|
268
271
|
|