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.
Files changed (54) hide show
  1. armodel/cli/arxml_dump_cli.py +3 -3
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +3 -3
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +81 -36
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +104 -30
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +12 -16
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +70 -0
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +12 -9
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +22 -11
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +29 -22
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +26 -9
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HardwareConfiguration.py +33 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/HeapUsage.py +10 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +8 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/SoftwareContext.py +23 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/StackUsage.py +93 -0
  16. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +39 -5
  17. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +735 -27
  18. armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +48 -6
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +5 -5
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +20 -3
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +3 -0
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +55 -1
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +41 -3
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +53 -15
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +8 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -8
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +239 -5
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +56 -6
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +91 -55
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +10 -1
  31. armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +186 -24
  32. armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +34 -3
  33. armodel/models/M2/MSR/DataDictionary/AuxillaryObjects.py +4 -4
  34. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +7 -0
  35. armodel/models/M2/MSR/DataDictionary/RecordLayout.py +130 -37
  36. armodel/models/M2/MSR/DataDictionary/ServiceProcessTask.py +33 -0
  37. armodel/models/__init__.py +4 -0
  38. armodel/parser/abstract_arxml_parser.py +30 -27
  39. armodel/parser/arxml_parser.py +683 -371
  40. armodel/tests/test_armodel/models/test_ar_object.py +6 -2
  41. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  42. armodel/tests/test_armodel/models/test_m2_msr.py +5 -5
  43. armodel/tests/test_armodel/models/test_port_interface.py +4 -4
  44. armodel/tests/test_armodel/parser/test_parse_bswmd.py +48 -48
  45. armodel/tests/test_armodel/parser/test_sw_components.py +1 -1
  46. armodel/tests/test_armodel/parser/test_system.py +0 -1
  47. armodel/writer/abstract_arxml_writer.py +10 -0
  48. armodel/writer/arxml_writer.py +668 -358
  49. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/METADATA +34 -1
  50. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/RECORD +54 -48
  51. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/LICENSE +0 -0
  52. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/WHEEL +0 -0
  53. {armodel-1.7.1.dist-info → armodel-1.7.3.dist-info}/entry_points.txt +0 -0
  54. {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.readElementAttributes(child_element, literal)
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.readElementAttributes(child_element, literal)
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.readElementAttributes(child_element, literal)
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 (literal == None):
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.readElementAttributes(child_element, numerical)
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.readElementAttributes(child_element, numerical)
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.readElementAttributes(child_element, limit)
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 readElementAttributes(self, element: ET.Element, ar_object: ARObject):
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