armodel 1.8.4__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 +1 -0
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +8 -3
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +3 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +3 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +25 -30
- armodel/parser/arxml_parser.py +17 -8
- 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-1.8.4.dist-info → armodel-1.8.5.dist-info}/METADATA +8 -1
- {armodel-1.8.4.dist-info → armodel-1.8.5.dist-info}/RECORD +20 -20
- {armodel-1.8.4.dist-info → armodel-1.8.5.dist-info}/LICENSE +0 -0
- {armodel-1.8.4.dist-info → armodel-1.8.5.dist-info}/WHEEL +0 -0
- {armodel-1.8.4.dist-info → armodel-1.8.5.dist-info}/entry_points.txt +0 -0
- {armodel-1.8.4.dist-info → armodel-1.8.5.dist-info}/top_level.txt +0 -0
armodel/cli/uuid_checker_cli.py
CHANGED
|
@@ -57,6 +57,7 @@ def perform_uuid_duplicate_check(args):
|
|
|
57
57
|
parser.load(filename, document)
|
|
58
58
|
|
|
59
59
|
with open(args.OUTPUT, 'w') as f_out:
|
|
60
|
+
logger.info("Writing the duplicate UUIDs to <%s>", args.OUTPUT)
|
|
60
61
|
for uuid in document.getDuplicateUUIDs():
|
|
61
62
|
ar_objects = document.getARObjectByUUID(uuid)
|
|
62
63
|
if len(ar_objects) > 1:
|
|
@@ -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:
|
|
@@ -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:
|
|
@@ -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/parser/arxml_parser.py
CHANGED
|
@@ -101,7 +101,7 @@ from ..models.M2.AUTOSARTemplates.SWComponentTemplate.EndToEndProtection import
|
|
|
101
101
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import POperationInAtomicSwcInstanceRef, PPortInCompositionInstanceRef
|
|
102
102
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Composition.InstanceRefs import ROperationInAtomicSwcInstanceRef, RPortInCompositionInstanceRef
|
|
103
103
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.PortInterface.InstanceRefs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
104
|
-
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest
|
|
104
|
+
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import CompositeNetworkRepresentation, ModeSwitchedAckRequest, NvRequireComSpec
|
|
105
105
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransformationComSpecProps, UserDefinedTransformationComSpecProps
|
|
106
106
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import TransmissionAcknowledgementRequest
|
|
107
107
|
from ..models.M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
|
|
@@ -1968,6 +1968,9 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
1968
1968
|
com_spec.setInitValue(self.getInitValue(element)) \
|
|
1969
1969
|
.setParameterRef(self.getChildElementOptionalRefType(element, "PARAMETER-REF"))
|
|
1970
1970
|
return com_spec
|
|
1971
|
+
|
|
1972
|
+
def getNvProvideComSpec(self, element: ET.Element) -> NvRequireComSpec:
|
|
1973
|
+
pass
|
|
1971
1974
|
|
|
1972
1975
|
def getQueuedReceiverComSpec(self, element: ET.Element) -> QueuedReceiverComSpec:
|
|
1973
1976
|
com_spec = QueuedReceiverComSpec()
|
|
@@ -2009,6 +2012,8 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
2009
2012
|
parent.addRequiredComSpec(self.getModeSwitchReceiverComSpec(child_element))
|
|
2010
2013
|
elif tag_name == "PARAMETER-REQUIRE-COM-SPEC":
|
|
2011
2014
|
parent.addRequiredComSpec(self.getParameterRequireComSpec(child_element))
|
|
2015
|
+
elif tag_name == "NV-PROVIDE-COM-SPEC":
|
|
2016
|
+
parent.addRequiredComSpec(self.getNvProvideComSpec(child_element))
|
|
2012
2017
|
else:
|
|
2013
2018
|
self.raiseError("Unsupported RequiredComSpec <%s>" % tag_name)
|
|
2014
2019
|
|
|
@@ -5214,18 +5219,19 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
5214
5219
|
group.addISignalIPduRef(ref_type)
|
|
5215
5220
|
|
|
5216
5221
|
def readSenderReceiverToSignalMapping(self, element: ET.Element, mapping: SenderReceiverToSignalMapping):
|
|
5217
|
-
mapping.setCommunicationDirection(self.getChildElementOptionalLiteral(element, "COMMUNICATION-DIRECTION"))
|
|
5218
|
-
|
|
5219
|
-
|
|
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())
|
|
5220
5226
|
|
|
5221
5227
|
def readSenderRecCompositeTypeMapping(self, element: ET.Element, mapping: SenderRecCompositeTypeMapping):
|
|
5222
5228
|
self.readARObjectAttributes(element, mapping)
|
|
5223
5229
|
|
|
5224
5230
|
def readSenderRecRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordElementMapping):
|
|
5225
5231
|
self.readARObjectAttributes(element, mapping)
|
|
5226
|
-
mapping.setApplicationRecordElementRef(self.getChildElementOptionalRefType(element, "APPLICATION-RECORD-ELEMENT-REF"))
|
|
5227
|
-
|
|
5228
|
-
|
|
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"))
|
|
5229
5235
|
|
|
5230
5236
|
def readSenderRecArrayTypeMappingRecordElementMapping(self, element: ET.Element, mapping: SenderRecRecordTypeMapping):
|
|
5231
5237
|
for child_element in self.findall(element, "RECORD-ELEMENT-MAPPINGS/*"):
|
|
@@ -5342,7 +5348,10 @@ class ARXMLParser(AbstractARXMLParser):
|
|
|
5342
5348
|
self.readIdentifiable(child_element, prototype)
|
|
5343
5349
|
prototype.setFlatMapRef(self.getChildElementOptionalRefType(child_element, "FLAT-MAP-REF")) \
|
|
5344
5350
|
.setSoftwareCompositionTRef(self.getChildElementOptionalRefType(child_element, "SOFTWARE-COMPOSITION-TREF"))
|
|
5345
|
-
|
|
5351
|
+
try:
|
|
5352
|
+
AUTOSAR.getInstance().setRootSwCompositionPrototype(prototype)
|
|
5353
|
+
except ValueError as e:
|
|
5354
|
+
self.raiseWarning("%s" % e)
|
|
5346
5355
|
|
|
5347
5356
|
def readSystemFibexElementRefs(self, element: ET.Element, system: System):
|
|
5348
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
|
+
|
|
@@ -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
|
|
@@ -638,4 +638,11 @@ Fix the attribute intervalType of **Limit** is empty issue.
|
|
|
638
638
|
2. Add the armodel-uuid-checker cli.
|
|
639
639
|
3. Remove the space in the boolean type.
|
|
640
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.
|
|
641
648
|
|
|
@@ -9,7 +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=
|
|
12
|
+
armodel/cli/uuid_checker_cli.py,sha256=rqYGHJgKL90D1e3ool5sj0lqoKJocFJbdPGc2zRlnoc,3220
|
|
13
13
|
armodel/data_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
armodel/data_models/sw_connector.py,sha256=ZU1B3AI84vpSSSpQaGR6CMc3qZGnhbK1Z-SQGvwYA9o,584
|
|
15
15
|
armodel/lib/__init__.py,sha256=5629DkORqTomt16J6VL40o5hFv86-9SRB1240OJWTts,142
|
|
@@ -18,7 +18,7 @@ armodel/lib/sw_component.py,sha256=spUeVR8ftzqf9h-pilh17qQg8amYqcqh39XKYql3HO4,1
|
|
|
18
18
|
armodel/lib/system_signal.py,sha256=E3FNiUGRUZovTCclCkabkVPpScMIACOXERUpbAuBTv8,1397
|
|
19
19
|
armodel/models/__init__.py,sha256=Oj9ea8HUVNZ9I_BUiH72LT23rGSJAwx5lcdmW_8O9fM,6017
|
|
20
20
|
armodel/models/M2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py,sha256=
|
|
21
|
+
armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py,sha256=chlS6CGFWpxIa5qLfJXNY_CjFGBBGp1aJcKotsa4Nxs,12137
|
|
22
22
|
armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py,sha256=m9EMGnfdOeRbSFYcGabrCtOpZvb6uy2o03GoQ_MFpLQ,12261
|
|
23
23
|
armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py,sha256=umY2aFmJepGOsmOTtfWTYeqY5KPb7bw4E0oazAUA7Wk,51238
|
|
24
24
|
armodel/models/M2/AUTOSARTemplates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -61,7 +61,7 @@ armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py,sha256=iYL0HC
|
|
|
61
61
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py,sha256=Nv04EsHvXy2B70ssXUt1jUqQScqTjcHYrsopvaNb52s,3002
|
|
62
62
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py,sha256=DxbxvW-Qb08Whw9eTTAGWiT5JzXsapP-9XmmmIDkGmI,5138
|
|
63
63
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/__init__.py,sha256=ovguP4wzQEDNguczwiZnhMm4dRRVcvnzmHrfQtlRCNQ,15
|
|
64
|
-
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py,sha256=
|
|
64
|
+
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py,sha256=Yil9JEHNmLHT9BgF8aU2TkQQl3znDWXoBpDIqaYRUsU,44394
|
|
65
65
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py,sha256=upjY_vPc1r1JujHy1YCTAwQKeWw0TO1Ju3L-yDlPjp0,551
|
|
66
66
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py,sha256=-btGbRzkRmvBhKui8RnNV5jwCQnFEFTY4mjTilF4zJk,2567
|
|
67
67
|
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/EngineeringObject.py,sha256=GAlpyZhgyJSNyMpGMDqF7wd7bpzQtpWhB-2wYUvQbYw,1718
|
|
@@ -75,9 +75,9 @@ armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocument
|
|
|
75
75
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcImplementation.py,sha256=ExFASEiGd3qBbHARe_p2ZlaS9YFaJ9oy68ytbeh7qVI,1259
|
|
76
76
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/InstanceRefs.py,sha256=t4a16t4-ebvsY9k6JKXB-ZmgLy8vP1ri-Jqjqgngd14,5796
|
|
78
|
-
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py,sha256=
|
|
78
|
+
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py,sha256=gpOu_ruYHTbsWypCrcLTReAKnQmBE6omTbOOwN_cj6w,18714
|
|
79
79
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/InstanceRefs.py,sha256=srGGmPcgQUNeUioEIsMao0MQUlua8X0UG01ipLyEvSs,4971
|
|
80
|
-
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py,sha256=
|
|
80
|
+
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py,sha256=tQ1hfQ2U3-mP7cUCcGNAmF8oYTOqPuodoUZe0zoBMEE,3503
|
|
81
81
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py,sha256=oDth96-xAxdOKqWLvt-k4AzFtyC4wodLrzS_YVC2c88,5138
|
|
82
82
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py,sha256=J24KjT-8QkKHlAdRkXTjItibKthy9HnQIiaTipV5qJo,5162
|
|
83
83
|
armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -163,7 +163,7 @@ armodel/models/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
163
163
|
armodel/models/utils/uuid_mgr.py,sha256=riuiZo6uaJpWK1dRDx3Fl86Apk1gHpv_ZtfATmGCId4,926
|
|
164
164
|
armodel/parser/__init__.py,sha256=wFcqh5unmDvKvf4R8vWkeertAXwWxAuOOEsbsM4mOHs,78
|
|
165
165
|
armodel/parser/abstract_arxml_parser.py,sha256=suBQkFeHIDzd2oV_BmLJJiYR_NTkDGFZyqraWX6Ici4,14295
|
|
166
|
-
armodel/parser/arxml_parser.py,sha256=
|
|
166
|
+
armodel/parser/arxml_parser.py,sha256=exwfE-bDbvNvzOLMfrsMcmQwxLagaNa5YTdMhBs5aP4,391786
|
|
167
167
|
armodel/parser/connector_xlsx_parser.py,sha256=0YW0WGOeDFdSNEY_Xh8Hi-Zlv4e4ctaLUh9pibj2-1w,10312
|
|
168
168
|
armodel/parser/excel_parser.py,sha256=-Ws0eDvGna9LPQC9T8bgMg3Zq84v04aSuSxZUlZx1Wo,698
|
|
169
169
|
armodel/parser/file_parser.py,sha256=eexNNjO1hXd_jOVgj_zh-58v8hJ4Cf_m42WrhGohsIs,1527
|
|
@@ -180,14 +180,14 @@ armodel/tests/test_armodel/models/test_ar_package.py,sha256=nrwEabE58OHTNQf2p5lN
|
|
|
180
180
|
armodel/tests/test_armodel/models/test_ar_ref.py,sha256=cB-07JEXGCNqVSnecR4IMTxUUGfdwYyMQI2A37nAe5M,3992
|
|
181
181
|
armodel/tests/test_armodel/models/test_bsw_module_template.py,sha256=lcQPGVOGoBAV-zVCfr_JjGIVTNkfnnqikoxs6W6udxg,2542
|
|
182
182
|
armodel/tests/test_armodel/models/test_common_structure.py,sha256=E-R9GywmEsYKl4YL5dKUUbbNK0jXgIZ-pY0qxF7Y3Jo,4105
|
|
183
|
-
armodel/tests/test_armodel/models/test_data_dictionary.py,sha256=
|
|
184
|
-
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
|
|
185
185
|
armodel/tests/test_armodel/models/test_datatype.py,sha256=t_NpOh6EI-JWGnT53tWMA5NPNB_VyGVzo_517qGTrro,13006
|
|
186
|
-
armodel/tests/test_armodel/models/test_general_structure.py,sha256=
|
|
187
|
-
armodel/tests/test_armodel/models/test_implementation.py,sha256=
|
|
188
|
-
armodel/tests/test_armodel/models/test_m2_msr.py,sha256=
|
|
189
|
-
armodel/tests/test_armodel/models/test_port_interface.py,sha256=
|
|
190
|
-
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
|
|
191
191
|
armodel/tests/test_armodel/parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
192
|
armodel/tests/test_armodel/parser/test_arxml_parser.py,sha256=G87rUosLoMSfQZji37w6x8p-Nz0KMf_sXwVSNpGjLYQ,2612
|
|
193
193
|
armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py,sha256=LSrXnk0NIC5-YdHeM0CCFZmmbnTmXs3-rToimDzdd0Y,11675
|
|
@@ -195,7 +195,7 @@ armodel/tests/test_armodel/parser/test_implementation_data_type.py,sha256=3-LxYv
|
|
|
195
195
|
armodel/tests/test_armodel/parser/test_parse_bswmd.py,sha256=Dju0afdFi7MqrP0BCBzOIILlIgLL6ux4lhoXmvtwZ8U,10499
|
|
196
196
|
armodel/tests/test_armodel/parser/test_rte_event.py,sha256=GxhMNNANx_EZ_-jDRgZkd5lOn7treRPzNLYdQC6DMv4,8951
|
|
197
197
|
armodel/tests/test_armodel/parser/test_runnable_entity.py,sha256=1irri1yDI0P8kE7_XQPzjAmOphovtJwtPns9qT2ieQk,8583
|
|
198
|
-
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
|
|
199
199
|
armodel/tests/test_armodel/parser/test_system.py,sha256=islzROEJGx5PoR9GkjJHopYPu8hEs7iSGhQviajYoxk,908
|
|
200
200
|
armodel/transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
201
|
armodel/transformer/abstract.py,sha256=y6oATVcdu7I34RTb1PxGqgz7QdvcWcL2rCctEZMeo2E,108
|
|
@@ -203,9 +203,9 @@ armodel/transformer/admin_data.py,sha256=k5LnDz8F2WoBgNw71agEjWaMnGITrAzB-mp5iJ0
|
|
|
203
203
|
armodel/writer/__init__.py,sha256=eXr3qhGzFIvHNBin22x-Tk2JM6QwRgx1jwrluDKAlzQ,37
|
|
204
204
|
armodel/writer/abstract_arxml_writer.py,sha256=fmSC2beb_2Q_LW-nCbaOem85xX5616FW_sFPlJaflFw,6401
|
|
205
205
|
armodel/writer/arxml_writer.py,sha256=dQcrTa5kxKNGwCR2G22DAAkKSdUxAL3bRNWS4E2FeHM,404843
|
|
206
|
-
armodel-1.8.
|
|
207
|
-
armodel-1.8.
|
|
208
|
-
armodel-1.8.
|
|
209
|
-
armodel-1.8.
|
|
210
|
-
armodel-1.8.
|
|
211
|
-
armodel-1.8.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|