armodel 1.7.7__py3-none-any.whl → 1.7.9__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 (73) hide show
  1. armodel/cli/arxml_dump_cli.py +33 -22
  2. armodel/cli/arxml_format_cli.py +25 -13
  3. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +84 -28
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +410 -61
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +80 -9
  6. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +141 -35
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +10 -8
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +17 -6
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +38 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py +91 -18
  11. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/PortPrototypeBlueprint.py +73 -0
  12. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/BlueprintDedicated/__init__.py +0 -0
  13. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/Keyword.py +45 -0
  14. armodel/models/M2/AUTOSARTemplates/CommonStructure/StandardizationTemplate/__init__.py +0 -0
  15. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +45 -2
  16. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  17. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  18. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  19. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +243 -156
  20. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +73 -0
  21. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
  22. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +35 -14
  23. armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +151 -1
  24. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +66 -42
  25. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
  26. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  27. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +166 -50
  28. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SoftwareComponentDocumentation.py +80 -0
  29. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  30. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  31. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +11 -1
  32. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +16 -2
  33. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
  34. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  35. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
  36. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  37. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  38. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetTopology.py +18 -6
  39. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  40. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  41. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  42. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
  43. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  44. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
  45. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  46. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  47. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
  48. armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +10 -1
  49. armodel/models/M2/MSR/Documentation/BlockElements/Figure.py +163 -0
  50. armodel/models/M2/MSR/Documentation/BlockElements/__init__.py +0 -0
  51. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +5 -3
  52. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +22 -1
  53. armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +94 -9
  54. armodel/models/__init__.py +7 -1
  55. armodel/parser/abstract_arxml_parser.py +39 -32
  56. armodel/parser/arxml_parser.py +1439 -551
  57. armodel/parser/file_parser.py +5 -3
  58. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  59. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  60. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
  61. armodel/tests/test_armodel/parser/test_sw_components.py +301 -28
  62. armodel/tests/test_armodel/parser/test_system.py +2 -8
  63. armodel/transformer/__init__.py +0 -0
  64. armodel/transformer/abstract.py +6 -0
  65. armodel/transformer/admin_data.py +31 -0
  66. armodel/writer/abstract_arxml_writer.py +22 -29
  67. armodel/writer/arxml_writer.py +1500 -526
  68. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/METADATA +61 -1
  69. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/RECORD +73 -57
  70. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/LICENSE +0 -0
  71. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/WHEEL +0 -0
  72. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/entry_points.txt +0 -0
  73. {armodel-1.7.7.dist-info → armodel-1.7.9.dist-info}/top_level.txt +0 -0
@@ -1 +1,74 @@
1
+ from typing import List
1
2
 
3
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Identifier, NameToken, RefType
4
+ from .....M2.AUTOSARTemplates.GenericStructure.AbstractStructure import AnyInstanceRef
5
+ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
6
+
7
+
8
+ class Collection(ARElement):
9
+ def __init__(self, parent, short_name):
10
+ super().__init__(parent, short_name)
11
+
12
+ self.autoCollect = None # type: AutoCollectEnum
13
+ self.collectedInstances = [] # type: List[AnyInstanceRef]
14
+ self.collectionSemantics = None # type: NameToken
15
+ self.elementRefs = [] # type: List[RefType]
16
+ self.elementRole = None # type: Identifier
17
+ self.sourceElementRefs = [] # type: List[RefType]
18
+ self.sourceInstances = [] # type: List[AnyInstanceRef]
19
+
20
+ def getAutoCollect(self):
21
+ return self.autoCollect
22
+
23
+ def setAutoCollect(self, value):
24
+ if value is not None:
25
+ self.autoCollect = value
26
+ return self
27
+
28
+ def getCollectedInstances(self):
29
+ return self.collectedInstances
30
+
31
+ def setCollectedInstances(self, value):
32
+ if value is not None:
33
+ self.collectedInstances = value
34
+ return self
35
+
36
+ def getCollectionSemantics(self):
37
+ return self.collectionSemantics
38
+
39
+ def setCollectionSemantics(self, value):
40
+ if value is not None:
41
+ self.collectionSemantics = value
42
+ return self
43
+
44
+ def getElementRefs(self):
45
+ return self.elementRefs
46
+
47
+ def addElementRef(self, value):
48
+ if value is not None:
49
+ self.elementRefs.append(value)
50
+ return self
51
+
52
+ def getElementRole(self):
53
+ return self.elementRole
54
+
55
+ def setElementRole(self, value):
56
+ if value is not None:
57
+ self.elementRole = value
58
+ return self
59
+
60
+ def getSourceElementRefs(self):
61
+ return self.sourceElementRefs
62
+
63
+ def addSourceElementRef(self, value):
64
+ if value is not None:
65
+ self.sourceElementRefs.append(value)
66
+ return self
67
+
68
+ def getSourceInstances(self):
69
+ return self.sourceInstances
70
+
71
+ def setSourceInstances(self, value):
72
+ if value is not None:
73
+ self.sourceInstances = value
74
+ return self
@@ -8,10 +8,11 @@ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveT
8
8
  from abc import ABCMeta
9
9
  from typing import List
10
10
 
11
- class Referrable(ARObject, metaclass = ABCMeta):
11
+
12
+ class Referrable(ARObject, metaclass=ABCMeta):
12
13
  def __init__(self, parent: ARObject, short_name: str):
13
14
 
14
- if type(self) == Referrable:
15
+ if type(self) is Referrable:
15
16
  raise NotImplementedError("Referrable is an abstract class.")
16
17
 
17
18
  ARObject.__init__(self)
@@ -40,14 +41,15 @@ class Referrable(ARObject, metaclass = ABCMeta):
40
41
  def getFullName(self) -> str:
41
42
  return self.full_name
42
43
 
43
- class MultilanguageReferrable(Referrable, metaclass = ABCMeta):
44
+
45
+ class MultilanguageReferrable(Referrable, metaclass=ABCMeta):
44
46
  def __init__(self, parent: ARObject, short_name: str):
45
- if type(self) == MultilanguageReferrable:
47
+ if type(self) is MultilanguageReferrable:
46
48
  raise NotImplementedError("MultilanguageReferrable is an abstract class.")
47
49
 
48
50
  super().__init__(parent, short_name)
49
51
 
50
- #self._parent = parent
52
+ # self._parent = parent
51
53
  self.longName = None # type: MultilanguageLongName
52
54
 
53
55
  def getLongName(self) -> MultilanguageLongName:
@@ -58,15 +60,15 @@ class MultilanguageReferrable(Referrable, metaclass = ABCMeta):
58
60
  return self
59
61
 
60
62
 
61
- class CollectableElement(ARObject, metaclass = ABCMeta):
63
+ class CollectableElement(ARObject, metaclass=ABCMeta):
62
64
  def __init__(self):
63
- if type(self) == CollectableElement:
65
+ if type(self) is CollectableElement:
64
66
  raise NotImplementedError("CollectableElement is an abstract class.")
65
67
 
66
68
  self.elements = {} # type: dict[str, Referrable]
67
69
 
68
70
  def getTotalElement(self) -> int:
69
- #return len(list(filter(lambda a: not isinstance(a, ARPackage) , self.elements.values())))
71
+ # return len(list(filter(lambda a: not isinstance(a, ARPackage) , self.elements.values())))
70
72
  return len(self.elements.values())
71
73
 
72
74
  def removeElement(self, key):
@@ -78,7 +80,9 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
78
80
  return self.elements.values()
79
81
 
80
82
  def addElement(self, element: Referrable):
81
- self.elements[element.getShortName()] = element
83
+ short_name = element.getShortName()
84
+ if not self.IsElementExists(short_name):
85
+ self.elements[short_name] = element
82
86
 
83
87
  def getElement(self, short_name: str) -> Referrable:
84
88
  if (short_name not in self.elements):
@@ -88,9 +92,10 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
88
92
  def IsElementExists(self, short_name: str) -> bool:
89
93
  return short_name in self.elements
90
94
 
91
- class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCMeta):
95
+
96
+ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass=ABCMeta):
92
97
  def __init__(self, parent: ARObject, short_name: str):
93
- if type(self) == Identifiable:
98
+ if type(self) is Identifiable:
94
99
  raise NotImplementedError("Identifiable is an abstract class.")
95
100
 
96
101
  MultilanguageReferrable.__init__(self, parent, short_name)
@@ -106,8 +111,12 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
106
111
  return self.adminData
107
112
 
108
113
  def setAdminData(self, value):
109
- self.adminData = value
114
+ if value is not None:
115
+ self.adminData = value
110
116
  return self
117
+
118
+ def removeAdminData(self):
119
+ self.adminData = None
111
120
 
112
121
  def getDesc(self):
113
122
  return self.desc
@@ -133,7 +142,6 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
133
142
  self.introduction = value
134
143
  return self
135
144
 
136
-
137
145
  def addAnnotation(self, annotation: Annotation):
138
146
  self.annotations.append(annotation)
139
147
  return self
@@ -144,44 +152,64 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCM
144
152
 
145
153
  class PackageableElement(Identifiable, metaclass=ABCMeta):
146
154
  def __init__(self, parent: ARObject, short_name: str):
147
- if type(self) == PackageableElement:
155
+ if type(self) is PackageableElement:
148
156
  raise NotImplementedError("PackageableElement is an abstract class.")
149
157
  super().__init__(parent, short_name)
150
158
 
151
159
 
152
160
  class ARElement(PackageableElement, metaclass=ABCMeta):
153
161
  def __init__(self, parent: ARObject, short_name: str):
154
- if type(self) == ARElement:
162
+ if type(self) is ARElement:
155
163
  raise NotImplementedError("ARElement is an abstract class.")
156
164
  super().__init__(parent, short_name)
157
165
 
158
166
 
159
167
  class Describable(ARObject, metaclass=ABCMeta):
160
168
  def __init__(self):
161
- if type(self) == Describable:
169
+ if type(self) is Describable:
162
170
  raise NotImplementedError("Describable is an abstract class.")
163
171
 
164
172
  super().__init__()
165
173
 
166
- self._desc = None
167
- self._category = None
168
- self._adminData = None
169
- self._introduction = None
174
+ self.desc = None
175
+ self.category = None
176
+ self.adminData = None
177
+ self.introduction = None
170
178
 
171
- @property
172
- def desc(self):
173
- return self._desc
179
+ def getDesc(self):
180
+ return self.desc
174
181
 
175
- @desc.setter
176
- def desc(self, value):
177
- self._desc = value
182
+ def setDesc(self, value):
183
+ if value is not None:
184
+ self.desc = value
185
+ return self
178
186
 
179
- @property
180
- def category(self):
181
- return self._category
187
+ def getCategory(self):
188
+ return self.category
189
+
190
+ def setCategory(self, value):
191
+ if value is not None:
192
+ self.category = value
193
+ return self
182
194
 
183
- @category.setter
184
- def category(self, value: ARLiteral):
185
- self._category = value
195
+ def getAdminData(self):
196
+ return self.adminData
186
197
 
198
+ def setAdminData(self, value):
199
+ if value is not None:
200
+ self.adminData = value
201
+ return self
202
+
203
+ def removeAdminData(self):
204
+ self.adminData = None
187
205
 
206
+ def getIntroduction(self):
207
+ return self.introduction
208
+
209
+ def setIntroduction(self, value):
210
+ if value is not None:
211
+ self.introduction = value
212
+ return self
213
+
214
+
215
+
@@ -3,9 +3,10 @@ import re
3
3
  from typing import List
4
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
 
6
- class ARType(metaclass = ABCMeta):
6
+
7
+ class ARType(metaclass=ABCMeta):
7
8
  def __init__(self) -> None:
8
- self.timestamp = None # type: str
9
+ self.timestamp = None # type: str
9
10
  self.uuid = None # type: str
10
11
  self._value = None
11
12
 
@@ -28,11 +29,12 @@ class ARType(metaclass = ABCMeta):
28
29
  def getText(self) -> str:
29
30
  return str(self)
30
31
 
32
+
31
33
  class ARNumerical(ARType):
32
34
  def __init__(self) -> None:
33
35
  super().__init__()
34
36
 
35
- self._text = None # type: str
37
+ self._text = None # type: str
36
38
 
37
39
  def _convertStringToNumberValue(self, value: str) -> int:
38
40
  try:
@@ -47,11 +49,11 @@ class ARNumerical(ARType):
47
49
  m = re.match(r'0b([\d]+)', value, re.I)
48
50
  if m:
49
51
  return int(m.group(1), 2)
50
- m = re.match(r"-?\d+\.\d+", value)
52
+ m = re.match(r"^[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?$", value)
51
53
  if m:
52
54
  return float(value)
53
55
  return int(value)
54
- except:
56
+ except: # noqa E722
55
57
  raise ValueError("Invalid Numerical Type <%s>" % value)
56
58
 
57
59
  @property
@@ -93,7 +95,6 @@ class ARFloat(ARNumerical):
93
95
  self._value = val * 1.0
94
96
  elif isinstance(val, str):
95
97
  self._text = val
96
- #self._value = float(val)
97
98
  self._value = self._convertStringToNumberValue(val)
98
99
  else:
99
100
  raise ValueError("Unsupported Type <%s>", type(val))
@@ -103,7 +104,8 @@ class ARFloat(ARNumerical):
103
104
  return self._text
104
105
  else:
105
106
  return str(self._value)
106
-
107
+
108
+
107
109
  class Float(ARFloat):
108
110
  '''
109
111
  An instance of Float is an element from the set of real numbers.
@@ -113,7 +115,8 @@ class Float(ARFloat):
113
115
  '''
114
116
  def __init__(self):
115
117
  super().__init__()
116
-
118
+
119
+
117
120
  class TimeValue(ARFloat):
118
121
  '''
119
122
  This primitive type is taken for expressing time values. The numerical value is supposed to be interpreted
@@ -150,6 +153,7 @@ class ARLiteral(ARType):
150
153
  def upper(self) -> str:
151
154
  return self.value.upper()
152
155
 
156
+
153
157
  class AREnum(ARLiteral):
154
158
  def __init__(self, enum_values: List[str]):
155
159
  super().__init__()
@@ -168,14 +172,17 @@ class AREnum(ARLiteral):
168
172
  return True
169
173
  return False
170
174
 
175
+
171
176
  class String(ARLiteral):
172
177
  def __init__(self):
173
178
  super().__init__()
174
179
 
180
+
175
181
  class ReferrableSubtypesEnum(ARLiteral):
176
182
  def __init__(self):
177
183
  super().__init__()
178
184
 
185
+
179
186
  class ARPositiveInteger(ARNumerical):
180
187
  def __init__(self) -> None:
181
188
  super().__init__()
@@ -243,6 +250,7 @@ class ARBoolean(ARType):
243
250
  else:
244
251
  return "false"
245
252
 
253
+
246
254
  class NameToken(ARLiteral):
247
255
  '''
248
256
  This is an identifier as used in xml, e.g. xml-names. Typical usages are, for example, the names of type
@@ -259,6 +267,7 @@ class NameToken(ARLiteral):
259
267
  def __init__(self):
260
268
  super().__init__()
261
269
 
270
+
262
271
  class PositiveInteger(ARPositiveInteger):
263
272
  r'''\n
264
273
  This is a positive integer which can be denoted in decimal, binary, octal and hexadecimal. The value is
@@ -273,6 +282,7 @@ class PositiveInteger(ARPositiveInteger):
273
282
  def __init__(self):
274
283
  super().__init__()
275
284
 
285
+
276
286
  class PositiveUnlimitedInteger(ARPositiveInteger):
277
287
  r'''
278
288
  This is a positive unlimited integer which can be denoted in decimal, binary, octal and hexadecimal.
@@ -281,7 +291,8 @@ class PositiveUnlimitedInteger(ARPositiveInteger):
281
291
  * xml.xsd.customType=POSITIVE-UNLIMITED-INTEGER
282
292
  * xml.xsd.pattern=0|[\+]?[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]+
283
293
  * xml.xsd.type=string
284
- '''
294
+ '''
295
+
285
296
 
286
297
  class Integer(ARNumerical):
287
298
  r'''
@@ -298,6 +309,7 @@ class Integer(ARNumerical):
298
309
  def __init__(self):
299
310
  super().__init__()
300
311
 
312
+
301
313
  class UnlimitedInteger(Integer):
302
314
  r'''
303
315
  An instance of UnlimitedInteger is an element in the set of integer numbers ( ..., -2, -1, 0, 1, 2, ...).
@@ -313,6 +325,7 @@ class UnlimitedInteger(Integer):
313
325
  def __init__(self):
314
326
  super().__init__()
315
327
 
328
+
316
329
  class Boolean(ARBoolean):
317
330
  '''
318
331
  A Boolean value denotes a logical condition that is either 'true' or 'false'. It can be one of "0", "1", "true",
@@ -326,6 +339,7 @@ class Boolean(ARBoolean):
326
339
  def __init__(self):
327
340
  super().__init__()
328
341
 
342
+
329
343
  class Identifier(ARLiteral):
330
344
  '''
331
345
  An Identifier is a string with a number of constraints on its appearance, satisfying the requirements typical
@@ -342,6 +356,7 @@ class Identifier(ARLiteral):
342
356
  def __init__(self):
343
357
  super().__init__()
344
358
 
359
+
345
360
  class CIdentifier(ARLiteral):
346
361
  '''
347
362
  This datatype represents a string, that follows the rules of C-identifiers.
@@ -371,6 +386,7 @@ class CIdentifier(ARLiteral):
371
386
  self.namePattern = value
372
387
  return self
373
388
 
389
+
374
390
  class RevisionLabelString(ARLiteral):
375
391
  '''
376
392
  This primitive represents an internal AUTOSAR revision label which identifies an engineering object. It
@@ -406,6 +422,7 @@ class Limit(ARObject):
406
422
  self.value = value
407
423
  return self
408
424
 
425
+
409
426
  class RefType(ARObject):
410
427
  def __init__(self):
411
428
  self.base = None # type: str
@@ -446,13 +463,14 @@ class TRefType(RefType):
446
463
  def __init__(self):
447
464
  super().__init__()
448
465
 
466
+
449
467
  class DiagRequirementIdString(ARLiteral):
450
468
  '''
451
469
  This string denotes an Identifier for a requirement.
452
470
 
453
471
  Tags:
454
472
  * xml.xsd.customType=DIAG-REQUIREMENT-ID-STRING
455
- * xml.xsd.pattern=[0-9a-zA-Z_\-]+
473
+ * xml.xsd.pattern=[0-9a-zA-Z_\-]+ # noqa W605
456
474
  * xml.xsd.type=string
457
475
  '''
458
476
  def __init__(self):
@@ -460,7 +478,7 @@ class DiagRequirementIdString(ARLiteral):
460
478
 
461
479
 
462
480
  class ArgumentDirectionEnum(AREnum):
463
- IN = "in"
481
+ IN = "in"
464
482
  INOUT = "inout"
465
483
  OUT = "out"
466
484
 
@@ -468,7 +486,7 @@ class ArgumentDirectionEnum(AREnum):
468
486
  super().__init__((
469
487
  ArgumentDirectionEnum.IN,
470
488
  ArgumentDirectionEnum.INOUT,
471
- ArgumentDirectionEnum.OUT
489
+ ArgumentDirectionEnum.OUT
472
490
  ))
473
491
 
474
492
 
@@ -478,12 +496,13 @@ class Ip4AddressString(ARLiteral):
478
496
 
479
497
  Tags
480
498
  * xml.xsd.customType=IP4-ADDRESS-STRING
481
- * xml.xsd.pattern=(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|ANY
499
+ * xml.xsd.pattern=(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|ANY # noqa E501
482
500
  * xml.xsd.type=string
483
501
  '''
484
502
  def __init__(self):
485
503
  super().__init__()
486
504
 
505
+
487
506
  class Ip6AddressString(ARLiteral):
488
507
  '''
489
508
  This is used to specify an IP6 address. Notation: FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
@@ -498,6 +517,7 @@ class Ip6AddressString(ARLiteral):
498
517
  def __init__(self):
499
518
  super().__init__()
500
519
 
520
+
501
521
  class MacAddressString(ARLiteral):
502
522
  '''
503
523
  This primitive specifies a Mac Address. Notation: FF:FF:FF:FF:FF:FF
@@ -511,6 +531,7 @@ class MacAddressString(ARLiteral):
511
531
  def __init__(self):
512
532
  super().__init__()
513
533
 
534
+
514
535
  class CategoryString(ARLiteral):
515
536
  '''
516
537
  This represents the pattern applicable to categories.
@@ -523,4 +544,4 @@ class CategoryString(ARLiteral):
523
544
  * xml.xsd.type=string
524
545
  '''
525
546
  def __init__(self):
526
- super().__init__()
547
+ super().__init__()
@@ -1,5 +1,155 @@
1
+ from typing import List
2
+ from xmlrpc.client import DateTime
3
+
4
+ from ....M2.MSR.Documentation.TextModel.BlockElements import DocumentationBlock
5
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
6
+ from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType, RevisionLabelString
1
7
  from ....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import ARElement
2
8
 
9
+
10
+ class LifeCyclePeriod(ARObject):
11
+ '''
12
+ This meta class represents the ability to specify a point of time within a specified period, e.g. the starting
13
+ or end point, in which a specific life cycle state is valid/applies to.
14
+ '''
15
+ def __init__(self):
16
+ super().__init__()
17
+
18
+ self.arReleaseVersion = None # type: RevisionLabelString
19
+ self.date = None # type: DateTime
20
+ self.productRelease = None # type: RevisionLabelString
21
+
22
+ def getArReleaseVersion(self):
23
+ return self.arReleaseVersion
24
+
25
+ def setArReleaseVersion(self, value):
26
+ if value is not None:
27
+ self.arReleaseVersion = value
28
+ return self
29
+
30
+ def getDate(self):
31
+ return self.date
32
+
33
+ def setDate(self, value):
34
+ if value is not None:
35
+ self.date = value
36
+ return self
37
+
38
+ def getProductRelease(self):
39
+ return self.productRelease
40
+
41
+ def setProductRelease(self, value):
42
+ if value is not None:
43
+ self.productRelease = value
44
+ return self
45
+
46
+
47
+ class LifeCycleInfo(ARObject):
48
+ def __init__(self):
49
+ super().__init__()
50
+
51
+ self.lcObjectRef = None # type: RefType
52
+ self.lcStateRef = None # type: RefType
53
+ self.periodBegin = None # type: LifeCyclePeriod
54
+ self.periodEnd = None # type: LifeCyclePeriod
55
+ self.remark = None # type: DocumentationBlock
56
+ self.useInsteadRefs = [] # type: List[RefType]
57
+
58
+ def getLcObjectRef(self):
59
+ return self.lcObjectRef
60
+
61
+ def setLcObjectRef(self, value):
62
+ if value is not None:
63
+ self.lcObjectRef = value
64
+ return self
65
+
66
+ def getLcStateRef(self):
67
+ return self.lcStateRef
68
+
69
+ def setLcStateRef(self, value):
70
+ if value is not None:
71
+ self.lcStateRef = value
72
+ return self
73
+
74
+ def getPeriodBegin(self):
75
+ return self.periodBegin
76
+
77
+ def setPeriodBegin(self, value):
78
+ if value is not None:
79
+ self.periodBegin = value
80
+ return self
81
+
82
+ def getPeriodEnd(self):
83
+ return self.periodEnd
84
+
85
+ def setPeriodEnd(self, value):
86
+ if value is not None:
87
+ self.periodEnd = value
88
+ return self
89
+
90
+ def getRemark(self):
91
+ return self.remark
92
+
93
+ def setRemark(self, value):
94
+ if value is not None:
95
+ self.remark = value
96
+ return self
97
+
98
+ def getUseInsteadRefs(self):
99
+ return self.useInsteadRefs
100
+
101
+ def addUseInsteadRef(self, value):
102
+ if value is not None:
103
+ self.useInsteadRefs.append(value)
104
+ return self
105
+
106
+
3
107
  class LifeCycleInfoSet(ARElement):
4
108
  def __init__(self, parent, short_name):
5
- super().__init__(parent, short_name)
109
+ super().__init__(parent, short_name)
110
+
111
+ self.defaultLcStateRef = None # type: RefType
112
+ self.defaultPeriodBegin = None # type: LifeCyclePeriod
113
+ self.defaultPeriodEnd = None # type: LifeCyclePeriod
114
+ self.lifeCycleInfos = [] # type: List[LifeCycleInfo]
115
+ self.usedLifeCycleStateDefinitionGroupRef = None # type: RefType
116
+
117
+ def getDefaultLcStateRef(self):
118
+ return self.defaultLcStateRef
119
+
120
+ def setDefaultLcStateRef(self, value):
121
+ if value is not None:
122
+ self.defaultLcStateRef = value
123
+ return self
124
+
125
+ def getDefaultPeriodBegin(self):
126
+ return self.defaultPeriodBegin
127
+
128
+ def setDefaultPeriodBegin(self, value):
129
+ if value is not None:
130
+ self.defaultPeriodBegin = value
131
+ return self
132
+
133
+ def getDefaultPeriodEnd(self):
134
+ return self.defaultPeriodEnd
135
+
136
+ def setDefaultPeriodEnd(self, value):
137
+ if value is not None:
138
+ self.defaultPeriodEnd = value
139
+ return self
140
+
141
+ def getLifeCycleInfos(self):
142
+ return self.lifeCycleInfos
143
+
144
+ def addLifeCycleInfo(self, value):
145
+ if value is not None:
146
+ self.lifeCycleInfos.append(value)
147
+ return self
148
+
149
+ def getUsedLifeCycleStateDefinitionGroupRef(self):
150
+ return self.usedLifeCycleStateDefinitionGroupRef
151
+
152
+ def setUsedLifeCycleStateDefinitionGroupRef(self, value):
153
+ if value is not None:
154
+ self.usedLifeCycleStateDefinitionGroupRef = value
155
+ return self