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.
- armodel/cli/uuid_checker_cli.py +95 -0
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +12 -4
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +7 -0
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +7 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +3 -2
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +2 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +3 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +25 -30
- armodel/models/utils/uuid_mgr.py +6 -0
- armodel/parser/abstract_arxml_parser.py +1 -1
- armodel/parser/arxml_parser.py +40 -14
- armodel/tests/test_armodel/models/test_data_dictionary.py +15 -14
- armodel/tests/test_armodel/models/test_data_prototype.py +44 -41
- armodel/tests/test_armodel/models/test_general_structure.py +0 -5
- armodel/tests/test_armodel/models/test_implementation.py +4 -4
- armodel/tests/test_armodel/models/test_m2_msr.py +32 -32
- armodel/tests/test_armodel/models/test_port_interface.py +9 -10
- armodel/tests/test_armodel/models/test_port_prototype.py +4 -3
- armodel/tests/test_armodel/parser/test_sw_components.py +111 -1
- armodel/writer/arxml_writer.py +17 -3
- {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/METADATA +16 -1
- {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/RECORD +26 -25
- {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/entry_points.txt +1 -0
- {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/LICENSE +0 -0
- {armodel-1.8.3.dist-info → armodel-1.8.5.dist-info}/WHEEL +0 -0
- {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
|
|
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
|
|
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
|
|
118
|
-
self.
|
|
119
|
-
|
|
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
|
|
147
|
-
|
|
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:
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py
CHANGED
|
@@ -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.
|
|
252
|
-
self.
|
|
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
|
|
307
|
-
self.symbolProps = None
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|
|
39
|
-
self.
|
|
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
|
|
68
|
-
self.outerPortRef = None
|
|
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
|
|
90
|
-
self.requiredOuterPortRef = None
|
|
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
|
-
|
armodel/models/utils/uuid_mgr.py
CHANGED
|
@@ -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.
|
|
178
|
+
bool_value.setValue(literal.getText())
|
|
179
179
|
return bool_value
|
|
180
180
|
|
|
181
181
|
def _convertStringToNumberValue(self, value) -> int:
|
armodel/parser/arxml_parser.py
CHANGED
|
@@ -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
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
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
|
-
|
|
5202
|
-
|
|
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
|
-
|
|
5211
|
-
|
|
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
|
-
|
|
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
|
|
14
|
-
assert(props.compuMethodRef
|
|
15
|
-
assert(props.dataConstrRef
|
|
16
|
-
assert(props.implementationDataTypeRef
|
|
17
|
-
assert(props.swImplPolicy
|
|
18
|
-
assert(props.swCalibrationAccess
|
|
19
|
-
assert(props.swPointerTargetProps
|
|
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()
|
|
28
|
-
assert(props.getSwDataDefProps()
|
|
29
|
-
assert(props.getTargetCategory()
|
|
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
|
|
8
|
-
from ....models.M2.AUTOSARTemplates.
|
|
9
|
-
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import
|
|
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(
|
|
58
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
22
|
-
assert(compu.compuDefaultValue
|
|
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
|
|
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
|
|
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
|
|
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
|
|
62
|
-
assert(compu_scale.lowerLimit
|
|
63
|
-
assert(compu_scale.upperLimit
|
|
64
|
-
assert(compu_scale.compuInverseValue
|
|
65
|
-
assert(compu_scale.compuScaleContents
|
|
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
|
|
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
|
|
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()
|
|
129
|
-
assert (prototype.getServerArgumentImplPolicy()
|
|
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(
|
|
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
|
-
|
|
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
|
+
|
armodel/writer/arxml_writer.py
CHANGED
|
@@ -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,
|
|
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
|
+
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
165
|
-
armodel/parser/arxml_parser.py,sha256=
|
|
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=
|
|
183
|
-
armodel/tests/test_armodel/models/test_data_prototype.py,sha256=
|
|
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=
|
|
186
|
-
armodel/tests/test_armodel/models/test_implementation.py,sha256=
|
|
187
|
-
armodel/tests/test_armodel/models/test_m2_msr.py,sha256=
|
|
188
|
-
armodel/tests/test_armodel/models/test_port_interface.py,sha256=
|
|
189
|
-
armodel/tests/test_armodel/models/test_port_prototype.py,sha256=
|
|
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=
|
|
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=
|
|
205
|
-
armodel-1.8.
|
|
206
|
-
armodel-1.8.
|
|
207
|
-
armodel-1.8.
|
|
208
|
-
armodel-1.8.
|
|
209
|
-
armodel-1.8.
|
|
210
|
-
armodel-1.8.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|