armodel 1.8.0__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 (49) hide show
  1. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +0 -1
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +14 -14
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +2 -3
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +1 -1
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +7 -7
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +4 -4
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -3
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +3 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +3 -3
  11. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +86 -9
  12. armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py +1249 -0
  13. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +13 -10
  14. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +238 -225
  15. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +5 -4
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +46 -25
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +33 -3
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +18 -20
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -19
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +4 -4
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +71 -27
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +9 -9
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -8
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +2 -2
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +6 -6
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +6 -6
  29. armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
  30. armodel/parser/abstract_arxml_parser.py +8 -5
  31. armodel/parser/arxml_parser.py +332 -16
  32. armodel/tests/test_armodel/models/test_ECUCParameterDefTemplate.py +116 -0
  33. armodel/tests/test_armodel/models/test_Identifiable.py +85 -0
  34. armodel/tests/test_armodel/models/test_ar_object.py +85 -86
  35. armodel/tests/test_armodel/models/test_ar_package.py +70 -70
  36. armodel/tests/test_armodel/models/test_ar_ref.py +36 -36
  37. armodel/tests/test_armodel/models/test_common_structure.py +37 -35
  38. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  39. armodel/tests/test_armodel/models/test_general_structure.py +19 -18
  40. armodel/tests/test_armodel/models/test_port_interface.py +2 -6
  41. armodel/tests/test_armodel/parser/test_arxml_parser.py +8 -8
  42. armodel/writer/abstract_arxml_writer.py +6 -2
  43. armodel/writer/arxml_writer.py +376 -29
  44. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/METADATA +17 -1
  45. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/RECORD +49 -46
  46. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/LICENSE +0 -0
  47. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/WHEEL +0 -0
  48. {armodel-1.8.0.dist-info → armodel-1.8.1.dist-info}/entry_points.txt +0 -0
  49. {armodel-1.8.0.dist-info → armodel-1.8.1.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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key=lambda o: o.getShortName()))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key= lambda o:o.short_name))
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.values()), key=lambda o: o.short_name))
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.values()), key=lambda o: o.short_name))
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.values()), key=lambda o: o.short_name))
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 (short_name not in self.elements):
410
+ if not self.IsElementExists(short_name):
411
411
  mapping = SystemMapping(self, short_name)
412
- self.elements[short_name] = mapping
413
- return self.elements[short_name]
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 = [] # 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
-
@@ -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