armodel 1.7.7__py3-none-any.whl → 1.7.8__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 (52) 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 +64 -29
  4. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +322 -63
  5. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +134 -35
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +10 -1
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +18 -2
  8. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +20 -19
  9. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/HwElementCategory.py +59 -0
  10. armodel/models/M2/AUTOSARTemplates/EcuResourceTemplate/__init__.py +145 -0
  11. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +214 -156
  12. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +60 -32
  13. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +63 -42
  14. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Composition/__init__.py +1 -0
  15. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +13 -6
  16. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +111 -38
  17. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py +9 -1
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +5 -4
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +9 -1
  20. armodel/models/M2/AUTOSARTemplates/SystemTemplate/DataMapping.py +167 -5
  21. armodel/models/M2/AUTOSARTemplates/SystemTemplate/{ECUResourceMapping.py → EcuResourceMapping.py} +4 -3
  22. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +31 -21
  23. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Ethernet/EthernetFrame.py +5 -3
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayCommunication.py +76 -0
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/FlexrayTopology.py +654 -0
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Flexray/__init__.py +0 -0
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +64 -31
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +158 -40
  29. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +19 -6
  30. armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +2 -0
  31. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Transformer/__init__.py +524 -0
  32. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +15 -13
  33. armodel/models/__init__.py +5 -1
  34. armodel/parser/abstract_arxml_parser.py +34 -30
  35. armodel/parser/arxml_parser.py +1196 -525
  36. armodel/parser/file_parser.py +5 -3
  37. armodel/tests/test_armodel/models/test_ar_package.py +6 -11
  38. armodel/tests/test_armodel/models/test_port_interface.py +116 -117
  39. armodel/tests/test_armodel/parser/test_bsw_module_descriiption.py +109 -109
  40. armodel/tests/test_armodel/parser/test_sw_components.py +38 -27
  41. armodel/tests/test_armodel/parser/test_system.py +2 -8
  42. armodel/transformer/__init__.py +0 -0
  43. armodel/transformer/abstract.py +6 -0
  44. armodel/transformer/admin_data.py +31 -0
  45. armodel/writer/abstract_arxml_writer.py +22 -29
  46. armodel/writer/arxml_writer.py +1198 -477
  47. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/METADATA +41 -1
  48. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/RECORD +52 -43
  49. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/LICENSE +0 -0
  50. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/WHEEL +0 -0
  51. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/entry_points.txt +0 -0
  52. {armodel-1.7.7.dist-info → armodel-1.7.8.dist-info}/top_level.txt +0 -0
@@ -15,15 +15,17 @@ from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPack
15
15
  from ..models.M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import BswModuleEntry
16
16
  from ..parser import ARXMLParser
17
17
 
18
- def show_variable_access(indent:int, variable_access: VariableAccess):
19
- if (variable_access.getAccessedVariableRef() != None):
18
+
19
+ def show_variable_access(indent: int, variable_access: VariableAccess):
20
+ if (variable_access.getAccessedVariableRef() is not None):
20
21
  accessed_variable_ref = variable_access.getAccessedVariableRef()
21
- if (accessed_variable_ref.getAutosarVariableInImplDatatype() != None):
22
+ if (accessed_variable_ref.getAutosarVariableInImplDatatype() is not None):
22
23
  autosar_variable_in_impl_datatype = accessed_variable_ref.getAutosarVariableInImplDatatype()
23
24
  print("%s: %s" % (" " * indent, autosar_variable_in_impl_datatype.getPortPrototypeRef().getValue()))
24
25
  print("%s: %s" % (" " * indent, autosar_variable_in_impl_datatype.getTargetDataPrototypeRef().getValue()))
25
26
 
26
- def show_port(indent:int, port_prototype: PortPrototype):
27
+
28
+ def show_port(indent: int, port_prototype: PortPrototype):
27
29
  if (isinstance(port_prototype, RPortPrototype)):
28
30
  print("%s-RPort: %s (%s)" % (" " * indent, port_prototype.short_name, port_prototype.getRequiredInterfaceTRef().getValue()))
29
31
  for client_com_spec in port_prototype.getClientComSpecs():
@@ -37,25 +39,28 @@ def show_port(indent:int, port_prototype: PortPrototype):
37
39
  else:
38
40
  raise ValueError("Unsupported Port prototype")
39
41
 
42
+
40
43
  def show_type(indent: int, data_type: ImplementationDataType):
41
44
  print("%s-Implementation Type: %s (%s)" % (" " * indent, data_type.short_name, data_type.parent.full_name))
42
45
  print("%s : %s" % (" " * indent, data_type.getCategory()))
43
- if (data_type.getSwDataDefProps() != None):
44
- if (data_type.getSwDataDefProps().getBaseTypeRef() != None):
46
+ if (data_type.getSwDataDefProps() is not None):
47
+ if (data_type.getSwDataDefProps().getBaseTypeRef() is not None):
45
48
  base_type_ref = data_type.getSwDataDefProps().getBaseTypeRef()
46
49
  print("%s : %s (%s)" % (" " * indent, base_type_ref.getValue(), base_type_ref.getDest()))
47
50
 
48
- if (data_type.getSwDataDefProps().getImplementationDataTypeRef() != None):
51
+ if (data_type.getSwDataDefProps().getImplementationDataTypeRef() is not None):
49
52
  implementation_data_type_ref = data_type.getSwDataDefProps().getImplementationDataTypeRef()
50
53
  print("%s : %s (%s)" % (" " * indent, implementation_data_type_ref.getValue(), implementation_data_type_ref.getDest()))
51
54
 
55
+
52
56
  def show_data_type_mapping(indent: int, mapping_set: DataTypeMappingSet):
53
57
  print("%s- Data Mapping Set <%s>:" % (" " * indent, mapping_set.short_name))
54
58
  for mapping in mapping_set.getDataTypeMaps():
55
59
  print("%s- appl: %s" % (" " * (indent + 2), mapping.applicationDataTypeRef.value))
56
60
  print("%s- impl: %s" % (" " * (indent + 4), mapping.implementationDataTypeRef.value))
57
61
 
58
- def show_behavior(indent:int, behavior: SwcInternalBehavior):
62
+
63
+ def show_behavior(indent: int, behavior: SwcInternalBehavior):
59
64
  print("%s-Behavior: %s" % (" " * indent, behavior.short_name))
60
65
  for runnable in behavior.getRunnableEntities():
61
66
  print("%s-Runnable: %s" % (" " * (indent + 2), runnable.short_name))
@@ -68,7 +73,7 @@ def show_behavior(indent:int, behavior: SwcInternalBehavior):
68
73
  show_variable_access(indent + 9, variable_access)
69
74
  for server_call_point in runnable.getServerCallPoints():
70
75
  print("%s-scp : %s" % (" " * (indent + 4), variable_access.short_name))
71
- if (server_call_point.operation_iref != None):
76
+ if (server_call_point.operation_iref is not None):
72
77
  print("%s: %s" % (" " * (indent + 9), server_call_point.getOperationIRef().getContextRPortRef().getValue()))
73
78
  print("%s: %s" % (" " * (indent + 9), server_call_point.getOperationIRef().getTargetRequiredOperationRef().getValue()))
74
79
  for event in behavior.getOperationInvokedEvents():
@@ -79,26 +84,29 @@ def show_behavior(indent:int, behavior: SwcInternalBehavior):
79
84
  print(" - TimingEvent : %s (%d ms)" % (event.short_name, event.period_ms))
80
85
  print(" : %s" % (event.start_on_event_ref.value))
81
86
 
87
+
82
88
  def show_sw_component(indent: int, sw_component: SwComponentType):
83
89
  print("%s%s" % (" " * indent, sw_component.short_name))
84
90
  for prototype in sw_component.getRPortPrototypes():
85
91
  show_port(indent + 2, prototype)
86
92
  for prototype in sw_component.getPPortPrototypes():
87
93
  show_port(indent + 2, prototype)
88
- show_behavior(indent + 2, sw_component.internal_behavior)
94
+ show_behavior(indent + 2, sw_component.internal_behavior)
95
+
89
96
 
90
97
  def show_sender_receiver_interface(indent: int, sr_interface: SenderReceiverInterface):
91
98
  print("%s%s" % (" " * indent, sr_interface.short_name))
92
99
  for data_element in sr_interface.getDataElements():
93
100
  print("%sData Element:%s (%s) " % (" " * (indent + 2), data_element.short_name, data_element.getTypeTRef().getValue()))
94
101
 
102
+
95
103
  def show_client_server_interface(indent: int, cs_interface: ClientServerInterface):
96
104
  print("%s%s" % (" " * indent, cs_interface.short_name))
97
105
  for operation in cs_interface.getOperations():
98
106
  print("%sOperation:%s" % (" " * (indent + 2), operation.short_name))
99
107
  for argument in operation.getArgumentDataPrototypes():
100
- print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name,
101
- argument.direction, argument.typeTRef.value))
108
+ print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name, argument.direction, argument.typeTRef.value))
109
+
102
110
 
103
111
  def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
104
112
  document = AUTOSAR.getInstance()
@@ -111,31 +119,33 @@ def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
111
119
  for event in behavior.getBswTimingEvents():
112
120
  print("%s-%s" % (" " * (indent + 2), event.short_name))
113
121
  print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEventRef", event.startsOnEventRef.value))
114
- starts_on_event = document.find(event.startsOnEventRef.value) # type: BswModuleEntity
122
+ starts_on_event = document.find(event.startsOnEventRef.value) # type: BswModuleEntity
115
123
  print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEvent", starts_on_event.short_name))
116
124
  print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntryRef", starts_on_event.implementedEntryRef.value))
117
- implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
125
+ implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
118
126
  print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntry", implemented_entry.short_name))
119
127
  print("%s-%s: %d" % (" " * (indent + 6), "Service Id", implemented_entry.serviceId))
120
128
 
129
+
121
130
  def show_bsw_module_description(indent: int, description: BswModuleDescription):
122
131
  print("%s-%s" % (" " * indent, description.short_name))
123
132
 
124
133
  for behavior in description.getBswInternalBehaviors():
125
134
  show_bsw_internal_behavior(indent + 2, behavior)
126
135
 
136
+
127
137
  def show_ar_package(indent: int, ar_package: ARPackage):
128
138
  print("%s-%s (Pkg)" % (" " * indent, ar_package.short_name))
129
139
 
130
140
  for sub_package in ar_package.getARPackages():
131
141
  show_ar_package(indent + 2, sub_package)
132
- #for data_type in ar_package.getImplementationDataTypes():
142
+ # for data_type in ar_package.getImplementationDataTypes():
133
143
  # show_type(indent + 2, data_type)
134
- #for mapping_set in ar_package.getDataTypeMappingSets():
144
+ # for mapping_set in ar_package.getDataTypeMappingSets():
135
145
  # show_data_type_mapping(indent + 2, mapping_set)
136
- #for sw_component in ar_package.getAtomicSwComponents():
146
+ # for sw_component in ar_package.getAtomicSwComponents():
137
147
  # show_sw_component(indent + 2, sw_component)
138
- #for sr_interface in ar_package.getSenderReceiverInterfaces():
148
+ # for sr_interface in ar_package.getSenderReceiverInterfaces():
139
149
  # show_sender_receiver_interface(indent + 2, sr_interface)
140
150
  for cs_interface in ar_package.getClientServerInterfaces():
141
151
  show_client_server_interface(indent + 2, cs_interface)
@@ -152,6 +162,7 @@ def _usage():
152
162
  print(" -h : show the help information")
153
163
  sys.exit(2)
154
164
 
165
+
155
166
  def cli_main():
156
167
  try:
157
168
  opts, _ = getopt.getopt(sys.argv[1:], "h", ["arxml=", "help"])
@@ -160,7 +171,7 @@ def cli_main():
160
171
  print(str(err)) # will print something like "option -a not recognized"
161
172
  _usage()
162
173
 
163
- logging.basicConfig(format='[%(levelname)s] : %(message)s', level = logging.DEBUG)
174
+ logging.basicConfig(format='[%(levelname)s] : %(message)s', level=logging.DEBUG)
164
175
 
165
176
  arxml_files = []
166
177
  for o, arg in opts:
@@ -180,7 +191,7 @@ def cli_main():
180
191
  for arxml_file in arxml_files:
181
192
  parser.load(arxml_file, document)
182
193
 
183
- #obj = AUTOSAR.getInstance().find("/AUTOSAR_Platform/ImplementationDataTypes/uint8")
184
- #print(obj)
194
+ # obj = AUTOSAR.getInstance().find("/AUTOSAR_Platform/ImplementationDataTypes/uint8")
195
+ # print(obj)
185
196
  for pkg in document.getARPackages():
186
- show_ar_package(0, pkg)
197
+ show_ar_package(0, pkg)
@@ -4,10 +4,12 @@ import logging
4
4
  import sys
5
5
  import os.path
6
6
 
7
+ from ..transformer.admin_data import AdminDataTransformer
7
8
  from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
8
9
  from ..parser.arxml_parser import ARXMLParser
9
10
  from ..writer import ARXMLWriter
10
11
 
12
+
11
13
  def perform_format(args):
12
14
  logger = logging.getLogger()
13
15
 
@@ -22,20 +24,21 @@ def perform_format(args):
22
24
  if os.path.exists(log_file):
23
25
  os.remove(log_file)
24
26
 
25
- file_handler = logging.FileHandler(log_file)
26
- file_handler.setFormatter(formatter)
27
+ if args.verbose:
28
+ file_handler = logging.FileHandler(log_file)
29
+ file_handler.setFormatter(formatter)
30
+ file_handler.setLevel(logging.DEBUG)
27
31
 
28
32
  logger.setLevel(logging.DEBUG)
29
- file_handler.setLevel(logging.DEBUG)
30
33
 
31
34
  if args.verbose:
32
35
  stdout_handler.setLevel(logging.DEBUG)
33
-
34
36
  else:
35
37
  stdout_handler.setLevel(logging.INFO)
36
38
 
37
- logger.addHandler(file_handler)
38
- logger.addHandler(stdout_handler)
39
+ if args.verbose:
40
+ logger.addHandler(file_handler)
41
+ logger.addHandler(stdout_handler)
39
42
 
40
43
  try:
41
44
  options = {}
@@ -46,26 +49,35 @@ def perform_format(args):
46
49
  parser = ARXMLParser(options)
47
50
  parser.load(args.INPUT, document)
48
51
 
52
+ if args.remove_admin_data:
53
+ transform = AdminDataTransformer()
54
+ transform.remove(document)
55
+
49
56
  writer = ARXMLWriter()
50
57
  writer.save(args.OUTPUT, document)
51
58
 
52
59
  except Exception as e:
53
- #print(e)
60
+ # print(e)
54
61
  logger.error(e)
55
- raise e
62
+ if args.verbose:
63
+ raise e
64
+
56
65
 
57
66
  def main():
58
67
  version = pkg_resources.require("armodel")[0].version
59
68
 
60
69
  ap = argparse.ArgumentParser()
61
- ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
62
- ap.add_argument("-w", "--warning", required= False, help= "Skip the error and report it as warning message", action= "store_true")
63
- ap.add_argument("INPUT", help = "The path of AUTOSAR ARXML file")
64
- ap.add_argument("OUTPUT", help = "The path of output ARXML file")
70
+ ap.description = "arxml-format ver: %s" % version
71
+ ap.add_argument("-v", "--verbose", required=False, help="Print debug information", action="store_true")
72
+ ap.add_argument("-w", "--warning", required=False, help="Skip the error and report it as warning message", action="store_true")
73
+ ap.add_argument("--remove-admin-data", required=False, help="Remove all the AdminData", action="store_true")
74
+ ap.add_argument("INPUT", help="The path of AUTOSAR ARXML file")
75
+ ap.add_argument("OUTPUT", help="The path of output ARXML file")
65
76
 
66
77
  args = ap.parse_args()
67
78
 
68
79
  perform_format(args)
69
80
 
81
+
70
82
  if __name__ == "__main__":
71
- main()
83
+ main()
@@ -11,9 +11,11 @@ from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject imp
11
11
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.Identifiable import CollectableElement, Referrable
12
12
  from ...M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ARPackage import ARPackage
13
13
  from ...M2.AUTOSARTemplates.SWComponentTemplate.Datatype.Datatypes import ApplicationDataType, DataTypeMap
14
+ from ...M2.AUTOSARTemplates.SWComponentTemplate.Components import CompositionSwComponentType
14
15
  from ...M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import ImplementationDataType
15
16
  from ...M2.AUTOSARTemplates.SystemTemplate import RootSwCompositionPrototype, System
16
17
 
18
+
17
19
  class FileInfoComment(ARObject):
18
20
  def __init__(self):
19
21
  super().__init__()
@@ -27,34 +29,23 @@ class FileInfoComment(ARObject):
27
29
  self.sdgs = value
28
30
  return self
29
31
 
32
+
30
33
  class AbstractAUTOSAR(CollectableElement):
31
34
  def __init__(self):
32
35
  super().__init__()
33
36
 
34
- CollectableElement.__init__(self)
35
-
36
- self.schema_location = ""
37
- self._appl_impl_type_maps = {}
38
- self._impl_appl_type_maps = {}
39
-
40
- self._behavior_impl_maps = {} # type: Dict[str, str]
41
- self._impl_behavior_maps = {} # type: Dict[str, str]
42
-
43
- self.systems = {} # type: Dict[str, System]
44
-
45
- self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
46
-
47
- self.adminData = None # type: AdminData
48
- self.arPackages = {} # type: Dict[str, ARPackage]
49
- self.fileInfoComment = None # type: FileInfoComment
50
- self.introduction = None # type: DocumentationBlock
37
+ self.clear()
51
38
 
52
39
  def getAdminData(self):
53
40
  return self.adminData
54
41
 
55
42
  def setAdminData(self, value):
56
- self.adminData = value
43
+ if value is not None:
44
+ self.adminData = value
57
45
  return self
46
+
47
+ def removeAdminData(self):
48
+ self.adminData = None
58
49
 
59
50
  def getFileInfoComment(self):
60
51
  return self.fileInfoComment
@@ -78,8 +69,26 @@ class AbstractAUTOSAR(CollectableElement):
78
69
  return ""
79
70
 
80
71
  def clear(self):
81
- self.arPackages = {}
82
- self.elements = {}
72
+ CollectableElement.__init__(self)
73
+
74
+ self.schema_location = None
75
+ self._appl_impl_type_maps = {}
76
+ self._impl_appl_type_maps = {}
77
+
78
+ self._behavior_impl_maps = {} # type: Dict[str, str]
79
+ self._impl_behavior_maps = {} # type: Dict[str, str]
80
+
81
+ self.uuid_objects = {} # type: Dict[str, ARObject]
82
+
83
+ self.systems = {} # type: Dict[str, System]
84
+ self.compositionSwComponentTypes = {} # type: Dict[str, CompositionSwComponentType]
85
+
86
+ self.rootSwCompositionPrototype = None # type: RootSwCompositionPrototype
87
+
88
+ self.adminData = None # type: AdminData
89
+ self.arPackages = {} # type: Dict[str, ARPackage]
90
+ self.fileInfoComment = None # type: FileInfoComment
91
+ self.introduction = None # type: DocumentationBlock
83
92
 
84
93
  def getElement(self, short_name: str) -> Referrable:
85
94
  if (short_name in self.arPackages):
@@ -87,8 +96,8 @@ class AbstractAUTOSAR(CollectableElement):
87
96
  return CollectableElement.getElement(self, short_name)
88
97
 
89
98
  def getARPackages(self) -> List[ARPackage]:
90
- #return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
91
- return list(sorted(self.arPackages.values(), key= lambda a: a.short_name))
99
+ # return list(filter(lambda e: isinstance(e, ARPackage), self.elements.values()))
100
+ return list(sorted(self.arPackages.values(), key=lambda a: a.short_name))
92
101
 
93
102
  def createARPackage(self, short_name: str) -> ARPackage:
94
103
  if (short_name not in self.arPackages):
@@ -103,7 +112,7 @@ class AbstractAUTOSAR(CollectableElement):
103
112
  if (short_name == ""):
104
113
  continue
105
114
  element = element.getElement(short_name)
106
- if (element == None):
115
+ if (element is None):
107
116
  return element
108
117
  # raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
109
118
  return element
@@ -156,24 +165,49 @@ class AbstractAUTOSAR(CollectableElement):
156
165
  return self.find(self._impl_behavior_maps[impl_ref])
157
166
  return None
158
167
 
159
- def getImplementation(self, behavior_ref:str):
168
+ def getImplementation(self, behavior_ref: str):
160
169
  if behavior_ref in self._behavior_impl_maps:
161
170
  return self.find(self._behavior_impl_maps[behavior_ref])
162
171
  return None
163
172
 
164
173
  def addSystem(self, system: System):
165
174
  short_name = system.getShortName()
166
- if short_name not in self.systems:
175
+ if short_name not in self.systems:
167
176
  self.systems[short_name] = system
168
177
 
169
178
  def getSystems(self) -> List[System]:
170
- return list(sorted(self.systems.values(), key = lambda a: a.getShortName()))
171
- class AUTOSAR (AbstractAUTOSAR):
179
+ return list(sorted(self.systems.values(), key=lambda a: a.getShortName()))
180
+
181
+ def getCompositionSwComponentTypes(self):
182
+ return self.compositionSwComponentTypes
183
+
184
+ def getCompositionSwComponentType(self, short_name: str):
185
+ return self.compositionSwComponentTypes[short_name]
186
+
187
+ def addCompositionSwComponentType(self, sw_component_type: CompositionSwComponentType):
188
+ if sw_component_type is not None:
189
+ short_name = sw_component_type.getShortName()
190
+ if short_name not in self.compositionSwComponentTypes:
191
+ self.compositionSwComponentTypes[short_name] = sw_component_type
192
+ return self
193
+
194
+ def getARObjectByUUID(self, uuid: str):
195
+ if uuid in self.uuid_objects:
196
+ return self.uuid_objects[uuid]
197
+ return None
198
+
199
+ def addARObject(self, value: ARObject):
200
+ if value is not None:
201
+ self.uuid_objects[value.uuid] = value
202
+ return self
203
+
204
+
205
+ class AUTOSAR (AbstractAUTOSAR):
172
206
  __instance = None
173
207
 
174
208
  @staticmethod
175
209
  def getInstance():
176
- if (AUTOSAR.__instance == None):
210
+ if (AUTOSAR.__instance is None):
177
211
  AUTOSAR()
178
212
  return AUTOSAR.__instance
179
213
 
@@ -181,13 +215,14 @@ class AUTOSAR (AbstractAUTOSAR):
181
215
  self.clear()
182
216
 
183
217
  def __init__(self):
184
- if (AUTOSAR.__instance != None):
218
+ if (AUTOSAR.__instance is not None):
185
219
  raise Exception("The AUTOSAR is singleton!")
186
220
 
187
221
  AUTOSAR.__instance = self
188
222
 
189
223
  super().__init__()
190
224
 
225
+
191
226
  class AUTOSARDoc(AbstractAUTOSAR):
192
227
  def __init__(self):
193
228
  super().__init__()