armodel 1.8.3__py3-none-any.whl → 1.8.5__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 (26) hide show
  1. armodel/cli/uuid_checker_cli.py +95 -0
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +12 -4
  3. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +7 -0
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +7 -4
  5. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +3 -2
  6. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +2 -2
  7. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +3 -3
  8. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +25 -30
  9. armodel/models/utils/uuid_mgr.py +6 -0
  10. armodel/parser/abstract_arxml_parser.py +1 -1
  11. armodel/parser/arxml_parser.py +40 -14
  12. armodel/tests/test_armodel/models/test_data_dictionary.py +15 -14
  13. armodel/tests/test_armodel/models/test_data_prototype.py +44 -41
  14. armodel/tests/test_armodel/models/test_general_structure.py +0 -5
  15. armodel/tests/test_armodel/models/test_implementation.py +4 -4
  16. armodel/tests/test_armodel/models/test_m2_msr.py +32 -32
  17. armodel/tests/test_armodel/models/test_port_interface.py +9 -10
  18. armodel/tests/test_armodel/models/test_port_prototype.py +4 -3
  19. armodel/tests/test_armodel/parser/test_sw_components.py +111 -1
  20. armodel/writer/arxml_writer.py +17 -3
  21. {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/METADATA +16 -1
  22. {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/RECORD +26 -25
  23. {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/entry_points.txt +1 -0
  24. {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/LICENSE +0 -0
  25. {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/WHEEL +0 -0
  26. {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,95 @@
1
+ import argparse
2
+ import pkg_resources
3
+ import logging
4
+ import sys
5
+ import os.path
6
+
7
+ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Referrable
8
+ from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
9
+ from ..parser.arxml_parser import ARXMLParser
10
+ from ..lib.cli_args_parser import InputFileParser
11
+
12
+
13
+ def perform_uuid_duplicate_check(args):
14
+ logger = logging.getLogger()
15
+
16
+ formatter = logging.Formatter('[%(levelname)s] : %(message)s')
17
+
18
+ stdout_handler = logging.StreamHandler(sys.stderr)
19
+ stdout_handler.setFormatter(formatter)
20
+
21
+ base_path = os.path.dirname(args.OUTPUT)
22
+ log_file = os.path.join(base_path, 'uuid_check.log')
23
+
24
+ if os.path.exists(log_file):
25
+ os.remove(log_file)
26
+
27
+ if args.verbose:
28
+ file_handler = logging.FileHandler(log_file)
29
+ file_handler.setFormatter(formatter)
30
+ file_handler.setLevel(logging.DEBUG)
31
+
32
+ logger.setLevel(logging.DEBUG)
33
+
34
+ if args.verbose:
35
+ stdout_handler.setLevel(logging.DEBUG)
36
+ else:
37
+ stdout_handler.setLevel(logging.INFO)
38
+
39
+ if args.verbose:
40
+ logger.addHandler(file_handler)
41
+ logger.addHandler(stdout_handler)
42
+
43
+ try:
44
+ options = {}
45
+ if args.warning:
46
+ options['warning'] = True
47
+
48
+ inputs = []
49
+ inputs.append(args.INPUT)
50
+ parser = InputFileParser(inputs)
51
+ filenames = parser.parse()
52
+
53
+ document = AUTOSAR().getInstance()
54
+ parser = ARXMLParser(options)
55
+
56
+ for filename in filenames:
57
+ parser.load(filename, document)
58
+
59
+ with open(args.OUTPUT, 'w') as f_out:
60
+ logger.info("Writing the duplicate UUIDs to <%s>", args.OUTPUT)
61
+ for uuid in document.getDuplicateUUIDs():
62
+ ar_objects = document.getARObjectByUUID(uuid)
63
+ if len(ar_objects) > 1:
64
+ f_out.write("Duplicate UUID found: %s \n" % uuid)
65
+ for ar_object in ar_objects:
66
+ if isinstance(ar_object, Referrable):
67
+ f_out.write(" - %s (%s)\n" % (ar_object.getFullName(), type(ar_object).__name__))
68
+ else:
69
+ raise NotImplementedError("Unsupported type <%s>" % type(ar_object))
70
+
71
+ except Exception as e:
72
+ logger.error(e)
73
+ if args.verbose:
74
+ raise e
75
+
76
+
77
+ def main():
78
+ version = pkg_resources.require("armodel")[0].version
79
+
80
+ ap = argparse.ArgumentParser()
81
+ ap.description = "arxml-format ver: %s" % version
82
+ ap.add_argument("-v", "--verbose", required=False, help="Print debug information", action="store_true")
83
+ ap.add_argument("--log", required=False, help="Log all information to file")
84
+ ap.add_argument("-w", "--warning", required=False, help="Skip the error and report it as warning message", action="store_true")
85
+
86
+ ap.add_argument("INPUT", help="The path of AUTOSAR ARXML file")
87
+ ap.add_argument("OUTPUT", help="The path of output ARXML file")
88
+
89
+ args = ap.parse_args()
90
+
91
+ perform_uuid_duplicate_check(args)
92
+
93
+
94
+ if __name__ == "__main__":
95
+ main()
@@ -11,7 +11,7 @@ from ...M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
11
11
  from ...M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
12
12
  from ...M2.AUTOSARTemplates.CommonStructure.Implementation import Implementation
13
13
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
14
- from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
14
+ from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, CollectableElement, Referrable
15
15
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
16
16
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
17
17
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType, CompositionSwComponentType, PortPrototype
@@ -206,9 +206,14 @@ class AbstractAUTOSAR(CollectableElement):
206
206
  def getRootSwCompositionPrototype(self):
207
207
  return self.rootSwCompositionPrototype
208
208
 
209
- def setRootSwCompositionPrototype(self, value):
209
+ def setRootSwCompositionPrototype(self, value: ARElement):
210
210
  if value is not None:
211
- self.rootSwCompositionPrototype = value
211
+ if self.rootSwCompositionPrototype is not None:
212
+ if value.getShortName() != self.rootSwCompositionPrototype.getShortName():
213
+ raise ValueError("RootSwCompositionPrototype already set to <%s>, cannot set to <%s>."
214
+ % (self.rootSwCompositionPrototype.getShortName(), value.getShortName()))
215
+ else:
216
+ self.rootSwCompositionPrototype = value
212
217
  return self
213
218
 
214
219
  def addImplementationBehaviorMap(self, impl: str, behavior: str) -> Implementation:
@@ -247,13 +252,16 @@ class AbstractAUTOSAR(CollectableElement):
247
252
  return self
248
253
 
249
254
  def getARObjectByUUID(self, uuid: str) -> List[ARObject]:
250
- return self.uuid_mgr.getObjects()
255
+ return self.uuid_mgr.getObjects(uuid)
251
256
 
252
257
  def addARObject(self, value: ARObject):
253
258
  if value is not None:
254
259
  self.uuid_mgr.addObject(value)
255
260
  return self
256
261
 
262
+ def getDuplicateUUIDs(self) -> List[str]:
263
+ return self.uuid_mgr.getDuplicateUUIDs()
264
+
257
265
  def setARRelease(self, release: str):
258
266
  if release not in self.release_xsd_mappings:
259
267
  raise "invalid AUTOSAR Release <%s>" % release
@@ -162,6 +162,13 @@ class BswModuleEntity(ExecutableEntity, metaclass=ABCMeta):
162
162
  self.addElement(access)
163
163
  self.callPoints.append(access)
164
164
  return self.getElement(short_name)
165
+
166
+ def createBswSynchronousServerCallPoint(self, short_name):
167
+ if (not self.IsElementExists(short_name)):
168
+ access = BswSynchronousServerCallPoint(self, short_name)
169
+ self.addElement(access)
170
+ self.callPoints.append(access)
171
+ return self.getElement(short_name)
165
172
 
166
173
  def getDataReceivePoints(self):
167
174
  return self.dataReceivePoints
@@ -45,7 +45,7 @@ class BswModuleEntry(ARElement):
45
45
  def __init__(self, parent: ARObject, short_name: str):
46
46
  super().__init__(parent, short_name)
47
47
 
48
- self.arguments = [] # type: List[SwServiceArg]
48
+ self.arguments = [] # type
49
49
  self.bswEntryKind = None # type: BswEntryKindEnum
50
50
  self.callType = None # type: BswCallType
51
51
  self.executionContext = None # type: BswExecutionContext
@@ -114,9 +114,12 @@ class BswModuleEntry(ARElement):
114
114
  def getReturnType(self):
115
115
  return self.returnType
116
116
 
117
- def setReturnType(self, value):
118
- self.returnType = value
119
- return self
117
+ def createReturnType(self, short_name: str) -> SwServiceArg:
118
+ if (short_name not in self.elements):
119
+ arg = SwServiceArg(self, short_name)
120
+ self.addElement(arg)
121
+ self.returnType = arg
122
+ return self.getElement(short_name)
120
123
 
121
124
  def getRole(self):
122
125
  return self.role
@@ -143,8 +143,9 @@ class ARPackage(Identifiable, CollectableElement):
143
143
  return self.arPackages[short_name]
144
144
 
145
145
  def getElement(self, short_name: str, type=None) -> Referrable:
146
- if (short_name in self.arPackages):
147
- return self.arPackages[short_name]
146
+ if type is ARPackage or type is None:
147
+ if short_name in self.arPackages:
148
+ return self.arPackages[short_name]
148
149
  return CollectableElement.getElement(self, short_name, type)
149
150
 
150
151
  def createEcuAbstractionSwComponentType(self, short_name: str) -> EcuAbstractionSwComponentType:
@@ -248,8 +248,8 @@ class ARBoolean(ARType):
248
248
  self._value = self._convertNumberToBoolean(val)
249
249
  self._text = str(val)
250
250
  elif isinstance(val, str):
251
- self._text = val
252
- self._value = self._convertStringToBoolean(val)
251
+ self._value = self._convertStringToBoolean(val.strip())
252
+ self._text = val.strip()
253
253
  else:
254
254
  raise ValueError("Unsupported Type <%s>", type(val))
255
255
 
@@ -303,14 +303,14 @@ class AtomicSwComponentType(SwComponentType, metaclass=ABCMeta):
303
303
  def __init__(self, parent: ARObject, short_name: str):
304
304
  super().__init__(parent, short_name)
305
305
 
306
- self.internalBehavior = None # type: SwcInternalBehavior
307
- self.symbolProps = None # type: SymbolProps
306
+ self.internalBehavior: SwcInternalBehavior = None
307
+ self.symbolProps: SymbolProps = None
308
308
 
309
309
  def getInternalBehavior(self):
310
310
  return self.internalBehavior
311
311
 
312
312
  def createSwcInternalBehavior(self, short_name) -> SwcInternalBehavior:
313
- if (not self.IsElementExists(short_name)):
313
+ if (not self.IsElementExists(short_name, SwcInternalBehavior)):
314
314
  behavior = SwcInternalBehavior(self, short_name)
315
315
  self.addElement(behavior)
316
316
  self.internalBehavior = behavior
@@ -1,5 +1,6 @@
1
1
  from abc import ABCMeta
2
- from .....M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import PPortInCompositionInstanceRef, PortInCompositionTypeInstanceRef, RPortInCompositionInstanceRef
2
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import PPortInCompositionInstanceRef, PortInCompositionTypeInstanceRef
3
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import RPortInCompositionInstanceRef
3
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
4
5
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
6
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
@@ -11,40 +12,34 @@ class SwComponentPrototype(Identifiable):
11
12
 
12
13
  self.typeTRef = None # type: RefType
13
14
 
14
- def getTypeTRef(self):
15
+ def getTypeTRef(self) -> RefType:
15
16
  return self.typeTRef
16
17
 
17
- def setTypeTRef(self, value):
18
+ def setTypeTRef(self, value: RefType):
18
19
  self.typeTRef = value
19
20
  return self
20
21
 
21
- class SwConnector(Identifiable, metaclass = ABCMeta):
22
+
23
+ class SwConnector(Identifiable, metaclass=ABCMeta):
22
24
  def __init__(self, parent: ARObject, short_name: str):
23
25
  super().__init__(parent, short_name)
24
26
 
25
- self.mappingRef = None # type: RefType
27
+ self.mappingRef: RefType = None
26
28
 
27
- def getMappingRef(self):
29
+ def getMappingRef(self) -> RefType:
28
30
  return self.mappingRef
29
31
 
30
- def setMappingRef(self, value):
32
+ def setMappingRef(self, value: RefType):
31
33
  self.mappingRef = value
32
34
  return self
33
35
 
36
+
34
37
  class AssemblySwConnector(SwConnector):
35
38
  def __init__(self, parent: ARObject, short_name: str):
36
39
  super().__init__(parent, short_name)
37
40
 
38
- self.mappingRef = None # type: RefType
39
- self.providerIRef = None # type: PPortInCompositionInstanceRef
40
- self.requesterIRef = None # type: RPortInCompositionInstanceRef
41
-
42
- def getMappingRef(self):
43
- return self.mappingRef
44
-
45
- def setMappingRef(self, value):
46
- self.mappingRef = value
47
- return self
41
+ self.providerIRef: PPortInCompositionInstanceRef = None
42
+ self.requesterIRef: RPortInCompositionInstanceRef = None
48
43
 
49
44
  def getProviderIRef(self) -> PPortInCompositionInstanceRef:
50
45
  return self.providerIRef
@@ -60,24 +55,25 @@ class AssemblySwConnector(SwConnector):
60
55
  self.requesterIRef = value
61
56
  return self
62
57
 
58
+
63
59
  class DelegationSwConnector(SwConnector):
64
60
  def __init__(self, parent: ARObject, short_name: str):
65
61
  super().__init__(parent, short_name)
66
62
 
67
- self.innerPortIRref = None # type: PortInCompositionTypeInstanceRef
68
- self.outerPortRef = None # type: RefType
63
+ self.innerPortIRref: PortInCompositionTypeInstanceRef = None
64
+ self.outerPortRef: RefType = None
69
65
 
70
- def getInnerPortIRref(self):
66
+ def getInnerPortIRref(self) -> PortInCompositionTypeInstanceRef:
71
67
  return self.innerPortIRref
72
68
 
73
- def setInnerPortIRref(self, value):
69
+ def setInnerPortIRref(self, value: PortInCompositionTypeInstanceRef):
74
70
  self.innerPortIRref = value
75
71
  return self
76
72
 
77
- def getOuterPortRef(self):
73
+ def getOuterPortRef(self) -> RefType:
78
74
  return self.outerPortRef
79
75
 
80
- def setOuterPortRef(self, value):
76
+ def setOuterPortRef(self, value: RefType):
81
77
  self.outerPortRef = value
82
78
  return self
83
79
 
@@ -86,20 +82,19 @@ class PassThroughSwConnector(SwConnector):
86
82
  def __init__(self, parent: ARObject, short_name: str):
87
83
  super().__init__(parent, short_name)
88
84
 
89
- self.providedOuterPortRef = None # type: RefType
90
- self.requiredOuterPortRef = None # type: RefType
85
+ self.providedOuterPortRef: RefType = None
86
+ self.requiredOuterPortRef: RefType = None
91
87
 
92
- def getProvidedOuterPortRef(self):
88
+ def getProvidedOuterPortRef(self) -> RefType:
93
89
  return self.providedOuterPortRef
94
90
 
95
- def setProvidedOuterPortRef(self, value):
91
+ def setProvidedOuterPortRef(self, value: RefType):
96
92
  self.providedOuterPortRef = value
97
93
  return self
98
94
 
99
- def getRequiredOuterPortRef(self):
95
+ def getRequiredOuterPortRef(self) -> RefType:
100
96
  return self.requiredOuterPortRef
101
97
 
102
- def setRequiredOuterPortRef(self, value):
98
+ def setRequiredOuterPortRef(self, value: RefType):
103
99
  self.requiredOuterPortRef = value
104
100
  return self
105
-
@@ -21,3 +21,9 @@ class UUIDMgr:
21
21
  if uuid in self.uuid_object_mappings:
22
22
  result = self.uuid_object_mappings[uuid]
23
23
  return result
24
+
25
+ def getDuplicateUUIDs(self):
26
+ if len(self.uuid_object_mappings) > 0:
27
+ return self.uuid_object_mappings.keys()
28
+ else:
29
+ return []
@@ -175,7 +175,7 @@ class AbstractARXMLParser:
175
175
  return None
176
176
  bool_value = Boolean()
177
177
  bool_value.timestamp = literal.timestamp
178
- bool_value.setValue(literal.getValue())
178
+ bool_value.setValue(literal.getText())
179
179
  return bool_value
180
180
 
181
181
  def _convertStringToNumberValue(self, value) -> int:
@@ -31,6 +31,7 @@ from ..models.M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView imp
31
31
 
32
32
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
33
33
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswAsynchronousServerCallPoint, BswBackgroundEvent
34
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswSynchronousServerCallPoint
34
35
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswModuleCallPoint
35
36
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggeringPoint, BswOperationInvokedEvent
36
37
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswExternalTriggerOccurredEvent, BswInternalBehavior
@@ -100,7 +101,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import
100
101
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
101
102
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
102
103
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
103
- from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
104
+ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest, NvRequireComSpec
104
105
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransformationComSpecProps, UserDefinedTransformationComSpecProps
105
106
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
106
107
  from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
@@ -865,12 +866,19 @@ class ARXMLParser(AbstractARXMLParser):
865
866
  self.readBswModuleCallPoint(element, point)
866
867
  point.setCalledEntryRef(self.getChildElementOptionalRefType(element, "CALLED-ENTRY-REF"))
867
868
 
869
+ def readBswSynchronousServerCallPoint(self, element: ET.Element, point: BswSynchronousServerCallPoint):
870
+ self.readBswModuleCallPoint(element, point)
871
+ point.setCalledEntryRef(self.getChildElementOptionalRefType(element, "CALLED-ENTRY-REF"))
872
+
868
873
  def readBswModuleEntityCallPoints(self, element: ET.Element, entity: BswModuleEntity):
869
874
  for child_element in self.findall(element, "CALL-POINTS/*"):
870
875
  tag_name = self.getTagName(child_element)
871
876
  if tag_name == "BSW-ASYNCHRONOUS-SERVER-CALL-POINT":
872
877
  point = entity.createBswAsynchronousServerCallPoint(self.getShortName(child_element))
873
878
  self.readBswAsynchronousServerCallPoint(child_element, point)
879
+ elif tag_name == "BSW-SYNCHRONOUS-SERVER-CALL-POINT":
880
+ point = entity.createBswSynchronousServerCallPoint(self.getShortName(child_element))
881
+ self.readBswSynchronousServerCallPoint(child_element, point)
874
882
  else:
875
883
  self.notImplemented("Unsupported Call Point <%s>" % tag_name)
876
884
 
@@ -1099,16 +1107,25 @@ class ARXMLParser(AbstractARXMLParser):
1099
1107
  else:
1100
1108
  self.notImplemented("Unsupported Argument <%s>" % tag_name)
1101
1109
 
1110
+ def readBswModuleEntryReturnType(self, element: ET.Element, entry: BswModuleEntry):
1111
+ child_element = self.find(element, "RETURN-TYPE")
1112
+ if child_element is not None:
1113
+ self.logger.debug("Read ReturnType of BswModuleEntry <%s>" % entry.getShortName())
1114
+ return_type = entry.createReturnType(self.getShortName(child_element))
1115
+ self.readSwServiceArg(child_element, return_type)
1116
+
1102
1117
  def readBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
1103
1118
  self.logger.debug("Read BswModuleEntry <%s>" % entry.getShortName())
1104
1119
  self.readIdentifiable(element, entry)
1105
1120
  self.readBswModuleEntryArguments(element, entry)
1106
- entry.setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT")) \
1107
- .setIsSynchronous(self.getChildElementOptionalBooleanValue(element, "IS-SYNCHRONOUS")) \
1108
- .setServiceId(self.getChildElementOptionalNumericalValue(element, "SERVICE-ID")) \
1109
- .setCallType(self.getChildElementOptionalLiteral(element, "CALL-TYPE")) \
1110
- .setExecutionContext(self.getChildElementOptionalLiteral(element, "EXECUTION-CONTEXT")) \
1111
- .setSwServiceImplPolicy(self.getChildElementOptionalLiteral(element, "SW-SERVICE-IMPL-POLICY"))
1121
+ entry.setIsReentrant(self.getChildElementOptionalBooleanValue(element, "IS-REENTRANT"))
1122
+ entry.setIsSynchronous(self.getChildElementOptionalBooleanValue(element, "IS-SYNCHRONOUS"))
1123
+ entry.setServiceId(self.getChildElementOptionalNumericalValue(element, "SERVICE-ID"))
1124
+ entry.setCallType(self.getChildElementOptionalLiteral(element, "CALL-TYPE"))
1125
+ entry.setExecutionContext(self.getChildElementOptionalLiteral(element, "EXECUTION-CONTEXT"))
1126
+ entry.setSwServiceImplPolicy(self.getChildElementOptionalLiteral(element, "SW-SERVICE-IMPL-POLICY"))
1127
+ entry.setBswEntryKind(self.getChildElementOptionalLiteral(element, "BSW-ENTRY-KIND"))
1128
+ self.readBswModuleEntryReturnType(element, entry)
1112
1129
 
1113
1130
  def readEngineeringObject(self, element: ET.Element, engineering_obj: EngineeringObject):
1114
1131
  self.readARObjectAttributes(element, engineering_obj)
@@ -1951,6 +1968,9 @@ class ARXMLParser(AbstractARXMLParser):
1951
1968
  com_spec.setInitValue(self.getInitValue(element)) \
1952
1969
  .setParameterRef(self.getChildElementOptionalRefType(element, "PARAMETER-REF"))
1953
1970
  return com_spec
1971
+
1972
+ def getNvProvideComSpec(self, element: ET.Element) -> NvRequireComSpec:
1973
+ pass
1954
1974
 
1955
1975
  def getQueuedReceiverComSpec(self, element: ET.Element) -> QueuedReceiverComSpec:
1956
1976
  com_spec = QueuedReceiverComSpec()
@@ -1992,6 +2012,8 @@ class ARXMLParser(AbstractARXMLParser):
1992
2012
  parent.addRequiredComSpec(self.getModeSwitchReceiverComSpec(child_element))
1993
2013
  elif tag_name == "PARAMETER-REQUIRE-COM-SPEC":
1994
2014
  parent.addRequiredComSpec(self.getParameterRequireComSpec(child_element))
2015
+ elif tag_name == "NV-PROVIDE-COM-SPEC":
2016
+ parent.addRequiredComSpec(self.getNvProvideComSpec(child_element))
1995
2017
  else:
1996
2018
  self.raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
1997
2019
 
@@ -5197,18 +5219,19 @@ class ARXMLParser(AbstractARXMLParser):
5197
5219
  group.addISignalIPduRef(ref_type)
5198
5220
 
5199
5221
  def readSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
5200
- mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION")) \
5201
- .setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF"))) \
5202
- .setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
5222
+ mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION"))
5223
+ mapping.setDataElementIRef(self.getVariableDataPrototypeInSystemInstanceRef(self.find(element, "DATA-ELEMENT-IREF")))
5224
+ mapping.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
5225
+ self.logger.debug("Read SenderReceiverToSignalMapping <%s>" % mapping.getSystemSignalRef().getValue())
5203
5226
 
5204
5227
  def readSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
5205
5228
  self.readARObjectAttributes(element, mapping)
5206
5229
 
5207
5230
  def readSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
5208
5231
  self.readARObjectAttributes(element, mapping)
5209
- mapping.setApplicationRecordElementRef(self.getChildElementOptionalRefType(element, "APPLICATION-RECORD-ELEMENT-REF")) \
5210
- .setImplementationRecordElementRef(self.getChildElementOptionalRefType(element, "IMPLEMENTATION-RECORD-ELEMENT-REF")) \
5211
- .setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
5232
+ mapping.setApplicationRecordElementRef(self.getChildElementOptionalRefType(element, "APPLICATION-RECORD-ELEMENT-REF"))
5233
+ mapping.setImplementationRecordElementRef(self.getChildElementOptionalRefType(element, "IMPLEMENTATION-RECORD-ELEMENT-REF"))
5234
+ mapping.setSystemSignalRef(self.getChildElementOptionalRefType(element, "SYSTEM-SIGNAL-REF"))
5212
5235
 
5213
5236
  def readSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
5214
5237
  for child_element in self.findall(element, "RECORD-ELEMENT-MAPPINGS/*"):
@@ -5325,7 +5348,10 @@ class ARXMLParser(AbstractARXMLParser):
5325
5348
  self.readIdentifiable(child_element, prototype)
5326
5349
  prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
5327
5350
  .setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
5328
- AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
5351
+ try:
5352
+ AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
5353
+ except ValueError as e:
5354
+ self.raiseWarning("%s" % e)
5329
5355
 
5330
5356
  def readSystemFibexElementRefs(self, element: ET.Element, system: System):
5331
5357
  for ref in self.getChildElementRefTypeList(element, "FIBEX-ELEMENTS/FIBEX-ELEMENT-REF-CONDITIONAL/FIBEX-ELEMENT-REF"):
@@ -3,27 +3,28 @@ import pytest
3
3
  from ....models.M2.MSR.DataDictionary.DataDefProperties import SwDataDefProps, SwPointerTargetProps
4
4
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
 
6
+
6
7
  class Test_M2_MSR_DataDictionary_DataDefProperties:
7
8
  def test_SwDataDefProps(self):
8
9
  props = SwDataDefProps()
9
10
 
10
- assert(isinstance(props, ARObject))
11
- assert(isinstance(props, SwDataDefProps))
11
+ assert (isinstance(props, ARObject))
12
+ assert (isinstance(props, SwDataDefProps))
12
13
 
13
- assert(props.baseTypeRef == None)
14
- assert(props.compuMethodRef == None)
15
- assert(props.dataConstrRef == None)
16
- assert(props.implementationDataTypeRef == None)
17
- assert(props.swImplPolicy == None)
18
- assert(props.swCalibrationAccess == None)
19
- assert(props.swPointerTargetProps == None)
14
+ assert (props.baseTypeRef is None)
15
+ assert (props.compuMethodRef is None)
16
+ assert (props.dataConstrRef is None)
17
+ assert (props.implementationDataTypeRef is None)
18
+ assert (props.swImplPolicy is None)
19
+ assert (props.swCalibrationAccess is None)
20
+ assert (props.swPointerTargetProps is None)
20
21
 
21
22
  def test_SwPointerTargetProps(self):
22
23
  props = SwPointerTargetProps()
23
24
 
24
- assert(isinstance(props, ARObject))
25
- assert(isinstance(props, SwPointerTargetProps))
25
+ assert (isinstance(props, ARObject))
26
+ assert (isinstance(props, SwPointerTargetProps))
26
27
 
27
- assert(props.getFunctionPointerSignatureRef() == None)
28
- assert(props.getSwDataDefProps() == None)
29
- assert(props.getTargetCategory() == None)
28
+ assert (props.getFunctionPointerSignatureRef() is None)
29
+ assert (props.getSwDataDefProps() is None)
30
+ assert (props.getTargetCategory() is None)
@@ -1,14 +1,16 @@
1
1
  import pytest
2
2
 
3
+ from .... import AUTOSAR
3
4
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable, Referrable
4
-
5
5
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
6
-
7
- from .... import AUTOSAR
8
- from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
9
- from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement, ApplicationCompositeElementDataPrototype, ApplicationRecordElement, AtpPrototype, AutosarDataPrototype, DataPrototype, VariableDataPrototype
6
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationArrayElement
7
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationCompositeElementDataPrototype
8
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement
9
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import AtpPrototype, AutosarDataPrototype
10
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import DataPrototype, VariableDataPrototype
10
11
  from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpFeature
11
12
 
13
+
12
14
  class Test_M2_AUTOSARTemplates_SWComponentTemplate_Datatype_DataPrototypes:
13
15
 
14
16
  def test_AtpPrototype(self):
@@ -16,75 +18,76 @@ class Test_M2_AUTOSARTemplates_SWComponentTemplate_Datatype_DataPrototypes:
16
18
  document = AUTOSAR.getInstance()
17
19
  ar_root = document.createARPackage("AUTOSAR")
18
20
  AtpPrototype(ar_root, "prototype")
19
- assert(str(err.value) == "AtpPrototype is an abstract class.")
21
+ assert (str(err.value) == "AtpPrototype is an abstract class.")
20
22
 
21
23
  def test_DataPrototype(self):
22
24
  with pytest.raises(NotImplementedError) as err:
23
25
  document = AUTOSAR.getInstance()
24
26
  ar_root = document.createARPackage("AUTOSAR")
25
27
  DataPrototype(ar_root, "prototype")
26
- assert(str(err.value) == "DataPrototype is an abstract class.")
28
+ assert (str(err.value) == "DataPrototype is an abstract class.")
27
29
 
28
30
  def test_AutosarDataPrototype(self):
29
31
  with pytest.raises(NotImplementedError) as err:
30
32
  document = AUTOSAR.getInstance()
31
33
  ar_root = document.createARPackage("AUTOSAR")
32
34
  AutosarDataPrototype(ar_root, "prototype")
33
- assert(str(err.value) == "AutosarDataPrototype is an abstract class.")
35
+ assert (str(err.value) == "AutosarDataPrototype is an abstract class.")
34
36
 
35
37
  def test_VariableDataPrototype(self):
36
38
  document = AUTOSAR.getInstance()
37
39
  ar_root = document.createARPackage("AUTOSAR")
38
40
  prototype = VariableDataPrototype(ar_root, "prototype")
39
41
 
40
- assert(isinstance(prototype, ARObject))
41
- assert(isinstance(prototype, AtpFeature))
42
- assert(isinstance(prototype, AtpPrototype))
43
- assert(isinstance(prototype, AutosarDataPrototype))
44
- assert(isinstance(prototype, DataPrototype))
45
- assert(isinstance(prototype, Identifiable))
46
- assert(isinstance(prototype, MultilanguageReferrable))
47
- assert(isinstance(prototype, Referrable))
42
+ assert (isinstance(prototype, ARObject))
43
+ assert (isinstance(prototype, AtpFeature))
44
+ assert (isinstance(prototype, AtpPrototype))
45
+ assert (isinstance(prototype, AutosarDataPrototype))
46
+ assert (isinstance(prototype, DataPrototype))
47
+ assert (isinstance(prototype, Identifiable))
48
+ assert (isinstance(prototype, MultilanguageReferrable))
49
+ assert (isinstance(prototype, Referrable))
48
50
 
49
- assert(prototype.parent == ar_root)
50
- assert(prototype.short_name == "prototype")
51
- assert(prototype.typeTRef is None)
51
+ assert (prototype.parent == ar_root)
52
+ assert (prototype.short_name == "prototype")
53
+ assert (prototype.typeTRef is None)
52
54
 
53
55
  def test_ApplicationCompositeElementDataPrototype(self):
54
56
  with pytest.raises(NotImplementedError) as err:
55
57
  document = AUTOSAR.getInstance()
56
58
  ar_root = document.createARPackage("AUTOSAR")
57
- ApplicationCompositeElementDataPrototype(ar_root, "application_composition_element_data_prototype")
58
- assert(str(err.value) == "ApplicationCompositeElementDataPrototype is an abstract class.")
59
+ ApplicationCompositeElementDataPrototype(
60
+ ar_root, "application_composition_element_data_prototype")
61
+ assert (str(err.value) == "ApplicationCompositeElementDataPrototype is an abstract class.")
59
62
 
60
63
  def test_ApplicationArrayElement(self):
61
64
  document = AUTOSAR.getInstance()
62
65
  ar_root = document.createARPackage("AUTOSAR")
63
66
  prototype = ApplicationArrayElement(ar_root, "prototype")
64
67
 
65
- assert(isinstance(prototype, ARObject))
66
- assert(isinstance(prototype, ApplicationCompositeElementDataPrototype))
67
- assert(isinstance(prototype, AtpFeature))
68
- assert(isinstance(prototype, AtpPrototype))
69
- assert(isinstance(prototype, DataPrototype))
70
- assert(isinstance(prototype, Identifiable))
71
- assert(isinstance(prototype, MultilanguageReferrable))
72
- assert(isinstance(prototype, Referrable))
73
- assert(isinstance(prototype, ApplicationArrayElement))
68
+ assert (isinstance(prototype, ARObject))
69
+ assert (isinstance(prototype, ApplicationCompositeElementDataPrototype))
70
+ assert (isinstance(prototype, AtpFeature))
71
+ assert (isinstance(prototype, AtpPrototype))
72
+ assert (isinstance(prototype, DataPrototype))
73
+ assert (isinstance(prototype, Identifiable))
74
+ assert (isinstance(prototype, MultilanguageReferrable))
75
+ assert (isinstance(prototype, Referrable))
76
+ assert (isinstance(prototype, ApplicationArrayElement))
74
77
 
75
78
  def test_ApplicationRecordElement(self):
76
79
  document = AUTOSAR.getInstance()
77
80
  ar_root = document.createARPackage("AUTOSAR")
78
81
  prototype = ApplicationRecordElement(ar_root, "prototype")
79
82
 
80
- assert(isinstance(prototype, ARObject))
81
- assert(isinstance(prototype, ApplicationCompositeElementDataPrototype))
82
- assert(isinstance(prototype, AtpFeature))
83
- assert(isinstance(prototype, AtpPrototype))
84
- assert(isinstance(prototype, DataPrototype))
85
- assert(isinstance(prototype, Identifiable))
86
- assert(isinstance(prototype, MultilanguageReferrable))
87
- assert(isinstance(prototype, Referrable))
88
- assert(isinstance(prototype, ApplicationRecordElement))
89
-
90
- assert(prototype.isOptional == None)
83
+ assert (isinstance(prototype, ARObject))
84
+ assert (isinstance(prototype, ApplicationCompositeElementDataPrototype))
85
+ assert (isinstance(prototype, AtpFeature))
86
+ assert (isinstance(prototype, AtpPrototype))
87
+ assert (isinstance(prototype, DataPrototype))
88
+ assert (isinstance(prototype, Identifiable))
89
+ assert (isinstance(prototype, MultilanguageReferrable))
90
+ assert (isinstance(prototype, Referrable))
91
+ assert (isinstance(prototype, ApplicationRecordElement))
92
+
93
+ assert (prototype.isOptional is None)
@@ -1,15 +1,10 @@
1
1
  import pytest
2
2
 
3
3
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement, PackageableElement
4
-
5
4
  from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpFeature
6
-
7
5
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement
8
-
9
6
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable, Referrable
10
-
11
7
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
12
-
13
8
  from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
14
9
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Limit
15
10
 
@@ -9,7 +9,7 @@ class TestImplementation:
9
9
  document = AUTOSAR.getInstance()
10
10
  ar_root = document.createARPackage("AUTOSAR")
11
11
  code = Code(ar_root, "code")
12
- assert(code.short_name == "code")
12
+ assert (code.short_name == "code")
13
13
 
14
14
  data = [
15
15
  ["Autosar::include::BswM.h", "SWHDR"],
@@ -22,6 +22,6 @@ class TestImplementation:
22
22
  .setCategory(item[1])
23
23
  code.addArtifactDescriptor(engineering_obj)
24
24
 
25
- assert(len(code.getArtifactDescriptors()) == 2)
26
- assert(len(code.getArtifactDescriptors("SWHDR")) == 1)
27
- assert(len(code.getArtifactDescriptors("SWSRC")) == 1)
25
+ assert (len(code.getArtifactDescriptors()) == 2)
26
+ assert (len(code.getArtifactDescriptors("SWHDR")) == 1)
27
+ assert (len(code.getArtifactDescriptors("SWSRC")) == 1)
@@ -1,79 +1,79 @@
1
1
  import pytest
2
2
 
3
- from ....models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstNumericContent, CompuConstTextContent, CompuContent, CompuScale
4
-
5
3
  from .... import AUTOSAR
4
+ from ....models.M2.MSR.AsamHdo.ComputationMethod import Compu, CompuConst, CompuConstContent, CompuConstNumericContent, CompuConstTextContent
5
+ from ....models.M2.MSR.AsamHdo.ComputationMethod import CompuContent, CompuScale, CompuScales
6
6
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
7
- from ....models.M2.MSR.AsamHdo.ComputationMethod import CompuScales
7
+
8
8
 
9
9
  class Test_M2_MSR_AsamHdo_ComputationMethod:
10
10
  def test_CompuContent(self):
11
11
  with pytest.raises(NotImplementedError) as err:
12
12
  CompuContent()
13
- assert(str(err.value) == "CompuContent is an abstract class.")
13
+ assert (str(err.value) == "CompuContent is an abstract class.")
14
14
 
15
15
  def test_Compu(self):
16
16
  compu = Compu()
17
17
 
18
- assert(isinstance(compu, ARObject))
19
- assert(isinstance(compu, Compu))
18
+ assert (isinstance(compu, ARObject))
19
+ assert (isinstance(compu, Compu))
20
20
 
21
- assert(compu.compuContent == None)
22
- assert(compu.compuDefaultValue == None)
21
+ assert (compu.compuContent is None)
22
+ assert (compu.compuDefaultValue is None)
23
23
 
24
24
  def test_CompuConstContent(self):
25
25
  with pytest.raises(NotImplementedError) as err:
26
26
  CompuConstContent()
27
- assert(str(err.value) == "CompuConstContent is an abstract class.")
27
+ assert (str(err.value) == "CompuConstContent is an abstract class.")
28
28
 
29
29
  def test_CompuConstTextContent(self):
30
30
  content = CompuConstTextContent()
31
31
 
32
- assert(isinstance(content, ARObject))
33
- assert(isinstance(content, CompuConstContent))
34
- assert(isinstance(content, CompuConstTextContent))
32
+ assert (isinstance(content, ARObject))
33
+ assert (isinstance(content, CompuConstContent))
34
+ assert (isinstance(content, CompuConstTextContent))
35
35
 
36
- assert(content.vt == None)
36
+ assert (content.vt is None)
37
37
 
38
38
  def test_CompuConstNumericContent(self):
39
39
  content = CompuConstNumericContent()
40
40
 
41
- assert(isinstance(content, ARObject))
42
- assert(isinstance(content, CompuConstContent))
43
- assert(isinstance(content, CompuConstNumericContent))
41
+ assert (isinstance(content, ARObject))
42
+ assert (isinstance(content, CompuConstContent))
43
+ assert (isinstance(content, CompuConstNumericContent))
44
44
 
45
- assert(content.v == None)
45
+ assert (content.v is None)
46
46
 
47
47
  def test_CompuConst(self):
48
48
  compu_const = CompuConst()
49
49
 
50
- assert(isinstance(compu_const, ARObject))
51
- assert(isinstance(compu_const, CompuConst))
50
+ assert (isinstance(compu_const, ARObject))
51
+ assert (isinstance(compu_const, CompuConst))
52
52
 
53
- assert(compu_const.compuConstContentType == None)
53
+ assert (compu_const.compuConstContentType is None)
54
54
 
55
55
  def test_CompuScale(self):
56
56
  compu_scale = CompuScale()
57
57
 
58
- assert(isinstance(compu_scale, ARObject))
59
- assert(isinstance(compu_scale, CompuScale))
58
+ assert (isinstance(compu_scale, ARObject))
59
+ assert (isinstance(compu_scale, CompuScale))
60
60
 
61
- assert(compu_scale.compuContent == None)
62
- assert(compu_scale.lowerLimit == None)
63
- assert(compu_scale.upperLimit == None)
64
- assert(compu_scale.compuInverseValue == None)
65
- assert(compu_scale.compuScaleContents == None)
61
+ assert (compu_scale.compuContent is None)
62
+ assert (compu_scale.lowerLimit is None)
63
+ assert (compu_scale.upperLimit is None)
64
+ assert (compu_scale.compuInverseValue is None)
65
+ assert (compu_scale.compuScaleContents is None)
66
66
 
67
67
  def test_CompuScales(self):
68
68
  compu_scales = CompuScales()
69
69
 
70
- assert(isinstance(compu_scales, ARObject))
71
- assert(isinstance(compu_scales, CompuScales))
70
+ assert (isinstance(compu_scales, ARObject))
71
+ assert (isinstance(compu_scales, CompuScales))
72
72
 
73
- assert(len(compu_scales.compuScales) == 0)
73
+ assert (len(compu_scales.compuScales) == 0)
74
74
 
75
75
  compu_scale = CompuScale()
76
76
  compu_scales.addCompuScale(compu_scale)
77
77
 
78
- assert(len(compu_scales.getCompuScales()) == 1)
79
- assert(compu_scales.getCompuScales()[0] == compu_scale)
78
+ assert (len(compu_scales.getCompuScales()) == 1)
79
+ assert (compu_scales.getCompuScales()[0] == compu_scale)
@@ -1,21 +1,19 @@
1
1
  import pytest
2
2
 
3
3
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import PackageableElement
4
-
5
4
  from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpFeature
6
-
7
5
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement
8
-
9
6
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable, Referrable
10
-
11
7
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
12
-
13
8
  from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
14
9
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
15
- from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import AtpPrototype, AutosarDataPrototype, DataPrototype, VariableDataPrototype
10
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import AtpPrototype, AutosarDataPrototype, DataPrototype
11
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import VariableDataPrototype
16
12
  from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpType
17
13
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
18
- from ....models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataInterface, NvDataInterface, ParameterInterface, PortInterface, SenderReceiverInterface
14
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ApplicationError, ArgumentDataPrototype, ClientServerInterface
15
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ClientServerOperation, DataInterface, NvDataInterface
16
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface import ParameterInterface, PortInterface, SenderReceiverInterface
19
17
 
20
18
 
21
19
  class Test_M2_AUTOSARTemplates_SWComponentTemplate_PortInterface:
@@ -125,8 +123,8 @@ class Test_M2_AUTOSARTemplates_SWComponentTemplate_PortInterface:
125
123
 
126
124
  assert (prototype.getParent() == ar_root)
127
125
  assert (prototype.getShortName() == "ArgumentDataPrototype")
128
- assert (prototype.getDirection() == None)
129
- assert (prototype.getServerArgumentImplPolicy() == None)
126
+ assert (prototype.getDirection() is None)
127
+ assert (prototype.getServerArgumentImplPolicy() is None)
130
128
 
131
129
  def test_ApplicationError(self):
132
130
  document = AUTOSAR.getInstance()
@@ -155,7 +153,8 @@ class Test_M2_AUTOSARTemplates_SWComponentTemplate_PortInterface:
155
153
  assert (isinstance(operation, ClientServerOperation))
156
154
  assert (operation.short_name == "client_server_operation")
157
155
 
158
- prototype = operation.createArgumentDataPrototype("argument_data_prototype1")
156
+ prototype = operation.createArgumentDataPrototype(
157
+ "argument_data_prototype1")
159
158
  assert (prototype.short_name == "argument_data_prototype1")
160
159
 
161
160
  assert (len(operation.getArguments()) == 1)
@@ -2,13 +2,14 @@ import pytest
2
2
 
3
3
  from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import PPortComSpec, RPortComSpec
4
4
 
5
- class Test_PortProtype:
5
+
6
+ class Test_PortPrototype:
6
7
  def test_PPortComSpec(self):
7
8
  with pytest.raises(NotImplementedError) as err:
8
9
  PPortComSpec()
9
- assert(str(err.value) == "PPortComSpec is an abstract class.")
10
+ assert (str(err.value) == "PPortComSpec is an abstract class.")
10
11
 
11
12
  def test_RPortComSpec(self):
12
13
  with pytest.raises(NotImplementedError) as err:
13
14
  RPortComSpec()
14
- assert(str(err.value) == "RPortComSpec is an abstract class.")
15
+ assert (str(err.value) == "RPortComSpec is an abstract class.")
@@ -1,11 +1,13 @@
1
1
  import filecmp
2
+ import xml.etree.ElementTree as ET
2
3
 
4
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import SwcInternalBehavior
3
5
  from ....models.M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBehavior
4
6
  from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcImplementation import SwcImplementation
5
7
  from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType, CompositionSwComponentType
6
8
  from ....writer.arxml_writer import ARXMLWriter
7
9
  from ....parser.arxml_parser import ARXMLParser
8
- from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
10
+ from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR, AUTOSARDoc
9
11
 
10
12
 
11
13
  class TestSWComponents:
@@ -372,3 +374,111 @@ class TestSWComponents:
372
374
 
373
375
  assert (filecmp.cmp("test_files/AUTOSAR_MOD_AISpecification_DataConstr_LifeCycle_Standard.arxml",
374
376
  "data/generated_AUTOSAR_MOD_AISpecification_DataConstr_LifeCycle_Standard.arxml", shallow=False) is True)
377
+
378
+
379
+ class TestSwComponentsWithSameName:
380
+ def test_read_same_package_and_sw_component_name(self):
381
+ parser = ARXMLParser()
382
+ parser.nsmap = {"xmlns": "http://autosar.org/schema/r4.0"}
383
+ xml_content = """
384
+ <AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00049.xsd" T="2025-05-08T10:56:35+03:00">
385
+ <AR-PACKAGES>
386
+ <AR-PACKAGE>
387
+ <SHORT-NAME>Components</SHORT-NAME>
388
+ <ELEMENTS>
389
+ <APPLICATION-SW-COMPONENT-TYPE T="2025-05-08T21:49:46+03:00">
390
+ <SHORT-NAME>DUPLICATE_NAME</SHORT-NAME>
391
+ <INTERNAL-BEHAVIORS>
392
+ <SWC-INTERNAL-BEHAVIOR T="2025-06-13T08:49:08+03:00">
393
+ <SHORT-NAME>DUPLICATE_NAME</SHORT-NAME>
394
+ <RUNNABLES>
395
+ <RUNNABLE-ENTITY T="2025-06-13T08:49:24+03:00">
396
+ <SHORT-NAME>RunnableInit</SHORT-NAME>
397
+ <MINIMUM-START-INTERVAL>0.0</MINIMUM-START-INTERVAL>
398
+ <CAN-BE-INVOKED-CONCURRENTLY>false</CAN-BE-INVOKED-CONCURRENTLY>
399
+ <SYMBOL>RunnableInit</SYMBOL>
400
+ </RUNNABLE-ENTITY>
401
+ </RUNNABLES>
402
+ </SWC-INTERNAL-BEHAVIOR>
403
+ </INTERNAL-BEHAVIORS>
404
+ </APPLICATION-SW-COMPONENT-TYPE>
405
+ </ELEMENTS>
406
+ <AR-PACKAGES>
407
+ <AR-PACKAGE>
408
+ <SHORT-NAME>DUPLICATE_NAME</SHORT-NAME>
409
+ </AR-PACKAGE>
410
+ <AR-PACKAGE>
411
+ <SHORT-NAME>NewPackage</SHORT-NAME>
412
+ </AR-PACKAGE>
413
+ </AR-PACKAGES>
414
+ </AR-PACKAGE>
415
+ <AR-PACKAGE>
416
+ <SHORT-NAME>Implementation</SHORT-NAME>
417
+ <ELEMENTS>
418
+ <SW-ADDR-METHOD>
419
+ <SHORT-NAME>CODE</SHORT-NAME>
420
+ <MEMORY-ALLOCATION-KEYWORD-POLICY>ADDR-METHOD-SHORT-NAME</MEMORY-ALLOCATION-KEYWORD-POLICY>
421
+ <SECTION-TYPE>CODE</SECTION-TYPE>
422
+ </SW-ADDR-METHOD>
423
+ <SWC-IMPLEMENTATION>
424
+ <SHORT-NAME>DUPLICATE_NAME</SHORT-NAME>
425
+ <CODE-DESCRIPTORS>
426
+ <CODE>
427
+ <SHORT-NAME>CODE</SHORT-NAME>
428
+ <ARTIFACT-DESCRIPTORS>
429
+ <AUTOSAR-ENGINEERING-OBJECT>
430
+ <SHORT-LABEL>CODE</SHORT-LABEL>
431
+ <CATEGORY>SWSRC</CATEGORY>
432
+ </AUTOSAR-ENGINEERING-OBJECT>
433
+ </ARTIFACT-DESCRIPTORS>
434
+ </CODE>
435
+ </CODE-DESCRIPTORS>
436
+ <PROGRAMMING-LANGUAGE>C</PROGRAMMING-LANGUAGE>
437
+ <RESOURCE-CONSUMPTION>
438
+ <SHORT-NAME>ResourceConsumption</SHORT-NAME>
439
+ <MEMORY-SECTIONS>
440
+ <MEMORY-SECTION>
441
+ <SHORT-NAME>CODE</SHORT-NAME>
442
+ <SIZE>0</SIZE>
443
+ <SW-ADDRMETHOD-REF DEST="SW-ADDR-METHOD">/AUTOSAR_MemMap/SwAddrMethods/CODE</SW-ADDRMETHOD-REF>
444
+ </MEMORY-SECTION>
445
+ </MEMORY-SECTIONS>
446
+ </RESOURCE-CONSUMPTION>
447
+ <SW-VERSION>1.0.0</SW-VERSION>
448
+ <VENDOR-ID>0</VENDOR-ID>
449
+ <BEHAVIOR-REF DEST="SWC-INTERNAL-BEHAVIOR">/Components/DUPLICATE_NAME/DUPLICATE_NAME</BEHAVIOR-REF>
450
+ </SWC-IMPLEMENTATION>
451
+ </ELEMENTS>
452
+ </AR-PACKAGE>
453
+ </AR-PACKAGES>
454
+ </AUTOSAR>
455
+ """ # noqa E501
456
+
457
+ # prepare the XML content
458
+ element = ET.fromstring(xml_content)
459
+
460
+ document = AUTOSARDoc()
461
+ parser.readARPackages(element, document)
462
+ assert len(document.getARPackages()) == 2
463
+ assert document.getARPackages()[0].getShortName() == "Components"
464
+ assert document.getARPackages()[1].getShortName() == "Implementation"
465
+ assert len(document.getARPackages()[0].getElements()) == 1
466
+
467
+ sw_component: AtomicSwComponentType = document.getARPackages()[0].getElement("DUPLICATE_NAME", AtomicSwComponentType)
468
+ assert sw_component is not None
469
+ assert sw_component.getShortName() == "DUPLICATE_NAME"
470
+
471
+ internal_behavior: SwcInternalBehavior = sw_component.getInternalBehavior()
472
+ # Check if the internal behavior is present
473
+ assert internal_behavior is not None
474
+ assert internal_behavior.getShortName() == "DUPLICATE_NAME"
475
+
476
+ # Check if the runnable is present
477
+ assert len(internal_behavior.getRunnableEntities()) == 1
478
+ runnables = internal_behavior.getRunnableEntities()
479
+
480
+ # Check the first runnable
481
+ runnable = runnables[0]
482
+ assert runnable is not None
483
+ assert runnable.getShortName() == "RunnableInit"
484
+
@@ -27,6 +27,7 @@ from ..models.M2.MSR.Documentation.TextModel.MultilanguageData import Multilangu
27
27
 
28
28
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
29
29
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswApiOptions, BswAsynchronousServerCallPoint, BswBackgroundEvent
30
+ from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswSynchronousServerCallPoint
30
31
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswCalledEntity, BswDataReceivedEvent, BswModuleCallPoint
31
32
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswInternalTriggerOccurredEvent, BswOperationInvokedEvent
32
33
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswBehavior import BswDataReceptionPolicy, BswEvent, BswExternalTriggerOccurredEvent
@@ -2207,6 +2208,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2207
2208
  self.writeBswModuleCallPoint(child_element, point)
2208
2209
  self.setChildElementOptionalRefType(child_element, "CALLED-ENTRY-REF", point.getCalledEntryRef())
2209
2210
 
2211
+ def writeBswSynchronousServerCallPoint(self, element: ET.Element, point: BswSynchronousServerCallPoint):
2212
+ child_element = ET.SubElement(element, "BSW-SYNCHRONOUS-SERVER-CALL-POINT")
2213
+ self.writeBswModuleCallPoint(child_element, point)
2214
+ self.setChildElementOptionalRefType(child_element, "CALLED-ENTRY-REF", point.getCalledEntryRef())
2215
+
2210
2216
  def writeBswModuleEntityCallPoints(self, element: ET.Element, entity: BswModuleEntity):
2211
2217
  points = entity.getCallPoints()
2212
2218
  if len(points) > 0:
@@ -2214,6 +2220,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2214
2220
  for point in points:
2215
2221
  if isinstance(point, BswAsynchronousServerCallPoint):
2216
2222
  self.writeBswAsynchronousServerCallPoint(child_element, point)
2223
+ elif isinstance(point, BswModuleCallPoint):
2224
+ self.writeBswSynchronousServerCallPoint(child_element, point)
2217
2225
  else:
2218
2226
  self.notImplemented("Unsupported Call Point <%s>" % type(point))
2219
2227
 
@@ -2488,10 +2496,10 @@ class ARXMLWriter(AbstractARXMLWriter):
2488
2496
  self.writeBswModuleDescriptionInternalBehaviors(child_element, desc)
2489
2497
  self.writeBswModuleDescriptionReleasedTriggers(child_element, desc)
2490
2498
 
2491
- def setSwServiceArg(self, element: ET.Element, arg: SwServiceArg):
2499
+ def setSwServiceArg(self, element: ET.Element, key: str, arg: SwServiceArg):
2492
2500
  self.logger.debug("Set SwServiceArg <%s>" % arg.getShortName())
2493
2501
  if arg is not None:
2494
- child_element = ET.SubElement(element, "SW-SERVICE-ARG")
2502
+ child_element = ET.SubElement(element, key)
2495
2503
  self.writeIdentifiable(child_element, arg)
2496
2504
  self.setChildElementOptionalLiteral(child_element, "DIRECTION", arg.getDirection())
2497
2505
  self.setSwDataDefProps(child_element, "SW-DATA-DEF-PROPS", arg.getSwDataDefProps())
@@ -2501,7 +2509,11 @@ class ARXMLWriter(AbstractARXMLWriter):
2501
2509
  if len(arguments) > 0:
2502
2510
  child_element = ET.SubElement(element, "ARGUMENTS")
2503
2511
  for argument in arguments:
2504
- self.setSwServiceArg(child_element, argument)
2512
+ self.setSwServiceArg(child_element, "SW-SERVICE-ARG", argument)
2513
+
2514
+ def writeBswModuleEntryReturnType(self, element: ET.Element, entry: BswModuleEntry):
2515
+ if entry.getReturnType() is not None:
2516
+ self.setSwServiceArg(element, "RETURN-TYPE", entry.getReturnType())
2505
2517
 
2506
2518
  def writeBswModuleEntry(self, element: ET.Element, entry: BswModuleEntry):
2507
2519
  self.logger.debug("writeBswModuleDescription %s" % entry.getShortName())
@@ -2513,6 +2525,8 @@ class ARXMLWriter(AbstractARXMLWriter):
2513
2525
  self.setChildElementOptionalLiteral(child_element, "CALL-TYPE", entry.getCallType())
2514
2526
  self.setChildElementOptionalLiteral(child_element, "EXECUTION-CONTEXT", entry.getExecutionContext())
2515
2527
  self.setChildElementOptionalLiteral(child_element, "SW-SERVICE-IMPL-POLICY", entry.getSwServiceImplPolicy())
2528
+ self.setChildElementOptionalLiteral(child_element, "BSW-ENTRY-KIND", entry.getBswEntryKind())
2529
+ self.writeBswModuleEntryReturnType(child_element, entry)
2516
2530
  self.writeBswModuleEntryArguments(child_element, entry)
2517
2531
 
2518
2532
  def setSwcBswRunnableMapping(self, element: ET.SubElement, mapping: SwcBswRunnableMapping):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: armodel
3
- Version: 1.8.3
3
+ Version: 1.8.5
4
4
  Summary: the python arxml parser
5
5
  Home-page: http://github.com/melodypapa/py-armodel
6
6
  Author: melodypapa
@@ -630,4 +630,19 @@ Fix the attribute intervalType of **Limit** is empty issue.
630
630
  * USER-DEFINED-TRANSFORMATION-COM-SPEC-PROPS
631
631
  * MASK
632
632
 
633
+ **Version 1.8.4**
634
+
635
+ 1. To Support the following AR Element:
636
+ * BSW-SYNCHRONOUS-SERVER-CALL-POINT
637
+ * RETURN-TYPE
638
+ 2. Add the armodel-uuid-checker cli.
639
+ 3. Remove the space in the boolean type.
640
+
641
+ **Version 1.8.5**
642
+
643
+ 1. Reorganize the SwConnector class.
644
+ 2. Raise the error if the short name of rootSwCompositionPrototype.
645
+ 3. To support the following AR Element:
646
+ * NvProvideComSpec
647
+ 4. Fix the duplicate short name of ARPackage and Other ARElements.
633
648
 
@@ -9,6 +9,7 @@ armodel/cli/format_xml_cli.py,sha256=FGOmC78qFxl5zeaC8tAWZUcFu6CicJbGfCsQCA7ekfA
9
9
  armodel/cli/memory_section_cli.py,sha256=YPhnfP9dd8yjPG_F32FaKhnCGVmLIK-WH33Jbup31O8,2179
10
10
  armodel/cli/swc_list_cli.py,sha256=yrObi-imM3X6M8R5y5KrZlAdq2IE4mltP9-aH_iwlqk,2441
11
11
  armodel/cli/system_signal_cli.py,sha256=nOVVMZtcSHytmZ8ln-zwu4mhY4Oi9i13RbMyS-RdlEQ,2141
12
+ armodel/cli/uuid_checker_cli.py,sha256=rqYGHJgKL90D1e3ool5sj0lqoKJocFJbdPGc2zRlnoc,3220
12
13
  armodel/data_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
14
  armodel/data_models/sw_connector.py,sha256=ZU1B3AI84vpSSSpQaGR6CMc3qZGnhbK1Z-SQGvwYA9o,584
14
15
  armodel/lib/__init__.py,sha256=5629DkORqTomt16J6VL40o5hFv86-9SRB1240OJWTts,142
@@ -17,13 +18,13 @@ armodel/lib/sw_component.py,sha256=spUeVR8ftzqf9h-pilh17qQg8amYqcqh39XKYql3HO4,1
17
18
  armodel/lib/system_signal.py,sha256=E3FNiUGRUZovTCclCkabkVPpScMIACOXERUpbAuBTv8,1397
18
19
  armodel/models/__init__.py,sha256=Oj9ea8HUVNZ9I_BUiH72LT23rGSJAwx5lcdmW_8O9fM,6017
19
20
  armodel/models/M2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py,sha256=xzaoUjGPC4HX_C05pjS_i1XaBuktavwZ67VUDQckkS4,11612
21
+ armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py,sha256=chlS6CGFWpxIa5qLfJXNY_CjFGBBGp1aJcKotsa4Nxs,12137
21
22
  armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py,sha256=m9EMGnfdOeRbSFYcGabrCtOpZvb6uy2o03GoQ_MFpLQ,12261
22
23
  armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py,sha256=umY2aFmJepGOsmOTtfWTYeqY5KPb7bw4E0oazAUA7Wk,51238
23
24
  armodel/models/M2/AUTOSARTemplates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py,sha256=ttA9KPP6I1MKNFTHJ6V2VoiXW8cavKKzVqR7QowHMzQ,29701
25
+ armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py,sha256=iFPCTPAs4ypcXg_TGt_ZBZv2QfCbxyVK-WJtN1wxcxQ,30018
25
26
  armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswImplementation.py,sha256=el7uFWztAqqYaCX_BOiSI6n7zeXsdD7acwpK52ZO5cM,2209
26
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py,sha256=PXZNpITaJ5jPaDytMkV3x_4Khp7ZlR3JZT4RRZkryUI,7003
27
+ armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py,sha256=R5xu-KRd4utc7fWigQAS_Pw50_aW7koEZbeztR1ONWk,7168
27
28
  armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py,sha256=zb8tcqYPbVy72nKA9w2heZzJrEPdA5Fgz_MWnxiEqvA,7899
28
29
  armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/__init__.py,sha256=IY7GCwskITrwr1Rv76zzNUupbMsPAiG4ZMf5ZqtQuBg,118
29
30
  armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py,sha256=siMMcMNN0zQgLMdmumWGXMUDtgMytUImoarQT0HctSE,2825
@@ -60,12 +61,12 @@ armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py,sha256=iYL0HC
60
61
  armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py,sha256=Nv04EsHvXy2B70ssXUt1jUqQScqTjcHYrsopvaNb52s,3002
61
62
  armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py,sha256=DxbxvW-Qb08Whw9eTTAGWiT5JzXsapP-9XmmmIDkGmI,5138
62
63
  armodel/models/M2/AUTOSARTemplates/GenericStructure/__init__.py,sha256=ovguP4wzQEDNguczwiZnhMm4dRRVcvnzmHrfQtlRCNQ,15
63
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py,sha256=sMsvUklWiELqzxveSB_PmOwZ9kx5YC52xcTCajwiYDc,44341
64
+ armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py,sha256=Yil9JEHNmLHT9BgF8aU2TkQQl3znDWXoBpDIqaYRUsU,44394
64
65
  armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py,sha256=upjY_vPc1r1JujHy1YCTAwQKeWw0TO1Ju3L-yDlPjp0,551
65
66
  armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py,sha256=-btGbRzkRmvBhKui8RnNV5jwCQnFEFTY4mjTilF4zJk,2567
66
67
  armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/EngineeringObject.py,sha256=GAlpyZhgyJSNyMpGMDqF7wd7bpzQtpWhB-2wYUvQbYw,1718
67
68
  armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py,sha256=CCoxJd-6M8SpbeBwrIyhdMoAhKQMsYqpOPdf07I5xko,7673
68
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py,sha256=lGo0G7rxHJpGwATemS4YFdbS-lwJB6Zu0eVdCiqnmCg,17481
69
+ armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py,sha256=yYGz5Spea6SRUk_3leTfeqHiOJyruz9LHeZbf10ne_A,17497
69
70
  armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
71
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py,sha256=ugfJuhglOkGZR__w1aIC_T0sKFtSkIHmtx-yG6V5v7Q,20847
71
72
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py,sha256=FoRVcXvjzdwWTS6ZtTrSc4NSnUJfRFG7gDmaUavhYN0,6386
@@ -74,9 +75,9 @@ armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocument
74
75
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcImplementation.py,sha256=ExFASEiGd3qBbHARe_p2ZlaS9YFaJ9oy68ytbeh7qVI,1259
75
76
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
77
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/InstanceRefs.py,sha256=t4a16t4-ebvsY9k6JKXB-ZmgLy8vP1ri-Jqjqgngd14,5796
77
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py,sha256=2hYgBMecD7GaZDSY6eSnquftHFV73l0ief1zy_tXuI8,18758
78
+ armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py,sha256=gpOu_ruYHTbsWypCrcLTReAKnQmBE6omTbOOwN_cj6w,18714
78
79
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/InstanceRefs.py,sha256=srGGmPcgQUNeUioEIsMao0MQUlua8X0UG01ipLyEvSs,4971
79
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py,sha256=ZXf_EFGNfAX3TzgN66_wlca5pycBeu2g17XQlaM_2Ck,3642
80
+ armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py,sha256=tQ1hfQ2U3-mP7cUCcGNAmF8oYTOqPuodoUZe0zoBMEE,3503
80
81
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py,sha256=oDth96-xAxdOKqWLvt-k4AzFtyC4wodLrzS_YVC2c88,5138
81
82
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py,sha256=J24KjT-8QkKHlAdRkXTjItibKthy9HnQIiaTipV5qJo,5162
82
83
  armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -159,10 +160,10 @@ armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py,sha2
159
160
  armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py,sha256=9soQNUg6hje5l_pakfYc5PtDF1UeEJplfBbh_HZ4Q50,885
160
161
  armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py,sha256=4MwJLkr2prOy5p2-JE0BwvH_EHpisjPm4ccDMRDzP9I,3325
161
162
  armodel/models/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
- armodel/models/utils/uuid_mgr.py,sha256=t_g52S4ej-umvo9S3kcpxytSyEVljVZoKjxhxBeYL8Y,747
163
+ armodel/models/utils/uuid_mgr.py,sha256=riuiZo6uaJpWK1dRDx3Fl86Apk1gHpv_ZtfATmGCId4,926
163
164
  armodel/parser/__init__.py,sha256=wFcqh5unmDvKvf4R8vWkeertAXwWxAuOOEsbsM4mOHs,78
164
- armodel/parser/abstract_arxml_parser.py,sha256=kZ6Sb9UljUkefA6X23GxFbpuDuZ-NyVqI_nbrRlsNt0,14296
165
- armodel/parser/arxml_parser.py,sha256=FwznoOkNr_pYtMo0H_BDGyC3Isg6LgiilOnJ8sIeysw,390142
165
+ armodel/parser/abstract_arxml_parser.py,sha256=suBQkFeHIDzd2oV_BmLJJiYR_NTkDGFZyqraWX6Ici4,14295
166
+ armodel/parser/arxml_parser.py,sha256=exwfE-bDbvNvzOLMfrsMcmQwxLagaNa5YTdMhBs5aP4,391786
166
167
  armodel/parser/connector_xlsx_parser.py,sha256=0YW0WGOeDFdSNEY_Xh8Hi-Zlv4e4ctaLUh9pibj2-1w,10312
167
168
  armodel/parser/excel_parser.py,sha256=-Ws0eDvGna9LPQC9T8bgMg3Zq84v04aSuSxZUlZx1Wo,698
168
169
  armodel/parser/file_parser.py,sha256=eexNNjO1hXd_jOVgj_zh-58v8hJ4Cf_m42WrhGohsIs,1527
@@ -179,14 +180,14 @@ armodel/tests/test_armodel/models/test_ar_package.py,sha256=nrwEabE58OHTNQf2p5lN
179
180
  armodel/tests/test_armodel/models/test_ar_ref.py,sha256=cB-07JEXGCNqVSnecR4IMTxUUGfdwYyMQI2A37nAe5M,3992
180
181
  armodel/tests/test_armodel/models/test_bsw_module_template.py,sha256=lcQPGVOGoBAV-zVCfr_JjGIVTNkfnnqikoxs6W6udxg,2542
181
182
  armodel/tests/test_armodel/models/test_common_structure.py,sha256=E-R9GywmEsYKl4YL5dKUUbbNK0jXgIZ-pY0qxF7Y3Jo,4105
182
- armodel/tests/test_armodel/models/test_data_dictionary.py,sha256=4xY0QgHhU2_K762i8qoJOXFFitMzWYL090roQDrWkYo,1154
183
- armodel/tests/test_armodel/models/test_data_prototype.py,sha256=PVIvVItwWcdGyqfn_5JJHBK7H6-C1543-XHQ0djq4LQ,4550
183
+ armodel/tests/test_armodel/models/test_data_dictionary.py,sha256=e23uuarWa2wEbTjKoa3Zt6HBX_ixs5HRC_MYLpq6S2Q,1155
184
+ armodel/tests/test_armodel/models/test_data_prototype.py,sha256=p5jaBH6YHIzt_sdHcAe7TxmjVPruF98i3DW30n-e-RU,4843
184
185
  armodel/tests/test_armodel/models/test_datatype.py,sha256=t_NpOh6EI-JWGnT53tWMA5NPNB_VyGVzo_517qGTrro,13006
185
- armodel/tests/test_armodel/models/test_general_structure.py,sha256=aY7oFNYTwj4G7A6fbi9g4LtjL6vTBmYoP15Z3R91UWs,2713
186
- armodel/tests/test_armodel/models/test_implementation.py,sha256=Z1UdwFCN9StTlTXoL1hUdkJcAQDS9KI3os9-wxkGMpk,1083
187
- armodel/tests/test_armodel/models/test_m2_msr.py,sha256=OI53I90YB-FQ6Vn3pBRIoRWsW5bIEzSwsKjSZeRXZ-E,2777
188
- armodel/tests/test_armodel/models/test_port_interface.py,sha256=CQd7YxBeMDuliqx0SQ1IZ32yGKrUQo6mZcqyI6qQepk,9727
189
- armodel/tests/test_armodel/models/test_port_prototype.py,sha256=eJMfvimtniRIhqA57bL1qMfp0_D9J9LrM-5GtGVl6OM,533
186
+ armodel/tests/test_armodel/models/test_general_structure.py,sha256=2wkSPbCpR519J3F7jCCx-kMoXebYQ-HSDe_boSKFQ7Q,2703
187
+ armodel/tests/test_armodel/models/test_implementation.py,sha256=N3XgSNx7B_8fvL3dmzGlXhaT-SGEaDfyc8idfhZjqY8,1089
188
+ armodel/tests/test_armodel/models/test_m2_msr.py,sha256=3LsI7dYcT9z4BbCClMAwvSJkNUkXUQvEo9IkQ2-sYTU,2808
189
+ armodel/tests/test_armodel/models/test_port_interface.py,sha256=ZSt8ELgV3NNHRxTVgpqirTOADRwDPHkIWurUPe5X-4c,9972
190
+ armodel/tests/test_armodel/models/test_port_prototype.py,sha256=iaJ0Bie4_sYGnIGelWDXf7Oia7QDoysTMmFuQvqK4KQ,539
190
191
  armodel/tests/test_armodel/parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
192
  armodel/tests/test_armodel/parser/test_arxml_parser.py,sha256=G87rUosLoMSfQZji37w6x8p-Nz0KMf_sXwVSNpGjLYQ,2612
192
193
  armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py,sha256=LSrXnk0NIC5-YdHeM0CCFZmmbnTmXs3-rToimDzdd0Y,11675
@@ -194,17 +195,17 @@ armodel/tests/test_armodel/parser/test_implementation_data_type.py,sha256=3-LxYv
194
195
  armodel/tests/test_armodel/parser/test_parse_bswmd.py,sha256=Dju0afdFi7MqrP0BCBzOIILlIgLL6ux4lhoXmvtwZ8U,10499
195
196
  armodel/tests/test_armodel/parser/test_rte_event.py,sha256=GxhMNNANx_EZ_-jDRgZkd5lOn7treRPzNLYdQC6DMv4,8951
196
197
  armodel/tests/test_armodel/parser/test_runnable_entity.py,sha256=1irri1yDI0P8kE7_XQPzjAmOphovtJwtPns9qT2ieQk,8583
197
- armodel/tests/test_armodel/parser/test_sw_components.py,sha256=M-T26txeupgZwfCq89QkPga-3m7OSZ9DOqZtgPpZvSY,20950
198
+ armodel/tests/test_armodel/parser/test_sw_components.py,sha256=ALaKHVd8CZcJn0u00jLz_4DR0-smo7DfJbfgdTdr9Ok,26838
198
199
  armodel/tests/test_armodel/parser/test_system.py,sha256=islzROEJGx5PoR9GkjJHopYPu8hEs7iSGhQviajYoxk,908
199
200
  armodel/transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
201
  armodel/transformer/abstract.py,sha256=y6oATVcdu7I34RTb1PxGqgz7QdvcWcL2rCctEZMeo2E,108
201
202
  armodel/transformer/admin_data.py,sha256=k5LnDz8F2WoBgNw71agEjWaMnGITrAzB-mp5iJ02PJU,1323
202
203
  armodel/writer/__init__.py,sha256=eXr3qhGzFIvHNBin22x-Tk2JM6QwRgx1jwrluDKAlzQ,37
203
204
  armodel/writer/abstract_arxml_writer.py,sha256=fmSC2beb_2Q_LW-nCbaOem85xX5616FW_sFPlJaflFw,6401
204
- armodel/writer/arxml_writer.py,sha256=cJA71OKzqScXusr8jlBwV8yvqyvrrSaIvGUgMprmFpw,403829
205
- armodel-1.8.3.dist-info/LICENSE,sha256=rceTpGhsmmN1M0k1KO0HRS11iCjen-2y56ZEqgo43wo,1088
206
- armodel-1.8.3.dist-info/METADATA,sha256=flH6NRVtBAJJsQyEiBcPxbMOtvsduZPb5pl0o8-yDMc,17922
207
- armodel-1.8.3.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
208
- armodel-1.8.3.dist-info/entry_points.txt,sha256=br5_peUAKrFTC7K4p11OlwsDKIhqpSdIvxpi7nDfAf0,493
209
- armodel-1.8.3.dist-info/top_level.txt,sha256=AEATYsqAuRpr0XGa_ThW7-o4WLlA5e3PEgD0QJhzmoA,8
210
- armodel-1.8.3.dist-info/RECORD,,
205
+ armodel/writer/arxml_writer.py,sha256=dQcrTa5kxKNGwCR2G22DAAkKSdUxAL3bRNWS4E2FeHM,404843
206
+ armodel-1.8.5.dist-info/LICENSE,sha256=rceTpGhsmmN1M0k1KO0HRS11iCjen-2y56ZEqgo43wo,1088
207
+ armodel-1.8.5.dist-info/METADATA,sha256=Nhm5GkjecH2QgP-6XylUI9cNJ1l0Q3RIrs09_y1ZnUY,18385
208
+ armodel-1.8.5.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
209
+ armodel-1.8.5.dist-info/entry_points.txt,sha256=24xz9yK6gjxZ2IlHB23zY3_8M8rwrqAkWgElNBquUdA,550
210
+ armodel-1.8.5.dist-info/top_level.txt,sha256=AEATYsqAuRpr0XGa_ThW7-o4WLlA5e3PEgD0QJhzmoA,8
211
+ armodel-1.8.5.dist-info/RECORD,,
@@ -3,6 +3,7 @@ armodel-component = armodel.cli.swc_list_cli:main
3
3
  armodel-file-list = armodel.cli.file_list_cli:main
4
4
  armodel-memory-section = armodel.cli.memory_section_cli:main
5
5
  armodel-system-signal = armodel.cli.system_signal_cli:main
6
+ armodel-uuid-checker = armodel.cli.uuid_checker_cli:main
6
7
  arxml-dump = armodel.cli.arxml_dump_cli:cli_main
7
8
  arxml-format = armodel.cli.arxml_format_cli:main
8
9
  connector-update = armodel.cli.connector_update_cli:main