armodel 1.6.4__py3-none-any.whl → 1.7.1__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 (43) hide show
  1. armodel/cli/arxml_format_cli.py +14 -11
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
  6. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
  8. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
  9. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
  10. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
  11. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
  12. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
  14. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
  15. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
  16. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
  17. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
  18. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
  19. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
  22. armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
  23. armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
  24. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
  25. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
  26. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
  27. armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
  28. armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
  29. armodel/models/M2/MSR/Documentation/__init__.py +1 -1
  30. armodel/models/__init__.py +15 -2
  31. armodel/parser/abstract_arxml_parser.py +55 -18
  32. armodel/parser/arxml_parser.py +344 -101
  33. armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
  34. armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
  35. armodel/tests/test_armodel/parser/test_system.py +2 -2
  36. armodel/writer/abstract_arxml_writer.py +17 -8
  37. armodel/writer/arxml_writer.py +291 -78
  38. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
  39. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
  40. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
  41. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
  42. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
  43. {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,54 @@
1
+ from typing import List
2
+
3
+ from ......M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import Paginateable
4
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum
5
+
6
+ class ListEnum(AREnum):
7
+
8
+ NUMBER = 'number'
9
+ UNNUMBER = 'unnumber'
10
+
11
+ def __init__(self,):
12
+ super().__init__((
13
+ ListEnum.NUMBER,
14
+ ListEnum.UNNUMBER
15
+ ))
16
+
17
+ class Item(Paginateable):
18
+ def __init__(self):
19
+ super().__init__()
20
+
21
+ self.itemContents = None
22
+
23
+ def getItemContents(self):
24
+ return self.itemContents
25
+
26
+ def setItemContents(self, value):
27
+ self.itemContents = value
28
+ return self
29
+
30
+ class ListElement(Paginateable):
31
+ '''
32
+ This meta-class represents the ability to express a list. The kind of list is specified in the attribute.
33
+ In AUTOSAR standard class name shall be List, but it is conflict with Python List and renamed to ListElement
34
+ '''
35
+ def __init__(self):
36
+ super().__init__()
37
+
38
+ self.items = [] # type: List[Item]
39
+ self.type = None # type: ListEnum
40
+
41
+ def getItems(self):
42
+ return self.items
43
+
44
+ def addItem(self, value: Item):
45
+ self.items.append(value)
46
+ return self
47
+
48
+ def getType(self):
49
+ return self.type
50
+
51
+ def setType(self, value):
52
+ self.type = value
53
+ return self
54
+
@@ -0,0 +1,9 @@
1
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
2
+
3
+ class DocumentViewSelectable(ARObject):
4
+ def __init__(self):
5
+ super().__init__()
6
+
7
+ class Paginateable(DocumentViewSelectable):
8
+ def __init__(self):
9
+ super().__init__()
@@ -0,0 +1,25 @@
1
+ from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
2
+ from ......M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
3
+ from ......M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageParagraph
4
+ from typing import List
5
+
6
+ class DocumentationBlock(ARObject):
7
+ def __init__(self):
8
+ super().__init__()
9
+
10
+ self.ps = [] # type: List[MultiLanguageParagraph]
11
+ self.lists = [] # type: List[ListElement]
12
+
13
+ def addP(self, p: MultiLanguageParagraph):
14
+ self.ps.append(p)
15
+ return self
16
+
17
+ def getPs(self) -> List[MultiLanguageParagraph]:
18
+ return self.ps
19
+
20
+ def getLists(self):
21
+ return self.lists
22
+
23
+ def addList(self, value):
24
+ self.lists.append(value)
25
+ return self
@@ -1,16 +1,44 @@
1
+ from abc import ABCMeta
2
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
1
3
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
2
4
 
3
- class LOverviewParagraph(ARObject):
5
+ class LEnum (ARLiteral):
4
6
  def __init__(self):
5
7
  super().__init__()
6
8
 
7
- self.l = ""
9
+ class LanguageSpecific(ARObject, metaclass = ABCMeta):
10
+ def __init__(self):
11
+ super().__init__()
12
+
13
+ self.l = None # type: LEnum
8
14
  self.value = ""
9
15
 
16
+ def getL(self):
17
+ return self.l
18
+
19
+ def setL(self, value):
20
+ self.l = value
21
+ return self
10
22
 
11
- class LLongName(ARObject):
23
+ def getValue(self):
24
+ return self.value
25
+
26
+ def setValue(self, value):
27
+ self.value = value
28
+ return self
29
+
30
+ class LOverviewParagraph(LanguageSpecific):
12
31
  def __init__(self):
13
32
  super().__init__()
14
33
 
15
- self.l = ""
16
- self.value = ""
34
+ class LParagraph(LanguageSpecific):
35
+ def __init__(self):
36
+ super().__init__()
37
+
38
+ class LLongName(LanguageSpecific):
39
+ def __init__(self):
40
+ super().__init__()
41
+
42
+ class LPlainText(LanguageSpecific):
43
+ def __init__(self):
44
+ super().__init__()
@@ -35,11 +35,24 @@ class MultilanguageLongName(ARObject):
35
35
  def __init__(self):
36
36
  super().__init__()
37
37
 
38
- self.l4 = [] # type:List[LLongName]
38
+ self.l4 = [] # type:List[LLongName]
39
39
 
40
40
  def addL4(self, l4: LLongName):
41
41
  self.l4.append(l4)
42
42
  return self
43
43
 
44
44
  def getL4s(self) -> List[LLongName]:
45
- return self.l4
45
+ return self.l4
46
+
47
+ class MultiLanguagePlainText(ARObject):
48
+ def __init__(self):
49
+ super().__init__()
50
+
51
+ self.l10s = [] # type: List[LPlainText]
52
+
53
+ def getL10s(self):
54
+ return self.l10s
55
+
56
+ def addL10(self, value):
57
+ self.l10s.append(value)
58
+ return self
@@ -1,3 +1,3 @@
1
1
  from .Annotation import *
2
- from .BlockElements import *
2
+ from .TextModel.BlockElements import *
3
3
  from .TextModel import *
@@ -8,8 +8,10 @@ from .M2.MSR.AsamHdo.Constraints.GlobalConstraints import *
8
8
  from .M2.MSR.DataDictionary import *
9
9
  from .M2.MSR.Documentation import *
10
10
  from .M2.MSR.Documentation.Annotation import *
11
- from .M2.MSR.Documentation.BlockElements import *
12
11
  from .M2.MSR.Documentation.TextModel import *
12
+ from .M2.MSR.Documentation.TextModel.BlockElements import *
13
+ from .M2.MSR.Documentation.TextModel.BlockElements.ListElements import *
14
+ from .M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import *
13
15
  from .M2.MSR.Documentation.TextModel.LanguageDataModel import *
14
16
  from .M2.MSR.Documentation.TextModel.MultilanguageData import *
15
17
  from .M2.AUTOSARTemplates.AutosarTopLevelStructure import *
@@ -19,10 +21,13 @@ from .M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import *
19
21
  from .M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import *
20
22
  from .M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import *
21
23
  from .M2.AUTOSARTemplates.CommonStructure import *
24
+ from .M2.AUTOSARTemplates.CommonStructure.Filter import *
22
25
  from .M2.AUTOSARTemplates.CommonStructure.Implementation import *
23
26
  from .M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import *
24
27
  from .M2.AUTOSARTemplates.CommonStructure.InternalBehavior import *
25
28
  from .M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import *
29
+ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import *
30
+ from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import *
26
31
  from .M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import *
27
32
  from .M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import *
28
33
  from .M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import *
@@ -42,9 +47,17 @@ from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMem
42
47
  from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import *
43
48
  from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import *
44
49
  from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import *
50
+ from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
51
+ from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
52
+ from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
53
+ from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
54
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
45
55
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
56
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
46
57
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
47
58
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
48
59
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
49
60
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
50
- from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
61
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
62
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import *
63
+ from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import *
@@ -9,7 +9,7 @@ import xml.etree.ElementTree as ET
9
9
 
10
10
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
11
11
 
12
- from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical
12
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean, Integer, TimeValue
13
13
 
14
14
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
15
15
  from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
@@ -73,7 +73,7 @@ class AbstractARXMLParser:
73
73
  '''
74
74
 
75
75
  def getChildElementLiteral(self, short_name: str, element: ET.Element, key: str) -> ARLiteral:
76
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
76
+ child_element = self.find(element, key)
77
77
  if (child_element is not None):
78
78
  literal = ARLiteral()
79
79
  self.readElementAttributes(child_element, literal)
@@ -82,7 +82,7 @@ class AbstractARXMLParser:
82
82
  self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
83
83
 
84
84
  def getChildElementLiteralValueList(self, element: ET.Element, key: str) -> ARFloat:
85
- child_elements = element.findall("./xmlns:%s" % key, self.nsmap)
85
+ child_elements = self.findall(element, key)
86
86
  results = []
87
87
  for child_element in child_elements:
88
88
  literal = ARLiteral()
@@ -91,10 +91,27 @@ class AbstractARXMLParser:
91
91
  return results
92
92
 
93
93
  def getChildElementOptionalLiteral(self, element: ET.Element, key: str) -> ARLiteral:
94
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
94
+ child_element = self.find(element, key)
95
95
  literal = None
96
96
  if (child_element is not None):
97
- self.logger.debug("readChildOptionalElementLiteral : %s" % child_element.text)
97
+ self.logger.debug("getChildElementOptionalLiteral : %s" % child_element.text)
98
+ literal = ARLiteral()
99
+ self.readElementAttributes(child_element, literal)
100
+ # Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
101
+ if child_element.text is None:
102
+ literal.setValue("")
103
+ else:
104
+ literal.setValue(child_element.text)
105
+ return literal
106
+
107
+ def getChildElementOptionalRevisionLabelString(self, element: ET.Element, key: str) -> ARLiteral:
108
+ child_element = self.find(element, key)
109
+ literal = None
110
+ if (child_element is not None) and (child_element.text is not None):
111
+ self.logger.debug("getChildElementOptionalRevisionLabelString : %s" % child_element.text)
112
+ m = re.match(r'[0-9]+\.[0-9]+\.[0-9]+([\._;].*)?', child_element.text)
113
+ if not m:
114
+ raise ValueError("Invalid RevisionLabelString <%s>" % child_element.text)
98
115
  literal = ARLiteral()
99
116
  self.readElementAttributes(child_element, literal)
100
117
  # Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
@@ -110,7 +127,7 @@ class AbstractARXMLParser:
110
127
  return False
111
128
 
112
129
  def getChildElementOptionalFloatValue(self, element: ET.Element, key: str) -> ARFloat:
113
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
130
+ child_element = self.find(element, key)
114
131
  float_value = None
115
132
  if (child_element is not None) and (child_element.text is not None):
116
133
  float_value = ARFloat()
@@ -118,26 +135,34 @@ class AbstractARXMLParser:
118
135
  return float_value
119
136
 
120
137
  def getChildElementFloatValueList(self, element: ET.Element, key: str) -> ARFloat:
121
- child_elements = element.findall("./xmlns:%s" % key, self.nsmap)
138
+ child_elements = self.findall(element, key)
122
139
  results = []
123
140
  for child_element in child_elements:
124
141
  float_value = ARFloat()
125
142
  float_value.setValue(child_element.text)
126
143
  results.append(float_value)
127
144
  return results
145
+
146
+ def getChildElementOptionalTimeValue(self, element: ET.Element, key: str) -> TimeValue:
147
+ child_element = self.find(element, key)
148
+ time_value = None
149
+ if (child_element is not None) and (child_element.text is not None):
150
+ time_value = TimeValue()
151
+ time_value.setValue(child_element.text)
152
+ return time_value
128
153
 
129
- def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) -> ARBoolean:
154
+ def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) -> Boolean:
130
155
  literal = self.getChildElementLiteral(short_name, element, key)
131
- bool_value = ARBoolean()
156
+ bool_value = Boolean()
132
157
  bool_value.timestamp = literal.timestamp
133
158
  bool_value.value = self._convertStringToBooleanValue(literal._value)
134
159
  return bool_value
135
160
 
136
- def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> ARBoolean:
161
+ def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> Boolean:
137
162
  literal = self.getChildElementOptionalLiteral(element, key)
138
163
  if (literal == None):
139
164
  return None
140
- bool_value = ARBoolean()
165
+ bool_value = Boolean()
141
166
  bool_value.timestamp = literal.timestamp
142
167
  bool_value.setValue(literal.getValue())
143
168
  return bool_value
@@ -162,16 +187,25 @@ class AbstractARXMLParser:
162
187
  '''
163
188
 
164
189
  def getChildElementOptionalNumericalValue(self, element: ET.Element, key: str) -> ARNumerical:
165
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
190
+ child_element = self.find(element, key)
166
191
  if child_element == None:
167
192
  return None
168
193
  numerical = ARNumerical()
169
194
  self.readElementAttributes(child_element, numerical)
170
195
  numerical.setValue(child_element.text)
171
196
  return numerical
197
+
198
+ def getChildElementOptionalIntegerValue(self, element: ET.Element, key: str) -> Integer:
199
+ child_element = self.find(element, key)
200
+ if child_element == None:
201
+ return None
202
+ numerical = Integer()
203
+ self.readElementAttributes(child_element, numerical)
204
+ numerical.setValue(child_element.text)
205
+ return numerical
172
206
 
173
207
  def getChildElementNumericalValueList(self, element: ET.Element, key: str) -> List[ARNumerical]:
174
- child_elements = element.findall("./xmlns:%s" % key, self.nsmap)
208
+ child_elements = self.findall(element, key)
175
209
  results = []
176
210
  for child_element in child_elements:
177
211
  numerical = ARNumerical()
@@ -180,7 +214,7 @@ class AbstractARXMLParser:
180
214
  return results
181
215
 
182
216
  def getChildLimitElement(self, element: ET.Element, key: str) -> Limit:
183
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
217
+ child_element = self.find(element, key)
184
218
  if (child_element is not None):
185
219
  limit = Limit()
186
220
  self.readElementAttributes(child_element, limit)
@@ -194,18 +228,21 @@ class AbstractARXMLParser:
194
228
 
195
229
  def _getChildElementRefTypeDestAndValue(self, element) -> RefType:
196
230
  ref = RefType()
197
- ref.dest = element.attrib['DEST']
198
- ref.value = element.text
231
+ if 'BASE' in element.attrib:
232
+ ref.setBase(element.attrib['BASE'])
233
+ if 'DEST' in element.attrib:
234
+ ref.setDest(element.attrib['DEST'])
235
+ ref.setValue(element.text)
199
236
  return ref
200
237
 
201
238
  def getChildElementRefType(self, short_name: str, element: ET.Element, key: str) -> RefType:
202
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
239
+ child_element = self.find(element, key)
203
240
  if (child_element is not None):
204
241
  return self._getChildElementRefTypeDestAndValue(child_element)
205
242
  self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
206
243
 
207
244
  def getChildElementOptionalRefType(self, element:ET.Element, key: str) -> RefType:
208
- child_element = element.find("./xmlns:%s" % key, self.nsmap)
245
+ child_element = self.find(element, key)
209
246
  if (child_element is not None):
210
247
  return self._getChildElementRefTypeDestAndValue(child_element)
211
248
  return None