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
@@ -8,12 +8,17 @@ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiab
8
8
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
9
9
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import TRefType
10
10
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean, RefType
11
- from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ServerComSpec
11
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec
12
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec
13
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec
14
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.Communication import RPortComSpec, ServerComSpec
15
+
12
16
 
13
17
  class SymbolProps(ImplementationProps):
14
18
  def __init__(self, parent: ARObject, short_name: str):
15
19
  super().__init__(parent, short_name)
16
20
 
21
+
17
22
  class PortPrototype(Identifiable):
18
23
  def __init__(self, parent: ARObject, short_name: str):
19
24
  super().__init__(parent, short_name)
@@ -83,6 +88,7 @@ class PortPrototype(Identifiable):
83
88
  self.triggerPortAnnotations.append(value)
84
89
  return self
85
90
 
91
+
86
92
  class AbstractProvidedPortPrototype(PortPrototype):
87
93
  def __init__(self, parent: ARObject, short_name: str):
88
94
  super().__init__(parent, short_name)
@@ -91,7 +97,7 @@ class AbstractProvidedPortPrototype(PortPrototype):
91
97
 
92
98
  def _validateRPortComSpec(self, com_spec: PPortComSpec):
93
99
  if isinstance(com_spec, NonqueuedSenderComSpec):
94
- if com_spec.dataElementRef == None:
100
+ if com_spec.dataElementRef is None:
95
101
  raise ValueError(
96
102
  "operation of NonqueuedSenderComSpec is invalid")
97
103
  if com_spec.dataElementRef.dest != "VARIABLE-DATA-PROTOTYPE":
@@ -170,6 +176,7 @@ class PPortPrototype(AbstractProvidedPortPrototype):
170
176
  self.providedInterfaceTRef = value
171
177
  return self
172
178
 
179
+
173
180
  class RPortPrototype(AbstractRequiredPortPrototype):
174
181
  def __init__(self, parent: ARObject, short_name: str):
175
182
  super().__init__(parent, short_name)
@@ -191,6 +198,7 @@ class RPortPrototype(AbstractRequiredPortPrototype):
191
198
  self.requiredInterfaceTRef = value
192
199
  return self
193
200
 
201
+
194
202
  class PRPortPrototype(PortPrototype):
195
203
  def __init__(self, parent, short_name):
196
204
  super().__init__(parent, short_name)
@@ -220,6 +228,7 @@ class PRPortPrototype(PortPrototype):
220
228
  self.providedRequiredInterface = value
221
229
  return self
222
230
 
231
+
223
232
  class PortGroup(Identifiable):
224
233
  def __init__(self, parent: ARObject, short_name: str):
225
234
  super().__init__(parent, short_name)
@@ -239,51 +248,58 @@ class PortGroup(Identifiable):
239
248
  def getOuterPortRefs(self) -> List[RefType]:
240
249
  return self._outer_port_ref
241
250
 
242
- class SwComponentType(ARElement, metaclass = ABCMeta):
251
+
252
+ class SwComponentType(ARElement, metaclass=ABCMeta):
243
253
  def __init__(self, parent: ARObject, short_name: str):
244
254
  super().__init__(parent, short_name)
245
255
 
256
+ self.ports = [] # type: List[PortPrototype]
257
+ self.portGroups = [] # type: List[PortGroup]
258
+
259
+ def getPorts(self):
260
+ return self.ports
261
+
246
262
  def createPPortPrototype(self, short_name: str) -> PPortPrototype:
247
- if (short_name not in self.elements):
248
- prototype = PPortPrototype(self, short_name)
249
- self.addElement(prototype)
250
- return self.getElement(short_name)
263
+ prototype = PPortPrototype(self, short_name)
264
+ self.addElement(prototype)
265
+ self.ports.append(prototype)
266
+ return prototype
251
267
 
252
268
  def createRPortPrototype(self, short_name) -> RPortPrototype:
253
- if (short_name not in self.elements):
254
- prototype = RPortPrototype(self, short_name)
255
- self.addElement(prototype)
256
- return self.getElement(short_name)
269
+ prototype = RPortPrototype(self, short_name)
270
+ self.addElement(prototype)
271
+ self.ports.append(prototype)
272
+ return prototype
257
273
 
258
274
  def createPRPortPrototype(self, short_name) -> PRPortPrototype:
259
- if (short_name not in self.elements):
260
- prototype = PRPortPrototype(self, short_name)
261
- self.addElement(prototype)
262
- return self.getElement(short_name)
275
+ prototype = PRPortPrototype(self, short_name)
276
+ self.addElement(prototype)
277
+ self.ports.append(prototype)
278
+ return prototype
263
279
 
264
- def createPortGroup(self, short_name) -> PortGroup:
265
- port_group = PortGroup(self, short_name)
266
- if (short_name not in self.elements):
267
- self.elements[short_name] = port_group
268
- return self.elements[short_name]
269
-
270
280
  def getPPortPrototypes(self) -> List[PPortPrototype]:
271
- return list(sorted(filter(lambda c: isinstance(c, PPortPrototype), self.elements.values()), key= lambda o: o.short_name))
281
+ return list(sorted(filter(lambda c: isinstance(c, PPortPrototype), self.ports), key=lambda o: o.short_name))
272
282
 
273
283
  def getRPortPrototypes(self) -> List[RPortPrototype]:
274
- return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.elements.values()), key= lambda o: o.short_name))
284
+ return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.ports), key=lambda o: o.short_name))
275
285
 
276
286
  def getPRPortPrototypes(self) -> List[PRPortPrototype]:
277
- return list(sorted(filter(lambda c: isinstance(c, PRPortPrototype), self.elements.values()), key= lambda o: o.short_name))
287
+ return list(sorted(filter(lambda c: isinstance(c, PRPortPrototype), self.ports), key=lambda o: o.short_name))
278
288
 
279
289
  def getPortPrototypes(self) -> List[PortPrototype]:
280
- return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.elements.values()), key= lambda o: o.short_name))
281
-
290
+ return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.ports), key=lambda o: o.short_name))
291
+
282
292
  def getPortGroups(self) -> List[PortGroup]:
283
- return list(sorted(filter(lambda c: isinstance(c, PortGroup), self.elements.values()), key= lambda o: o.short_name))
293
+ return self.portGroups
284
294
 
295
+ def createPortGroup(self, short_name) -> PortGroup:
296
+ port_group = PortGroup(self, short_name)
297
+ self.addElement(port_group)
298
+ self.portGroups.append(port_group)
299
+ return port_group
300
+
285
301
 
286
- class AtomicSwComponentType(SwComponentType, metaclass = ABCMeta):
302
+ class AtomicSwComponentType(SwComponentType, metaclass=ABCMeta):
287
303
  def __init__(self, parent: ARObject, short_name: str):
288
304
  super().__init__(parent, short_name)
289
305
 
@@ -316,8 +332,9 @@ class AtomicSwComponentType(SwComponentType, metaclass = ABCMeta):
316
332
  return next(filter(lambda e: isinstance(e, SwcInternalBehavior), self.elements.values()))
317
333
  '''
318
334
 
335
+
319
336
  class EcuAbstractionSwComponentType(AtomicSwComponentType):
320
- def __init__(self, parent:ARObject, short_name: str):
337
+ def __init__(self, parent: ARObject, short_name: str):
321
338
  super().__init__(parent, short_name)
322
339
 
323
340
  self.hardwareElementRefs = [] # List[RefType]
@@ -329,7 +346,8 @@ class EcuAbstractionSwComponentType(AtomicSwComponentType):
329
346
  if value is not None:
330
347
  self.hardwareElementRefs.append(value)
331
348
  return self
332
-
349
+
350
+
333
351
  class ApplicationSwComponentType(AtomicSwComponentType):
334
352
  def __init__(self, parent: ARObject, short_name: str):
335
353
  super().__init__(parent, short_name)
@@ -348,7 +366,8 @@ class ComplexDeviceDriverSwComponentType(AtomicSwComponentType):
348
366
  if value is not None:
349
367
  self.hardwareElementRefs.append(value)
350
368
  return self
351
-
369
+
370
+
352
371
  class NvBlockSwComponentType(AtomicSwComponentType):
353
372
  def __init__(self, parent: ARObject, short_name: str):
354
373
  super().__init__(parent, short_name)
@@ -371,7 +390,8 @@ class NvBlockSwComponentType(AtomicSwComponentType):
371
390
  if value is not None:
372
391
  self.nvBlockDescriptors.append(value)
373
392
  return self
374
-
393
+
394
+
375
395
  class SensorActuatorSwComponentType(AtomicSwComponentType):
376
396
  def __init__(self, parent: ARObject, short_name: str):
377
397
  super().__init__(parent, short_name)
@@ -391,6 +411,7 @@ class CompositionSwComponentType(SwComponentType):
391
411
  def __init__(self, parent: ARObject, short_name: str):
392
412
  super().__init__(parent, short_name)
393
413
 
414
+ self.components = [] # type: List[SwComponentPrototype]
394
415
  self.constantValueMappingRefs = [] # type: List[RefType]
395
416
  self.dataTypeMappingRefs = [] # type: List[RefType]
396
417
  self.instantiationRTEEventProps = [] # type: List[InstantiationRTEEventProps]
@@ -416,26 +437,29 @@ class CompositionSwComponentType(SwComponentType):
416
437
  return self.elements[short_name]
417
438
 
418
439
  def getAssemblySwConnectors(self) -> List[AssemblySwConnector]:
419
- return list(sorted(filter(lambda e: isinstance(e, AssemblySwConnector), self.elements.values()), key = lambda c: c.short_name))
440
+ return list(sorted(filter(lambda e: isinstance(e, AssemblySwConnector), self.elements.values()), key=lambda c: c.short_name))
420
441
 
421
442
  def getDelegationSwConnectors(self) -> List[DelegationSwConnector]:
422
- return list(sorted(filter(lambda e: isinstance(e, DelegationSwConnector), self.elements.values()), key = lambda c: c.short_name))
443
+ return list(sorted(filter(lambda e: isinstance(e, DelegationSwConnector), self.elements.values()), key=lambda c: c.short_name))
444
+
445
+ # def getSwConnectors(self) -> List[SwConnector]:
446
+ # return list(sorted(filter(lambda e: isinstance(e, SwConnector), self.elements.values()), key=lambda c: c.short_name))
423
447
 
424
448
  def getSwConnectors(self) -> List[SwConnector]:
425
- return list(sorted(filter(lambda e: isinstance(e, SwConnector), self.elements.values()), key = lambda c: c.short_name))
449
+ return list(filter(lambda e: isinstance(e, SwConnector), self.elements.values()))
426
450
 
427
451
  def createSwComponentPrototype(self, short_name: str) -> SwComponentPrototype:
428
- if (short_name not in self.elements):
429
- connector = SwComponentPrototype(self, short_name)
430
- self.elements[short_name] = connector
431
- return self.elements[short_name]
452
+ if (not self.IsElementExists(short_name)):
453
+ prototype = SwComponentPrototype(self, short_name)
454
+ self.addElement(prototype)
455
+ self.components.append(prototype)
456
+ return self.getElement(short_name)
432
457
 
433
- def getSwComponentPrototypes(self) -> List[SwComponentPrototype]:
434
- return list(filter(lambda e: isinstance(e, SwComponentPrototype), self.elements.values()))
458
+ def getComponents(self) -> List[SwComponentPrototype]:
459
+ return self.components
435
460
 
436
461
  def addDataTypeMapping(self, data_type_mapping_ref: RefType):
437
462
  self.dataTypeMappingRefs.append(data_type_mapping_ref)
438
463
 
439
464
  def getDataTypeMappings(self) -> List[RefType]:
440
465
  return self.dataTypeMappingRefs
441
-
@@ -4,6 +4,7 @@ from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveT
4
4
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
5
5
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import Identifiable
6
6
 
7
+
7
8
  class SwComponentPrototype(Identifiable):
8
9
  def __init__(self, parent: ARObject, short_name: str):
9
10
  super().__init__(parent, short_name)
@@ -4,6 +4,7 @@ from ..GenericStructure.GeneralTemplateClasses.PrimitiveTypes import Integer, Na
4
4
  from ..SystemTemplate.InstanceRefs import VariableDataPrototypeInSystemInstanceRef
5
5
  from typing import List
6
6
 
7
+
7
8
  class EndToEndDescription(ARObject):
8
9
  def __init__(self):
9
10
  super().__init__()
@@ -41,7 +42,8 @@ class EndToEndDescription(ARObject):
41
42
  return self
42
43
 
43
44
  def getDataIds(self) -> List[PositiveInteger]:
44
- return sorted(self.dataIds, key = lambda a: a)
45
+ # return sorted(self.dataIds, key = lambda a: a.getValue())
46
+ return self.dataIds
45
47
 
46
48
  def addDataId(self, id: PositiveInteger):
47
49
  self.dataIds.append(id)
@@ -104,6 +106,7 @@ class EndToEndProtectionVariablePrototype(ARObject):
104
106
  def getReceiverIrefs(self) -> List[VariableDataPrototypeInSystemInstanceRef]:
105
107
  return self._receiverIRefs
106
108
 
109
+
107
110
  class EndToEndProtectionISignalIPdu(ARObject):
108
111
  def __init__(self):
109
112
  super().__init__()
@@ -146,21 +149,25 @@ class EndToEndProtection(Identifiable):
146
149
  return self.endToEndProfile
147
150
 
148
151
  def setEndToEndProfile(self, value):
149
- self.endToEndProfile = value
152
+ if value is not None:
153
+ self.endToEndProfile = value
150
154
  return self
151
155
 
152
156
  def getEndToEndProtectionISignalIPdus(self):
153
157
  return self.endToEndProtectionISignalIPdus
154
158
 
155
159
  def addEndToEndProtectionISignalIPdu(self, value):
156
- self.endToEndProtectionISignalIPdus.append(value)
160
+ if value is not None:
161
+ self.endToEndProtectionISignalIPdus.append(value)
157
162
  return self
158
163
 
159
164
  def getEndToEndProtectionVariablePrototypes(self) -> List[EndToEndProtectionVariablePrototype]:
160
165
  return self.endToEndProtectionVariablePrototypes
161
166
 
162
- def addEndToEndProtectionVariablePrototype(self, prototype: EndToEndProtectionVariablePrototype):
163
- self.endToEndProtectionVariablePrototypes.append(prototype)
167
+ def addEndToEndProtectionVariablePrototype(self, value: EndToEndProtectionVariablePrototype):
168
+ if value is not None:
169
+ self.endToEndProtectionVariablePrototypes.append(value)
170
+ return self
164
171
 
165
172
 
166
173
  class EndToEndProtectionSet(Identifiable):
@@ -174,4 +181,4 @@ class EndToEndProtectionSet(Identifiable):
174
181
  return self.elements[short_name]
175
182
 
176
183
  def getEndToEndProtections(self) -> List[EndToEndProtection]:
177
- return sorted(filter(lambda c: isinstance(c, EndToEndProtection), self.elements.values()), key= lambda e: e.short_name)
184
+ return sorted(filter(lambda c: isinstance(c, EndToEndProtection), self.elements.values()), key=lambda e: e.short_name)