armodel 1.7.9__py3-none-any.whl → 1.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. armodel/cli/arxml_format_cli.py +1 -0
  2. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -11
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +30 -28
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +5 -0
  5. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +5 -0
  6. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +19 -9
  7. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +11 -10
  8. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -2
  9. armodel/models/M2/AUTOSARTemplates/SystemTemplate/RteEventToOsTaskMapping.py +35 -0
  10. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SWmapping.py +25 -0
  11. armodel/models/M2/AUTOSARTemplates/SystemTemplate/SecureCommunication.py +83 -0
  12. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +84 -32
  13. armodel/models/__init__.py +2 -0
  14. armodel/models/utils/__init__.py +0 -0
  15. armodel/models/utils/uuid_mgr.py +23 -0
  16. armodel/parser/abstract_arxml_parser.py +5 -0
  17. armodel/parser/arxml_parser.py +80 -69
  18. armodel/tests/test_armodel/models/test_datatype.py +136 -138
  19. armodel/writer/arxml_writer.py +38 -28
  20. {armodel-1.7.9.dist-info → armodel-1.8.0.dist-info}/METADATA +15 -1
  21. {armodel-1.7.9.dist-info → armodel-1.8.0.dist-info}/RECORD +25 -21
  22. {armodel-1.7.9.dist-info → armodel-1.8.0.dist-info}/LICENSE +0 -0
  23. {armodel-1.7.9.dist-info → armodel-1.8.0.dist-info}/WHEEL +0 -0
  24. {armodel-1.7.9.dist-info → armodel-1.8.0.dist-info}/entry_points.txt +0 -0
  25. {armodel-1.7.9.dist-info → armodel-1.8.0.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,16 @@
1
1
  import pytest
2
2
 
3
- from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AutosarDataType, DataTypeMap
4
-
5
- from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpType
6
-
7
3
  from ....models.M2.MSR.AsamHdo.BaseTypes import BaseType, BaseTypeDirectDefinition
8
-
4
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationArrayDataType, ApplicationCompositeDataType
5
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, ApplicationPrimitiveDataType
6
+ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationRecordDataType, AutosarDataType, DataTypeMap
7
+ from ....models.M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AtpType
9
8
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import PackageableElement
10
-
11
9
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement
12
-
13
10
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable, MultilanguageReferrable, Referrable
14
-
15
11
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
16
-
17
- from ....models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import AbstractImplementationDataType, ImplementationDataType, ImplementationDataTypeElement
12
+ from ....models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import AbstractImplementationDataType, ImplementationDataType
13
+ from ....models.M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataTypeElement
18
14
  from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Components import SymbolProps
19
15
  from ....models.M2.AUTOSARTemplates.CommonStructure.Implementation import ImplementationProps
20
16
  from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ApplicationRecordElement
@@ -22,27 +18,30 @@ from ....models.M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes impor
22
18
  from ....models.M2.MSR.AsamHdo.BaseTypes import SwBaseType
23
19
  from ....models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
24
20
  from .... import AUTOSAR
21
+
22
+
25
23
  class Test_M2_AUTOSARTemplates_CommonStructure_Implementation:
26
24
  def test_ImplementationProps(self):
27
25
  with pytest.raises(NotImplementedError) as err:
28
26
  document = AUTOSAR.getInstance()
29
27
  ar_root = document.createARPackage("AUTOSAR")
30
28
  ImplementationProps(ar_root, "ImplementationProps")
31
- assert(str(err.value) == "ImplementationProps is an abstract class.")
29
+ assert (str(err.value) == "ImplementationProps is an abstract class.")
32
30
 
33
31
  def test_SymbolProps(self):
34
32
  document = AUTOSAR.getInstance()
35
33
  ar_root = document.createARPackage("AUTOSAR")
36
34
  prototype = SymbolProps(ar_root, "SymbolProps")
37
35
 
38
- assert(isinstance(prototype, ARObject))
39
- assert(isinstance(prototype, ImplementationProps))
40
- assert(isinstance(prototype, Referrable))
41
- assert(isinstance(prototype, SymbolProps))
36
+ assert (isinstance(prototype, ARObject))
37
+ assert (isinstance(prototype, ImplementationProps))
38
+ assert (isinstance(prototype, Referrable))
39
+ assert (isinstance(prototype, SymbolProps))
40
+
41
+ assert (prototype.parent == ar_root)
42
+ assert (prototype.short_name == "SymbolProps")
43
+ assert (prototype.symbol is None)
42
44
 
43
- assert(prototype.parent == ar_root)
44
- assert(prototype.short_name == "SymbolProps")
45
- assert(prototype.symbol == None)
46
45
 
47
46
  class Test_M2_MSR_AsamHdo_BaseTypes:
48
47
  def test_BaseType(self):
@@ -50,25 +49,26 @@ class Test_M2_MSR_AsamHdo_BaseTypes:
50
49
  document = AUTOSAR.getInstance()
51
50
  ar_root = document.createARPackage("AUTOSAR")
52
51
  BaseType(ar_root, "BaseType")
53
- assert(str(err.value) == "BaseType is an abstract class.")
52
+ assert (str(err.value) == "BaseType is an abstract class.")
54
53
 
55
54
  def test_SwBaseType(self):
56
55
  document = AUTOSAR.getInstance()
57
56
  ar_root = document.createARPackage("AUTOSAR")
58
57
  base_type = SwBaseType(ar_root, "SwBaseType")
59
58
 
60
- assert(isinstance(base_type, ARElement))
61
- assert(isinstance(base_type, ARObject))
62
- assert(isinstance(base_type, CollectableElement))
63
- assert(isinstance(base_type, Identifiable))
64
- assert(isinstance(base_type, MultilanguageReferrable))
65
- assert(isinstance(base_type, PackageableElement))
66
- assert(isinstance(base_type, Referrable))
67
- assert(isinstance(base_type, SwBaseType))
59
+ assert (isinstance(base_type, ARElement))
60
+ assert (isinstance(base_type, ARObject))
61
+ assert (isinstance(base_type, CollectableElement))
62
+ assert (isinstance(base_type, Identifiable))
63
+ assert (isinstance(base_type, MultilanguageReferrable))
64
+ assert (isinstance(base_type, PackageableElement))
65
+ assert (isinstance(base_type, Referrable))
66
+ assert (isinstance(base_type, SwBaseType))
67
+
68
+ assert (base_type.parent == ar_root)
69
+ assert (base_type.short_name == "SwBaseType")
70
+ assert (isinstance(base_type.baseTypeDefinition, BaseTypeDirectDefinition))
68
71
 
69
- assert(base_type.parent == ar_root)
70
- assert(base_type.short_name == "SwBaseType")
71
- assert(isinstance(base_type.baseTypeDefinition, BaseTypeDirectDefinition))
72
72
 
73
73
  class Test_M2_AUTOSARTemplates_SWComponentTemplate_Datatype_Datatypes:
74
74
  def test_AtpType(self):
@@ -76,138 +76,137 @@ class Test_M2_AUTOSARTemplates_SWComponentTemplate_Datatype_Datatypes:
76
76
  document = AUTOSAR.getInstance()
77
77
  ar_root = document.createARPackage("AUTOSAR")
78
78
  AtpType(ar_root, "AtpType")
79
- assert(str(err.value) == "AtpType is an abstract class.")
79
+ assert (str(err.value) == "AtpType is an abstract class.")
80
80
 
81
81
  def test_AutosarDataType(self):
82
82
  with pytest.raises(NotImplementedError) as err:
83
83
  document = AUTOSAR.getInstance()
84
84
  ar_root = document.createARPackage("AUTOSAR")
85
85
  AutosarDataType(ar_root, "AutosarDataType")
86
- assert(str(err.value) == "AutosarDataType is an abstract class.")
86
+ assert (str(err.value) == "AutosarDataType is an abstract class.")
87
87
 
88
88
  def test_ApplicationDataType(self):
89
89
  with pytest.raises(NotImplementedError) as err:
90
90
  document = AUTOSAR.getInstance()
91
91
  ar_root = document.createARPackage("AUTOSAR")
92
92
  ApplicationDataType(ar_root, "ApplicationDataType")
93
- assert(str(err.value) == "ApplicationDataType is an abstract class.")
93
+ assert (str(err.value) == "ApplicationDataType is an abstract class.")
94
94
 
95
95
  def test_ApplicationPrimitiveDataType(self):
96
96
  document = AUTOSAR.getInstance()
97
97
  ar_root = document.createARPackage("AUTOSAR")
98
98
  data_type = ApplicationPrimitiveDataType(ar_root, "ApplicationPrimitiveDataType")
99
99
 
100
- assert(isinstance(data_type, ARElement))
101
- assert(isinstance(data_type, ARObject))
102
- # assert(isinstance(data_type, AtpBlueprint))
103
- # assert(isinstance(data_type, AtpBlueprintable))
104
- # assert(isinstance(data_type, AtpClassifier))
105
- assert(isinstance(data_type, AtpType))
106
- assert(isinstance(data_type, AutosarDataType))
107
- assert(isinstance(data_type, CollectableElement))
108
- assert(isinstance(data_type, Identifiable))
109
- assert(isinstance(data_type, MultilanguageReferrable))
110
- assert(isinstance(data_type, PackageableElement))
111
- assert(isinstance(data_type, Referrable))
112
- assert(isinstance(data_type, ApplicationPrimitiveDataType))
113
-
114
- assert(data_type.parent == ar_root)
115
- assert(data_type.short_name == "ApplicationPrimitiveDataType")
116
- assert(data_type.swDataDefProps == None)
100
+ assert (isinstance(data_type, ARElement))
101
+ assert (isinstance(data_type, ARObject))
102
+ # assert (isinstance(data_type, AtpBlueprint))
103
+ # assert (isinstance(data_type, AtpBlueprintable))
104
+ # assert (isinstance(data_type, AtpClassifier))
105
+ assert (isinstance(data_type, AtpType))
106
+ assert (isinstance(data_type, AutosarDataType))
107
+ assert (isinstance(data_type, CollectableElement))
108
+ assert (isinstance(data_type, Identifiable))
109
+ assert (isinstance(data_type, MultilanguageReferrable))
110
+ assert (isinstance(data_type, PackageableElement))
111
+ assert (isinstance(data_type, Referrable))
112
+ assert (isinstance(data_type, ApplicationPrimitiveDataType))
113
+
114
+ assert (data_type.parent == ar_root)
115
+ assert (data_type.short_name == "ApplicationPrimitiveDataType")
116
+ assert (data_type.swDataDefProps is None)
117
117
 
118
118
  def test_ApplicationCompositeDataType(self):
119
119
  with pytest.raises(NotImplementedError) as err:
120
120
  document = AUTOSAR.getInstance()
121
121
  ar_root = document.createARPackage("AUTOSAR")
122
122
  ApplicationCompositeDataType(ar_root, "ApplicationCompositeDataType")
123
- assert(str(err.value) == "ApplicationCompositeDataType is an abstract class.")
123
+ assert (str(err.value) == "ApplicationCompositeDataType is an abstract class.")
124
124
 
125
125
  def test_ApplicationArrayDataType(self):
126
126
  document = AUTOSAR.getInstance()
127
127
  ar_root = document.createARPackage("AUTOSAR")
128
128
  data_type = ApplicationArrayDataType(ar_root, "ApplicationArrayDataType")
129
129
 
130
- assert(isinstance(data_type, ARElement))
131
- assert(isinstance(data_type, ARObject))
132
- assert(isinstance(data_type, ApplicationDataType))
133
- # assert(isinstance(data_type, AtpBlueprint))
134
- # assert(isinstance(data_type, AtpBlueprintable))
135
- # assert(isinstance(data_type, AtpClassifier))
136
- assert(isinstance(data_type, AtpType))
137
- assert(isinstance(data_type, AutosarDataType))
138
- assert(isinstance(data_type, CollectableElement))
139
- assert(isinstance(data_type, Identifiable))
140
- assert(isinstance(data_type, MultilanguageReferrable))
141
- assert(isinstance(data_type, PackageableElement))
142
- assert(isinstance(data_type, Referrable))
143
- assert(isinstance(data_type, ApplicationArrayDataType))
144
-
145
- assert(data_type.parent == ar_root)
146
- assert(data_type.short_name == "ApplicationArrayDataType")
147
- assert(data_type.dynamicArraySizeProfile == None)
148
- assert(data_type.element == None)
130
+ assert (isinstance(data_type, ARElement))
131
+ assert (isinstance(data_type, ARObject))
132
+ assert (isinstance(data_type, ApplicationDataType))
133
+ # assert (isinstance(data_type, AtpBlueprint))
134
+ # assert (isinstance(data_type, AtpBlueprintable))
135
+ # assert (isinstance(data_type, AtpClassifier))
136
+ assert (isinstance(data_type, AtpType))
137
+ assert (isinstance(data_type, AutosarDataType))
138
+ assert (isinstance(data_type, CollectableElement))
139
+ assert (isinstance(data_type, Identifiable))
140
+ assert (isinstance(data_type, MultilanguageReferrable))
141
+ assert (isinstance(data_type, PackageableElement))
142
+ assert (isinstance(data_type, Referrable))
143
+ assert (isinstance(data_type, ApplicationArrayDataType))
144
+
145
+ assert (data_type.parent == ar_root)
146
+ assert (data_type.short_name == "ApplicationArrayDataType")
147
+ assert (data_type.dynamicArraySizeProfile is None)
148
+ assert (data_type.element is None)
149
149
 
150
150
  def test_ApplicationRecordDataType(self):
151
151
  document = AUTOSAR.getInstance()
152
152
  ar_root = document.createARPackage("AUTOSAR")
153
153
  data_type = ApplicationRecordDataType(ar_root, "ApplicationRecordDataType")
154
154
 
155
- assert(isinstance(data_type, ARElement))
156
- assert(isinstance(data_type, ARObject))
157
- assert(isinstance(data_type, ApplicationDataType))
158
- # assert(isinstance(data_type, AtpBlueprint))
159
- # assert(isinstance(data_type, AtpBlueprintable))
160
- # assert(isinstance(data_type, AtpClassifier))
161
- assert(isinstance(data_type, AtpType))
162
- assert(isinstance(data_type, AutosarDataType))
163
- assert(isinstance(data_type, CollectableElement))
164
- assert(isinstance(data_type, Identifiable))
165
- assert(isinstance(data_type, MultilanguageReferrable))
166
- assert(isinstance(data_type, PackageableElement))
167
- assert(isinstance(data_type, Referrable))
168
- assert(isinstance(data_type, ApplicationRecordDataType))
169
-
170
- assert(data_type.parent == ar_root)
171
- assert(data_type.short_name == "ApplicationRecordDataType")
155
+ assert (isinstance(data_type, ARElement))
156
+ assert (isinstance(data_type, ARObject))
157
+ assert (isinstance(data_type, ApplicationDataType))
158
+ # assert (isinstance(data_type, AtpBlueprint))
159
+ # assert (isinstance(data_type, AtpBlueprintable))
160
+ # assert (isinstance(data_type, AtpClassifier))
161
+ assert (isinstance(data_type, AtpType))
162
+ assert (isinstance(data_type, AutosarDataType))
163
+ assert (isinstance(data_type, CollectableElement))
164
+ assert (isinstance(data_type, Identifiable))
165
+ assert (isinstance(data_type, MultilanguageReferrable))
166
+ assert (isinstance(data_type, PackageableElement))
167
+ assert (isinstance(data_type, Referrable))
168
+ assert (isinstance(data_type, ApplicationRecordDataType))
169
+
170
+ assert (data_type.parent == ar_root)
171
+ assert (data_type.short_name == "ApplicationRecordDataType")
172
172
 
173
173
  element = data_type.createApplicationRecordElement("element")
174
- assert(isinstance(element, ApplicationRecordElement))
175
- assert(element.short_name == "element")
174
+ assert (isinstance(element, ApplicationRecordElement))
175
+ assert (element.short_name == "element")
176
176
 
177
177
  def test_DataTypeMap(self):
178
178
  data_type_map = DataTypeMap()
179
179
 
180
- assert(isinstance(data_type_map, ARObject))
181
- assert(isinstance(data_type_map, DataTypeMap))
180
+ assert (isinstance(data_type_map, ARObject))
181
+ assert (isinstance(data_type_map, DataTypeMap))
182
182
 
183
- assert(data_type_map.applicationDataTypeRef == None)
184
- assert(data_type_map.implementationDataTypeRef == None)
183
+ assert (data_type_map.applicationDataTypeRef is None)
184
+ assert (data_type_map.implementationDataTypeRef is None)
185
185
 
186
186
  def test_DataTypeMappingSet(self):
187
187
  document = AUTOSAR.getInstance()
188
188
  ar_root = document.createARPackage("AUTOSAR")
189
189
  data_type_mapping_set = DataTypeMappingSet(ar_root, "DataTypeMappingSet")
190
190
 
191
- assert(isinstance(data_type_mapping_set, ARElement))
192
- assert(isinstance(data_type_mapping_set, ARObject))
193
- # assert(isinstance(data_type_mapping_set, AtpBlueprint))
194
- # assert(isinstance(data_type_mapping_set, AtpBlueprintable))
195
- assert(isinstance(data_type_mapping_set, CollectableElement))
196
- assert(isinstance(data_type_mapping_set, Identifiable))
197
- assert(isinstance(data_type_mapping_set, MultilanguageReferrable))
198
- assert(isinstance(data_type_mapping_set, PackageableElement))
199
- assert(isinstance(data_type_mapping_set, Referrable))
200
- assert(isinstance(data_type_mapping_set, DataTypeMappingSet))
201
-
202
- assert(data_type_mapping_set.parent == ar_root)
203
- assert(data_type_mapping_set.short_name == "DataTypeMappingSet")
204
- assert(len(data_type_mapping_set.dataTypeMaps) == 0)
191
+ assert (isinstance(data_type_mapping_set, ARElement))
192
+ assert (isinstance(data_type_mapping_set, ARObject))
193
+ # assert (isinstance(data_type_mapping_set, AtpBlueprint))
194
+ # assert (isinstance(data_type_mapping_set, AtpBlueprintable))
195
+ assert (isinstance(data_type_mapping_set, CollectableElement))
196
+ assert (isinstance(data_type_mapping_set, Identifiable))
197
+ assert (isinstance(data_type_mapping_set, MultilanguageReferrable))
198
+ assert (isinstance(data_type_mapping_set, PackageableElement))
199
+ assert (isinstance(data_type_mapping_set, Referrable))
200
+ assert (isinstance(data_type_mapping_set, DataTypeMappingSet))
201
+
202
+ assert (data_type_mapping_set.parent == ar_root)
203
+ assert (data_type_mapping_set.short_name == "DataTypeMappingSet")
204
+ assert (len(data_type_mapping_set.dataTypeMaps) == 0)
205
205
 
206
206
  data_type_map = DataTypeMap()
207
207
  data_type_mapping_set.addDataTypeMap(data_type_map)
208
- assert(len(data_type_mapping_set.getDataTypeMaps()) == 1)
209
- assert(data_type_mapping_set.getDataTypeMaps()[0] == data_type_map)
210
-
208
+ assert (len(data_type_mapping_set.getDataTypeMaps()) == 1)
209
+ assert (data_type_mapping_set.getDataTypeMaps()[0] == data_type_map)
211
210
 
212
211
 
213
212
  class Test_M2_AUTOSARTemplates_CommonStructure_ImplementationDataTypes:
@@ -216,38 +215,37 @@ class Test_M2_AUTOSARTemplates_CommonStructure_ImplementationDataTypes:
216
215
  document = AUTOSAR.getInstance()
217
216
  ar_root = document.createARPackage("AUTOSAR")
218
217
  AbstractImplementationDataType(ar_root, "AbstractImplementationDataType")
219
- assert(str(err.value) == "AbstractImplementationDataType is an abstract class.")
218
+ assert (str(err.value) == "AbstractImplementationDataType is an abstract class.")
220
219
 
221
220
  def test_ImplementationDataType(self):
222
221
  document = AUTOSAR.getInstance()
223
222
  ar_root = document.createARPackage("AUTOSAR")
224
- data_type = ImplementationDataType(ar_root, "ImplementationDataType")
225
-
226
- assert(isinstance(data_type, ARElement))
227
- assert(isinstance(data_type, ARObject))
228
- assert(isinstance(data_type, AbstractImplementationDataType,))
229
- # assert(isinstance(data_type, AtpBlueprint))
230
- # assert(isinstance(data_type, AtpBlueprintable))
231
- # assert(isinstance(data_type, AtpClassifier))
232
- assert(isinstance(data_type, AtpType))
233
- assert(isinstance(data_type, AutosarDataType))
234
- assert(isinstance(data_type, CollectableElement))
235
- assert(isinstance(data_type, Identifiable))
236
- assert(isinstance(data_type, MultilanguageReferrable))
237
- assert(isinstance(data_type, PackageableElement))
238
- assert(isinstance(data_type, Referrable))
239
- assert(isinstance(data_type, ImplementationDataType))
240
-
241
- assert(data_type.parent == ar_root)
242
- assert(data_type.short_name == "ImplementationDataType")
243
- assert(data_type.subElements == [])
244
- assert(data_type.symbolProps == None)
245
- assert(data_type.typeEmitter == None)
223
+ data_type = ar_root.createImplementationDataType("ImplementationDataType")
224
+
225
+ assert (isinstance(data_type, ARElement))
226
+ assert (isinstance(data_type, ARObject))
227
+ assert (isinstance(data_type, AbstractImplementationDataType,))
228
+ # assert (isinstance(data_type, AtpBlueprint))
229
+ # assert (isinstance(data_type, AtpBlueprintable))
230
+ # assert (isinstance(data_type, AtpClassifier))
231
+ assert (isinstance(data_type, AtpType))
232
+ assert (isinstance(data_type, AutosarDataType))
233
+ assert (isinstance(data_type, CollectableElement))
234
+ assert (isinstance(data_type, Identifiable))
235
+ assert (isinstance(data_type, MultilanguageReferrable))
236
+ assert (isinstance(data_type, PackageableElement))
237
+ assert (isinstance(data_type, Referrable))
238
+ assert (isinstance(data_type, ImplementationDataType))
239
+
240
+ assert (data_type.parent == ar_root)
241
+ assert (data_type.short_name == "ImplementationDataType")
242
+ assert (data_type.subElements == [])
243
+ assert (data_type.symbolProps is None)
244
+ assert (data_type.getTypeEmitter() is None)
246
245
 
247
246
  element = data_type.createImplementationDataTypeElement("ImplementationDataTypeElement")
248
- assert(isinstance(element, ImplementationDataTypeElement))
249
- assert(element.short_name == "ImplementationDataTypeElement")
247
+ assert (isinstance(element, ImplementationDataTypeElement))
248
+ assert (element.short_name == "ImplementationDataTypeElement")
250
249
 
251
- assert(len(data_type.getImplementationDataTypeElements()) == 1)
252
- assert(data_type.getImplementationDataTypeElements()[0] == element)
253
-
250
+ assert (len(data_type.getSubElements()) == 1)
251
+ assert (data_type.getSubElements()[0] == element)
@@ -49,7 +49,7 @@ from ..models.M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import ModeDec
49
49
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import ResourceConsumption
50
50
  from ..models.M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.StackUsage import RoughEstimateStackUsage, StackUsage
51
51
  from ..models.M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import SwcBswMapping, SwcBswRunnableMapping
52
- from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal
52
+ from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import CryptoServiceNeeds, DiagEventDebounceMonitorInternal, DltUserNeeds, ServiceNeeds
53
53
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCapabilityElement, DtcStatusChangeNotificationNeeds
54
54
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticCommunicationManagerNeeds, DiagnosticEventInfoNeeds
55
55
  from ..models.M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import DiagnosticEventNeeds, DiagnosticRoutineNeeds, DiagnosticValueNeeds
@@ -1577,10 +1577,13 @@ class ARXMLWriter(AbstractARXMLWriter):
1577
1577
  else:
1578
1578
  self.notImplemented("Unsupported Assigned Data <%s>" % type(data))
1579
1579
 
1580
+ def writeServiceNeeds(self, element: ET.Element, needs: ServiceNeeds):
1581
+ self.writeIdentifiable(element, needs)
1582
+
1580
1583
  def writeNvBlockNeeds(self, element: ET.Element, needs: NvBlockNeeds):
1581
1584
  child_element = ET.SubElement(element, "NV-BLOCK-NEEDS")
1582
1585
  self.logger.debug("write NvBlockNeeds %s" % needs.getShortName())
1583
- self.writeIdentifiable(child_element, needs)
1586
+ self.writeServiceNeeds(child_element, needs)
1584
1587
  self.setChildElementOptionalBooleanValue(child_element, "CALC-RAM-BLOCK-CRC", needs.getCalcRamBlockCrc())
1585
1588
  self.setChildElementOptionalBooleanValue(child_element, "CHECK-STATIC-BLOCK-ID", needs.getCheckStaticBlockId())
1586
1589
  self.setChildElementOptionalNumericalValue(child_element, "N-DATA-SETS", needs.getNDataSets())
@@ -1602,7 +1605,7 @@ class ARXMLWriter(AbstractARXMLWriter):
1602
1605
  self.setChildElementOptionalLiteral(child_element, "WRITING-PRIORITY", needs.getWritingPriority())
1603
1606
 
1604
1607
  def writeDiagnosticCapabilityElement(self, element: ET.Element, needs: DiagnosticCapabilityElement):
1605
- self.writeIdentifiable(element, needs)
1608
+ self.writeServiceNeeds(element, needs)
1606
1609
 
1607
1610
  def writeDiagnosticCommunicationManagerNeeds(self, element: ET.Element, needs: DiagnosticCommunicationManagerNeeds):
1608
1611
  child_element = ET.SubElement(element, "DIAGNOSTIC-COMMUNICATION-MANAGER-NEEDS")
@@ -1658,13 +1661,13 @@ class ARXMLWriter(AbstractARXMLWriter):
1658
1661
  def writeCryptoServiceNeeds(self, element: ET.Element, needs: CryptoServiceNeeds):
1659
1662
  # self.logger.debug("Write CryptoServiceNeeds %s" % needs.getShortName())
1660
1663
  child_element = ET.SubElement(element, "CRYPTO-SERVICE-NEEDS")
1661
- self.writeIdentifiable(child_element, needs)
1664
+ self.writeServiceNeeds(child_element, needs)
1662
1665
  self.setChildElementOptionalPositiveInteger(child_element, "MAXIMUM-KEY-LENGTH", needs.getMaximumKeyLength())
1663
1666
 
1664
1667
  def writeEcuStateMgrUserNeeds(self, element: ET.Element, needs: EcuStateMgrUserNeeds):
1665
1668
  # self.logger.debug("write EcuStateMgrUserNeeds %s" % needs.getShortName())
1666
1669
  child_element = ET.SubElement(element, "ECU-STATE-MGR-USER-NEEDS")
1667
- self.writeIdentifiable(child_element, needs)
1670
+ self.writeServiceNeeds(child_element, needs)
1668
1671
 
1669
1672
  def writeDtcStatusChangeNotificationNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
1670
1673
  # self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
@@ -1672,31 +1675,38 @@ class ARXMLWriter(AbstractARXMLWriter):
1672
1675
  self.writeDiagnosticCapabilityElement(child_element, needs)
1673
1676
  self.setChildElementOptionalLiteral(child_element, "DTC-FORMAT-TYPE", needs.getDtcFormatType())
1674
1677
 
1678
+ def writeDltUserNeeds(self, element: ET.Element, needs: DtcStatusChangeNotificationNeeds):
1679
+ # self.logger.debug("Write DtcStatusChangeNotificationNeeds %s" % needs.getShortName())
1680
+ child_element = ET.SubElement(element, "DLT-USER-NEEDS")
1681
+ self.writeServiceNeeds(child_element, needs)
1682
+
1675
1683
  def writeSwcServiceDependencyServiceNeeds(self, element: ET.Element, parent: SwcServiceDependency):
1676
- needs = parent.getServiceNeeds()
1677
- if len(needs) > 0:
1684
+ needs_list = parent.getServiceNeeds()
1685
+ if len(needs_list) > 0:
1678
1686
  child_element = ET.SubElement(element, "SERVICE-NEEDS")
1679
- for need in needs:
1680
- if isinstance(need, NvBlockNeeds):
1681
- self.writeNvBlockNeeds(child_element, need)
1682
- elif isinstance(need, DiagnosticCommunicationManagerNeeds):
1683
- self.writeDiagnosticCommunicationManagerNeeds(child_element, need)
1684
- elif isinstance(need, DiagnosticRoutineNeeds):
1685
- self.writeDiagnosticRoutineNeeds(child_element, need)
1686
- elif isinstance(need, DiagnosticValueNeeds):
1687
- self.writeDiagnosticValueNeeds(child_element, need)
1688
- elif isinstance(need, DiagnosticEventNeeds):
1689
- self.writeDiagnosticEventNeeds(child_element, need)
1690
- elif isinstance(need, DiagnosticEventInfoNeeds):
1691
- self.writeDiagnosticEventInfoNeeds(child_element, need)
1692
- elif isinstance(need, CryptoServiceNeeds):
1693
- self.writeCryptoServiceNeeds(child_element, need)
1694
- elif isinstance(need, EcuStateMgrUserNeeds):
1695
- self.writeEcuStateMgrUserNeeds(child_element, need)
1696
- elif isinstance(need, DtcStatusChangeNotificationNeeds):
1697
- self.writeDtcStatusChangeNotificationNeeds(child_element, need)
1687
+ for needs in needs_list:
1688
+ if isinstance(needs, NvBlockNeeds):
1689
+ self.writeNvBlockNeeds(child_element, needs)
1690
+ elif isinstance(needs, DiagnosticCommunicationManagerNeeds):
1691
+ self.writeDiagnosticCommunicationManagerNeeds(child_element, needs)
1692
+ elif isinstance(needs, DiagnosticRoutineNeeds):
1693
+ self.writeDiagnosticRoutineNeeds(child_element, needs)
1694
+ elif isinstance(needs, DiagnosticValueNeeds):
1695
+ self.writeDiagnosticValueNeeds(child_element, needs)
1696
+ elif isinstance(needs, DiagnosticEventNeeds):
1697
+ self.writeDiagnosticEventNeeds(child_element, needs)
1698
+ elif isinstance(needs, DiagnosticEventInfoNeeds):
1699
+ self.writeDiagnosticEventInfoNeeds(child_element, needs)
1700
+ elif isinstance(needs, CryptoServiceNeeds):
1701
+ self.writeCryptoServiceNeeds(child_element, needs)
1702
+ elif isinstance(needs, EcuStateMgrUserNeeds):
1703
+ self.writeEcuStateMgrUserNeeds(child_element, needs)
1704
+ elif isinstance(needs, DtcStatusChangeNotificationNeeds):
1705
+ self.writeDtcStatusChangeNotificationNeeds(child_element, needs)
1706
+ elif isinstance(needs, DltUserNeeds):
1707
+ self.writeDltUserNeeds(child_element, needs)
1698
1708
  else:
1699
- self.notImplemented("Unsupported service needs <%s>" % type(need))
1709
+ self.notImplemented("Unsupported service needs <%s>" % type(needs))
1700
1710
 
1701
1711
  def writeSwcServiceDependency(self, element: ET.Element, dependency: SwcServiceDependency):
1702
1712
  child_element = ET.SubElement(element, "SWC-SERVICE-DEPENDENCY")
@@ -2471,7 +2481,7 @@ class ARXMLWriter(AbstractARXMLWriter):
2471
2481
  self.writeBswImplementationVendorSpecificModuleDefRefs(child_element, impl)
2472
2482
 
2473
2483
  def writeImplementationDataTypeElements(self, element: ET.Element, parent: ImplementationDataType):
2474
- sub_elements = parent.getImplementationDataTypeElements()
2484
+ sub_elements = parent.getSubElements()
2475
2485
  if len(sub_elements) > 0:
2476
2486
  sub_elements_tag = ET.SubElement(element, "SUB-ELEMENTS")
2477
2487
  for type_element in sub_elements:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: armodel
3
- Version: 1.7.9
3
+ Version: 1.8.0
4
4
  Summary: the python arxml parser
5
5
  Home-page: http://github.com/melodypapa/py-armodel
6
6
  Author: melodypapa
@@ -588,3 +588,17 @@ Fix the attribute intervalType of **Limit** is empty issue.
588
588
  * AUTOSAR::setARRelease()
589
589
  5. Fix the conversion for float number in scientific notation.
590
590
 
591
+ **Version 1.8.0**
592
+
593
+ 1. To support the following AR Element:
594
+ * DLT-USER-NEEDS
595
+ 2. Improve the UUID check
596
+ 3. Improve the find method of class AbstractAUTOSAR to support the validation of dest
597
+ 4. Add the findXXX method of class AbstractAUTOSAR
598
+ * findAtomicSwComponentType
599
+ * findSystemSignal
600
+ * findSystemSignalGroup
601
+ * findPort
602
+ * findVariableDataPrototype
603
+ * findImplementationDataType
604
+