armodel 1.7.9__py3-none-any.whl → 1.8.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 (58) hide show
  1. armodel/cli/arxml_format_cli.py +1 -0
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -12
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +14 -14
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +2 -3
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +1 -1
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +36 -34
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +4 -4
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +5 -0
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +3 -3
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +3 -3
  13. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +86 -9
  14. armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py +1249 -0
  15. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +13 -10
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +238 -225
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +5 -4
  18. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +46 -25
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +38 -3
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +18 -20
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -19
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +4 -4
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +71 -27
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +27 -17
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +11 -10
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +16 -10
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +2 -2
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +6 -6
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/RteEventToOsTaskMapping.py +35 -0
  32. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +25 -0
  33. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SecureCommunication.py +83 -0
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +90 -38
  35. armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
  36. armodel/models/__init__.py +2 -0
  37. armodel/models/utils/__init__.py +0 -0
  38. armodel/models/utils/uuid_mgr.py +23 -0
  39. armodel/parser/abstract_arxml_parser.py +13 -5
  40. armodel/parser/arxml_parser.py +412 -85
  41. armodel/tests/test_armodel/models/test_ECUCParameterDefTemplate.py +116 -0
  42. armodel/tests/test_armodel/models/test_Identifiable.py +85 -0
  43. armodel/tests/test_armodel/models/test_ar_object.py +85 -86
  44. armodel/tests/test_armodel/models/test_ar_package.py +70 -70
  45. armodel/tests/test_armodel/models/test_ar_ref.py +36 -36
  46. armodel/tests/test_armodel/models/test_common_structure.py +37 -35
  47. armodel/tests/test_armodel/models/test_datatype.py +140 -142
  48. armodel/tests/test_armodel/models/test_general_structure.py +19 -18
  49. armodel/tests/test_armodel/models/test_port_interface.py +2 -6
  50. armodel/tests/test_armodel/parser/test_arxml_parser.py +8 -8
  51. armodel/writer/abstract_arxml_writer.py +6 -2
  52. armodel/writer/arxml_writer.py +414 -57
  53. {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/METADATA +31 -1
  54. {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/RECORD +58 -51
  55. {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/LICENSE +0 -0
  56. {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/WHEEL +0 -0
  57. {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/entry_points.txt +0 -0
  58. {armodel-1.7.9.dist-info → armodel-1.8.1.dist-info}/top_level.txt +0 -0
@@ -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 = [] # type: List[DocRevision]
11
- self.language = None # type: LEnum
12
- self.sdgs = [] # type: List ## Sdg will cause the circular import
13
- self.usedLanguages = None # type: MultiLanguagePlainText
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 setDocRevisions(self, value):
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
-
@@ -63,9 +63,11 @@ from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
63
63
  from .M2.AUTOSARTemplates.SystemTemplate.DiagnosticConnection import *
64
64
  from .M2.AUTOSARTemplates.SystemTemplate.EcuResourceMapping import *
65
65
  from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
66
+ from .M2.AUTOSARTemplates.SystemTemplate.RteEventToOsTaskMapping import *
66
67
  from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
67
68
  from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
68
69
  from .M2.AUTOSARTemplates.SystemTemplate.SWmapping import *
70
+ from .M2.AUTOSARTemplates.SystemTemplate.SecureCommunication import *
69
71
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
70
72
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
71
73
  from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
File without changes
@@ -0,0 +1,23 @@
1
+ from typing import Dict, List
2
+
3
+ from ..M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
4
+
5
+
6
+ class UUIDMgr:
7
+ def __init__(self):
8
+ self.uuid_object_mappings = {} # type: Dict[str, List[ARObject]]
9
+
10
+ def addObject(self, obj: ARObject):
11
+ if obj.uuid is None:
12
+ return
13
+ if obj.uuid not in self.uuid_object_mappings:
14
+ self.uuid_object_mappings[obj.uuid] = []
15
+
16
+ uuid_obj_list = self.uuid_object_mappings[obj.uuid]
17
+ uuid_obj_list.append(obj)
18
+
19
+ def getObjects(self, uuid: str):
20
+ result = []
21
+ if uuid in self.uuid_object_mappings:
22
+ result = self.uuid_object_mappings[uuid]
23
+ return result
@@ -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) -> ARFloat:
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) -> ARLiteral:
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 = ARLiteral()
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
@@ -275,8 +278,12 @@ class AbstractARXMLParser:
275
278
  ar_object.timestamp = self.readElementOptionalAttrib(element, "T") # read the timestamp
276
279
  ar_object.uuid = self.readElementOptionalAttrib(element, "UUID") # read the uuid
277
280
 
281
+ AUTOSAR.getInstance().addARObject(ar_object)
282
+
278
283
  # if ar_object.timestamp is not None:
279
284
  # self.logger.debug("Timestamp: %s" % ar_object.timestamp)
285
+
286
+ '''
280
287
  if ar_object.uuid is not None:
281
288
  instance = AUTOSAR.getInstance()
282
289
  old_ar_object = instance.getARObjectByUUID(ar_object.uuid)
@@ -285,6 +292,7 @@ class AbstractARXMLParser:
285
292
  else:
286
293
  instance.addARObject(ar_object)
287
294
  # self.logger.debug("UUID: %s" % ar_object.uuid)
295
+ '''
288
296
 
289
297
  def getAUTOSARInfo(self, element: ET.Element, document: AUTOSAR):
290
298
  key = "{http://www.w3.org/2001/XMLSchema-instance}schemaLocation"