armodel 1.6.2__py3-none-any.whl → 1.6.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/arxml_dump_cli.py +10 -7
- armodel/cli/arxml_format_cli.py +1 -1
- armodel/cli/connector_update_cli.py +1 -1
- armodel/lib/sw_component.py +1 -1
- armodel/lib/system_signal.py +2 -2
- armodel/models/{m2/autosar_templates/autosar_top_level_structure.py → M2/AUTOSARTemplates/AutosarTopLevelStructure.py} +7 -4
- armodel/models/{bsw_module_template.py → M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py} +115 -140
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswImplementation.py +21 -0
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswInterfaces.py +52 -0
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswOverview.py +78 -0
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/__init__.py +1 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +81 -0
- armodel/models/{m2/autosar_templates/common_structure/implementation_data_types.py → M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py} +9 -5
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +108 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +96 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/MemorySectionUsage.py +72 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +22 -0
- armodel/models/{service_needs.py → M2/AUTOSARTemplates/CommonStructure/ServiceNeeds.py} +7 -7
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcBswMapping.py +36 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcInternalBehavior/ModeDeclarationGroup.py +27 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/SwcInternalBehavior/__init__.py +1 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +9 -0
- armodel/models/{m2/autosar_templates/common_structure → M2/AUTOSARTemplates/CommonStructure}/__init__.py +5 -2
- armodel/models/{m2/autosar_templates/generic_structure/abstract_structure.py → M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py} +25 -2
- armodel/models/{m2/autosar_templates/generic_structure/ar_package.py → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py} +29 -21
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +16 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ElementCollection.py +1 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/EngineeringObject.py +55 -0
- armodel/models/{general_structure.py → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py} +37 -149
- armodel/models/{ar_object.py → M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py} +163 -70
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/__init__.py +1 -0
- armodel/models/M2/AUTOSARTemplates/GenericStructure/__init__.py +1 -0
- armodel/models/{m2/autosar_templates/sw_component_template/communication.py → M2/AUTOSARTemplates/SWComponentTemplate/Communication.py} +22 -5
- armodel/models/{m2/autosar_templates/sw_component_template/components/instance_refs.py → M2/AUTOSARTemplates/SWComponentTemplate/Components/InstanceRefs.py} +2 -2
- armodel/models/{m2/autosar_templates/sw_component_template/components → M2/AUTOSARTemplates/SWComponentTemplate/Components}/__init__.py +10 -8
- armodel/models/{m2/autosar_templates/sw_component_template/composition/instance_refs.py → M2/AUTOSARTemplates/SWComponentTemplate/Composition/InstanceRefs.py} +2 -2
- armodel/models/{m2/autosar_templates/sw_component_template/composition → M2/AUTOSARTemplates/SWComponentTemplate/Composition}/__init__.py +5 -5
- armodel/models/{m2/autosar_templates/sw_component_template/data_type/data_prototypes.py → M2/AUTOSARTemplates/SWComponentTemplate/Datatype/DataPrototypes.py} +25 -7
- armodel/models/{datatype.py → M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py} +16 -73
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/__init__.py +1 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +177 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcImplementation.py +11 -0
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AccessCount.py} +2 -2
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py} +7 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/IncludedDataTypes.py +24 -0
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/InstanceRefsUsage.py} +3 -3
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py} +3 -3
- armodel/models/{per_instance_memory.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/PerInstanceMemory.py} +5 -6
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServerCall.py} +3 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +23 -0
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/Trigger.py} +2 -2
- armodel/models/{m2/autosar_templates/sw_component_template/swc_internal_behavior → M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior}/__init__.py +9 -10
- armodel/models/{m2/autosar_templates/sw_component_template → M2/AUTOSARTemplates/SWComponentTemplate}/port_interface/__init__.py +10 -6
- armodel/models/{m2/autosar_templates/sw_component_template → M2/AUTOSARTemplates/SWComponentTemplate}/port_interface/instance_refs.py +2 -2
- armodel/models/{m2/autosar_templates/system_template/instance_refs.py → M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py} +2 -2
- armodel/models/{m2/autosar_templates/system_template → M2/AUTOSARTemplates/SystemTemplate}/__init__.py +4 -2
- armodel/models/{m2/autosar_templates/system_template → M2/AUTOSARTemplates/SystemTemplate}/data_mapping.py +2 -2
- armodel/models/{m2/autosar_templates/system_template → M2/AUTOSARTemplates/SystemTemplate}/network_management.py +7 -3
- armodel/models/{m2/autosar_templates/system_template → M2/AUTOSARTemplates/SystemTemplate}/transport_protocols.py +1 -1
- armodel/models/{m2/autosar_templates → M2/AUTOSARTemplates}/ecuc_description_template.py +10 -6
- armodel/models/M2/MSR/AsamHdo/AdminData.py +21 -0
- armodel/models/M2/MSR/AsamHdo/BaseTypes.py +77 -0
- armodel/models/{m2_msr.py → M2/MSR/AsamHdo/ComputationMethod.py} +44 -28
- armodel/models/{global_constraints.py → M2/MSR/AsamHdo/Constraints/GlobalConstraints.py} +7 -4
- armodel/models/M2/MSR/AsamHdo/Constraints/__init__.py +1 -0
- armodel/models/M2/MSR/AsamHdo/SpecialData.py +63 -0
- armodel/models/{m2/msr/asam_hdo/units.py → M2/MSR/AsamHdo/Units.py} +6 -3
- armodel/models/M2/MSR/AsamHdo/__init__.py +1 -0
- armodel/models/M2/MSR/CalibrationData/CalibrationValue.py +30 -0
- armodel/models/M2/MSR/CalibrationData/__init__.py +1 -0
- armodel/models/{m2/msr/data_dictionary/auxillary_objects.py → M2/MSR/DataDictionary/AuxillaryObjects.py} +4 -2
- armodel/models/M2/MSR/DataDictionary/Axis.py +145 -0
- armodel/models/M2/MSR/DataDictionary/CalibrationParameter.py +37 -0
- armodel/models/{m2/msr/data_dictionary/data_def_properties.py → M2/MSR/DataDictionary/DataDefProperties.py} +19 -9
- armodel/models/{record_layout.py → M2/MSR/DataDictionary/RecordLayout.py} +26 -25
- armodel/models/M2/MSR/DataDictionary/__init__.py +1 -0
- armodel/models/{annotation.py → M2/MSR/Documentation/Annotation.py} +8 -8
- armodel/models/{m2/msr/documentation/block_elements.py → M2/MSR/Documentation/BlockElements.py} +2 -2
- armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +17 -0
- armodel/models/{multilanguage_data.py → M2/MSR/Documentation/TextModel/MultilanguageData.py} +21 -30
- armodel/models/M2/MSR/Documentation/TextModel/__init__.py +2 -0
- armodel/models/M2/MSR/Documentation/__init__.py +3 -0
- armodel/models/M2/MSR/__init__.py +1 -0
- armodel/models/M2/__init__.py +1 -0
- armodel/models/__init__.py +6 -23
- armodel/models/fibex/can_communication.py +3 -2
- armodel/models/fibex/fibex_4_multiplatform.py +5 -3
- armodel/models/fibex/fibex_core/core_communication.py +9 -3
- armodel/models/fibex/fibex_core/core_topology.py +7 -3
- armodel/models/fibex/lin_communication.py +5 -1
- armodel/models/rpt_scenario.py +2 -2
- armodel/models/sw_component.py +19 -14
- armodel/models/timing.py +3 -3
- armodel/parser/abstract_arxml_parser.py +8 -4
- armodel/parser/arxml_parser.py +85 -62
- armodel/parser/connector_xlsx_parser.py +5 -3
- armodel/report/connector_xls_report.py +1 -1
- armodel/tests/test_armodel/models/test_ar_object.py +2 -1
- armodel/tests/test_armodel/models/test_ar_package.py +20 -8
- armodel/tests/test_armodel/models/test_ar_ref.py +7 -5
- armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -1
- armodel/tests/test_armodel/models/test_common_structure.py +11 -5
- armodel/tests/test_armodel/models/test_data_dictionary.py +2 -2
- armodel/tests/test_armodel/models/test_data_prototype.py +7 -3
- armodel/tests/test_armodel/models/test_datatype.py +21 -7
- armodel/tests/test_armodel/models/test_general_structure.py +12 -2
- armodel/tests/test_armodel/models/test_implementation.py +3 -2
- armodel/tests/test_armodel/models/test_m2_msr.py +4 -2
- armodel/tests/test_armodel/models/test_port_interface.py +16 -6
- armodel/tests/test_armodel/models/test_port_prototype.py +1 -1
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +1 -1
- armodel/tests/test_armodel/parser/test_sw_components.py +2 -2
- armodel/tests/test_armodel/parser/test_system.py +30 -0
- armodel/writer/abstract_arxml_writer.py +5 -2
- armodel/writer/arxml_writer.py +100 -67
- {armodel-1.6.2.dist-info → armodel-1.6.3.dist-info}/METADATA +366 -356
- armodel-1.6.3.dist-info/RECORD +148 -0
- {armodel-1.6.2.dist-info → armodel-1.6.3.dist-info}/WHEEL +1 -1
- armodel/lib/data_analyzer.py +0 -34
- armodel/models/ar_package.py +0 -641
- armodel/models/ar_ref.py +0 -25
- armodel/models/calibration.py +0 -119
- armodel/models/common_structure.py +0 -272
- armodel/models/communication.py +0 -17
- armodel/models/data_def_properties.py +0 -16
- armodel/models/data_dictionary.py +0 -59
- armodel/models/data_prototype.py +0 -103
- armodel/models/ecuc_parameter_def_template.py +0 -0
- armodel/models/end_to_end_protection.py +0 -67
- armodel/models/fibex/fibex_core.py +0 -341
- armodel/models/fibex/lin_topology.py +0 -7
- armodel/models/implementation.py +0 -135
- armodel/models/internal_behavior.py +0 -63
- armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
- armodel/models/m2/autosar_templates/common_structure/implementation.py +0 -21
- armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +0 -236
- armodel/models/m2/msr/__init__.py +0 -0
- armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
- armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
- armodel/models/m2/msr/documentation/__init__.py +0 -0
- armodel/models/mode_declaration.py +0 -8
- armodel/models/port_interface.py +0 -165
- armodel/models/port_prototype.py +0 -6
- armodel/models/service_mapping.py +0 -11
- armodel/models/system_template/__init__.py +0 -0
- armodel/models/system_template/network_management.py +0 -7
- armodel/models/system_template/transport_protocols.py +0 -7
- armodel/models/unit.py +0 -14
- armodel-1.6.2.dist-info/RECORD +0 -142
- /armodel/models/{m2 → M2/AUTOSARTemplates/SWComponentTemplate}/__init__.py +0 -0
- /armodel/models/{m2/autosar_templates → M2/AUTOSARTemplates}/__init__.py +0 -0
- {armodel-1.6.2.dist-info → armodel-1.6.3.dist-info}/LICENSE +0 -0
- {armodel-1.6.2.dist-info → armodel-1.6.3.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.2.dist-info → armodel-1.6.3.dist-info}/top_level.txt +0 -0
armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/EngineeringObject.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
|
+
from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
from abc import ABCMeta
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class EngineeringObject(ARObject, metaclass=ABCMeta):
|
|
9
|
+
def __init__(self):
|
|
10
|
+
if type(self) == EngineeringObject:
|
|
11
|
+
raise NotImplementedError("EngineeringObject is an abstract class.")
|
|
12
|
+
|
|
13
|
+
super().__init__()
|
|
14
|
+
|
|
15
|
+
self.category = None # type: ARLiteral
|
|
16
|
+
self.domain = None # type: ARLiteral
|
|
17
|
+
self.revision_label = None # type: ARLiteral
|
|
18
|
+
self.short_label = None # type: ARLiteral
|
|
19
|
+
|
|
20
|
+
def setCategory(self, category: any):
|
|
21
|
+
if isinstance(category, ARLiteral):
|
|
22
|
+
self.category = category
|
|
23
|
+
else:
|
|
24
|
+
self.category = ARLiteral()
|
|
25
|
+
self.category.setValue(str(category))
|
|
26
|
+
return self
|
|
27
|
+
|
|
28
|
+
def getCategory(self) -> ARLiteral:
|
|
29
|
+
return self.category
|
|
30
|
+
|
|
31
|
+
def setDomain(self, domain: ARLiteral):
|
|
32
|
+
self.domain = domain
|
|
33
|
+
return self
|
|
34
|
+
|
|
35
|
+
def getDomain(self) -> ARLiteral:
|
|
36
|
+
return self.domain
|
|
37
|
+
|
|
38
|
+
def setRevisionLabel(self, revision_label: ARLiteral):
|
|
39
|
+
self.revision_label = revision_label
|
|
40
|
+
return self
|
|
41
|
+
|
|
42
|
+
def getRevisionLabel(self) -> ARLiteral:
|
|
43
|
+
return self.revision_label
|
|
44
|
+
|
|
45
|
+
def setShortLabel(self, label: ARLiteral):
|
|
46
|
+
self.short_label = label
|
|
47
|
+
return self
|
|
48
|
+
|
|
49
|
+
def getShortLabel(self) -> ARLiteral:
|
|
50
|
+
return self.short_label
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class AutosarEngineeringObject(EngineeringObject):
|
|
54
|
+
def __init__(self):
|
|
55
|
+
super().__init__()
|
|
@@ -1,84 +1,15 @@
|
|
|
1
|
+
from armodel.models.M2.MSR.AsamHdo.AdminData import AdminData
|
|
2
|
+
from armodel.models.M2.MSR.Documentation.TextModel.MultilanguageData import MultilanguageLongName
|
|
3
|
+
from .ArObject import ARObject
|
|
4
|
+
from .PrimitiveTypes import ARLiteral
|
|
5
|
+
from ....MSR.Documentation.Annotation import Annotation
|
|
6
|
+
from ....MSR.Documentation.TextModel.MultilanguageData import MultiLanguageOverviewParagraph
|
|
1
7
|
from abc import ABCMeta
|
|
2
8
|
from typing import List
|
|
3
9
|
|
|
4
|
-
|
|
5
|
-
from .ar_ref import RefType
|
|
6
|
-
from .multilanguage_data import MultiLanguageOverviewParagraph, MultilanguageLongName
|
|
7
|
-
from .ar_object import ARObject, ARLiteral
|
|
8
|
-
|
|
9
|
-
class Sd(ARObject):
|
|
10
|
-
def __init__(self):
|
|
11
|
-
super().__init__()
|
|
12
|
-
|
|
13
|
-
self.gid = ""
|
|
14
|
-
self.value = ""
|
|
15
|
-
|
|
16
|
-
def getGID(self):
|
|
17
|
-
return self.gid
|
|
18
|
-
|
|
19
|
-
def setGID(self, value):
|
|
20
|
-
self.gid = value
|
|
21
|
-
return self
|
|
22
|
-
|
|
23
|
-
def getValue(self):
|
|
24
|
-
return self.value
|
|
25
|
-
|
|
26
|
-
def setValue(self, value):
|
|
27
|
-
self.value = value
|
|
28
|
-
return self
|
|
29
|
-
class Sdg(ARObject):
|
|
30
|
-
def __init__(self):
|
|
31
|
-
super().__init__()
|
|
32
|
-
|
|
33
|
-
self.gid = ""
|
|
34
|
-
self.sd = [] # type: List[Sd]
|
|
35
|
-
self.sdgCaption = None
|
|
36
|
-
self.sdgContentsTypes = [] # type: List[Sdg]
|
|
37
|
-
|
|
38
|
-
def getGID(self):
|
|
39
|
-
return self.gid
|
|
40
|
-
|
|
41
|
-
def setGID(self, value):
|
|
42
|
-
self.gid = value
|
|
43
|
-
return self
|
|
44
|
-
|
|
45
|
-
def addSd(self, sd: Sd):
|
|
46
|
-
self.sd.append(sd)
|
|
47
|
-
return self
|
|
48
|
-
|
|
49
|
-
def getSds(self) -> List[Sd]:
|
|
50
|
-
return self.sd
|
|
51
|
-
|
|
52
|
-
def getSdgCaption(self):
|
|
53
|
-
return self.sdgCaption
|
|
54
|
-
|
|
55
|
-
def setSdgCaption(self, value):
|
|
56
|
-
self.sdgCaption = value
|
|
57
|
-
return self
|
|
58
|
-
|
|
59
|
-
def addSdgContentsType(self, sdg):
|
|
60
|
-
self.sdgContentsTypes.append(sdg)
|
|
61
|
-
|
|
62
|
-
def getSdgContentsTypes(self):
|
|
63
|
-
return self.sdgContentsTypes
|
|
64
|
-
|
|
65
|
-
class AdminData(ARObject):
|
|
66
|
-
def __init__(self):
|
|
67
|
-
super().__init__()
|
|
68
|
-
|
|
69
|
-
self.doc_revision = []
|
|
70
|
-
self.language = None
|
|
71
|
-
self.sdg = []
|
|
72
|
-
self.used_languages = None
|
|
73
|
-
|
|
74
|
-
def addSdg(self, sdg: Sdg):
|
|
75
|
-
self.sdg.append(sdg)
|
|
76
|
-
|
|
77
|
-
def getSdgs(self) -> List[Sdg]:
|
|
78
|
-
return self.sdg
|
|
79
|
-
|
|
80
|
-
class Referrable(ARObject, metaclass=ABCMeta):
|
|
10
|
+
class Referrable(ARObject, metaclass = ABCMeta):
|
|
81
11
|
def __init__(self, parent: ARObject, short_name: str):
|
|
12
|
+
|
|
82
13
|
if type(self) == Referrable:
|
|
83
14
|
raise NotImplementedError("Referrable is an abstract class.")
|
|
84
15
|
ARObject.__init__(self)
|
|
@@ -108,15 +39,15 @@ class Referrable(ARObject, metaclass=ABCMeta):
|
|
|
108
39
|
@property
|
|
109
40
|
def full_name(self) -> str:
|
|
110
41
|
return self._parent.full_name + "/" + self.short_name
|
|
111
|
-
|
|
42
|
+
|
|
112
43
|
def getFullName(self) -> str:
|
|
113
44
|
return self.full_name
|
|
114
|
-
|
|
45
|
+
|
|
115
46
|
class MultilanguageReferrable(Referrable, metaclass = ABCMeta):
|
|
116
47
|
def __init__(self, parent: ARObject, short_name: str):
|
|
117
48
|
if type(self) == MultilanguageReferrable:
|
|
118
49
|
raise NotImplementedError("MultilanguageReferrable is an abstract class.")
|
|
119
|
-
|
|
50
|
+
|
|
120
51
|
super().__init__(parent, short_name)
|
|
121
52
|
|
|
122
53
|
#self._parent = parent
|
|
@@ -128,16 +59,18 @@ class MultilanguageReferrable(Referrable, metaclass = ABCMeta):
|
|
|
128
59
|
def setLongName(self, value: MultilanguageLongName):
|
|
129
60
|
self.longName = value
|
|
130
61
|
return self
|
|
62
|
+
|
|
63
|
+
|
|
131
64
|
class CollectableElement(ARObject, metaclass = ABCMeta):
|
|
132
65
|
def __init__(self):
|
|
133
66
|
if type(self) == CollectableElement:
|
|
134
67
|
raise NotImplementedError("CollectableElement is an abstract class.")
|
|
135
|
-
self.elements = {} # type: dict[str,
|
|
68
|
+
self.elements = {} # type: dict[str, Referrable]
|
|
136
69
|
|
|
137
70
|
def getTotalElement(self) -> int:
|
|
138
71
|
#return len(list(filter(lambda a: not isinstance(a, ARPackage) , self.elements.values())))
|
|
139
72
|
return len(self.elements.values())
|
|
140
|
-
|
|
73
|
+
|
|
141
74
|
def removeElement(self, key):
|
|
142
75
|
if key not in self.elements:
|
|
143
76
|
raise KeyError("Invalid key <%s> for removing element" % key)
|
|
@@ -145,7 +78,7 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
|
|
|
145
78
|
|
|
146
79
|
def getElements(self):
|
|
147
80
|
return self.elements.values()
|
|
148
|
-
|
|
81
|
+
|
|
149
82
|
def addElement(self, element: Referrable):
|
|
150
83
|
self.elements[element.getShortName()] = element
|
|
151
84
|
|
|
@@ -154,7 +87,7 @@ class CollectableElement(ARObject, metaclass = ABCMeta):
|
|
|
154
87
|
return None
|
|
155
88
|
return self.elements[short_name]
|
|
156
89
|
|
|
157
|
-
class Identifiable(MultilanguageReferrable, CollectableElement, metaclass=ABCMeta):
|
|
90
|
+
class Identifiable(MultilanguageReferrable, CollectableElement, metaclass = ABCMeta):
|
|
158
91
|
def __init__(self, parent: ARObject, short_name: str):
|
|
159
92
|
if type(self) == Identifiable:
|
|
160
93
|
raise NotImplementedError("Identifiable is an abstract class.")
|
|
@@ -172,7 +105,7 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass=ABCMet
|
|
|
172
105
|
def setAdminData(self, value):
|
|
173
106
|
self.adminData = value
|
|
174
107
|
return self
|
|
175
|
-
|
|
108
|
+
|
|
176
109
|
def getDesc(self):
|
|
177
110
|
return self.desc
|
|
178
111
|
|
|
@@ -186,19 +119,34 @@ class Identifiable(MultilanguageReferrable, CollectableElement, metaclass=ABCMet
|
|
|
186
119
|
def setCategory(self, value):
|
|
187
120
|
self.category = value
|
|
188
121
|
return self
|
|
189
|
-
|
|
122
|
+
|
|
190
123
|
def addAnnotation(self, annotation: Annotation):
|
|
191
124
|
self.annotations.append(annotation)
|
|
192
125
|
return self
|
|
193
|
-
|
|
126
|
+
|
|
194
127
|
def getAnnotations(self) -> List[Annotation]:
|
|
195
128
|
return self.annotations
|
|
196
|
-
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class PackageableElement(Identifiable, metaclass=ABCMeta):
|
|
132
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
133
|
+
if type(self) == PackageableElement:
|
|
134
|
+
raise NotImplementedError("PackageableElement is an abstract class.")
|
|
135
|
+
super().__init__(parent, short_name)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class ARElement(PackageableElement, metaclass=ABCMeta):
|
|
139
|
+
def __init__(self, parent: ARObject, short_name: str):
|
|
140
|
+
if type(self) == ARElement:
|
|
141
|
+
raise NotImplementedError("ARElement is an abstract class.")
|
|
142
|
+
super().__init__(parent, short_name)
|
|
143
|
+
|
|
144
|
+
|
|
197
145
|
class Describable(ARObject, metaclass=ABCMeta):
|
|
198
146
|
def __init__(self):
|
|
199
147
|
if type(self) == Describable:
|
|
200
148
|
raise NotImplementedError("Describable is an abstract class.")
|
|
201
|
-
|
|
149
|
+
|
|
202
150
|
super().__init__()
|
|
203
151
|
|
|
204
152
|
self._desc = None
|
|
@@ -222,64 +170,4 @@ class Describable(ARObject, metaclass=ABCMeta):
|
|
|
222
170
|
def category(self, value: ARLiteral):
|
|
223
171
|
self._category = value
|
|
224
172
|
|
|
225
|
-
class AtpFeature(Identifiable, metaclass=ABCMeta):
|
|
226
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
227
|
-
if type(self) == AtpFeature:
|
|
228
|
-
raise NotImplementedError("AtpFeature is an abstract class.")
|
|
229
|
-
super().__init__(parent, short_name)
|
|
230
|
-
|
|
231
|
-
class PackageableElement(Identifiable, metaclass=ABCMeta):
|
|
232
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
233
|
-
if type(self) == PackageableElement:
|
|
234
|
-
raise NotImplementedError("PackageableElement is an abstract class.")
|
|
235
|
-
super().__init__(parent, short_name)
|
|
236
|
-
|
|
237
|
-
class SwcBswRunnableMapping(ARObject):
|
|
238
|
-
def __init__(self):
|
|
239
|
-
'''
|
|
240
|
-
Maps a BswModuleEntity to a RunnableEntity if it is implemented as part of a BSW
|
|
241
|
-
module (in the case of an AUTOSAR Service, a Complex Driver or an ECU
|
|
242
|
-
Abstraction). The mapping can be used by a tool to find relevant information on the
|
|
243
|
-
behavior, e.g. whether the bswEntity shall be running in interrupt context.
|
|
244
|
-
|
|
245
|
-
'''
|
|
246
|
-
super().__init__()
|
|
247
|
-
|
|
248
|
-
self.bswEntityRef = None # type: RefType
|
|
249
|
-
self.swcRunnableRef = None # type: RefType
|
|
250
|
-
|
|
251
|
-
class SwcBswMapping(Identifiable):
|
|
252
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
253
|
-
super().__init__(parent, short_name)
|
|
254
|
-
|
|
255
|
-
self.bswBehaviorRef = None # type: RefType
|
|
256
|
-
self._runnableMappings = []
|
|
257
|
-
self.swcBehaviorRef = None # type: RefType
|
|
258
|
-
self.synchronizedModeGroups = []
|
|
259
|
-
self.synchronizedTriggers = []
|
|
260
|
-
|
|
261
|
-
def addRunnableMapping(self, mapping: SwcBswRunnableMapping):
|
|
262
|
-
self._runnableMappings.append(mapping)
|
|
263
|
-
|
|
264
|
-
def getRunnableMappings(self) -> List[SwcBswRunnableMapping]:
|
|
265
|
-
return self._runnableMappings
|
|
266
|
-
|
|
267
|
-
class ARElement(PackageableElement, metaclass=ABCMeta):
|
|
268
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
269
|
-
if type(self) == ARElement:
|
|
270
|
-
raise NotImplementedError("ARElement is an abstract class.")
|
|
271
|
-
super().__init__(parent, short_name)
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
class AtpStructureElement(AtpFeature, metaclass=ABCMeta):
|
|
275
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
276
|
-
if type(self) == AtpFeature:
|
|
277
|
-
raise NotImplementedError("AtpStructureElement is an abstract class.")
|
|
278
|
-
super().__init__(parent, short_name)
|
|
279
|
-
|
|
280
|
-
class Limit(ARObject):
|
|
281
|
-
def __init__(self):
|
|
282
|
-
super().__init__()
|
|
283
173
|
|
|
284
|
-
self.intervalType = None # type: str
|
|
285
|
-
self.value = None # type: str
|
|
@@ -1,71 +1,31 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
import re
|
|
3
|
-
from typing import Dict, List
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
from armodel.models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
class ARObject(metaclass=ABCMeta):
|
|
9
|
-
def __init__(self):
|
|
10
|
-
if type(self) == ARObject:
|
|
11
|
-
raise NotImplementedError("ARObject is an abstract class.")
|
|
12
|
-
|
|
13
|
-
self.parent = None # type: ARObject
|
|
14
|
-
self.checksum = None # type: str
|
|
15
|
-
|
|
16
|
-
self.timestamp = None # type: str
|
|
17
|
-
self.uuid = None # type: str
|
|
18
|
-
|
|
19
|
-
def getTagName(self, tag: str, nsmap: Dict) -> str:
|
|
20
|
-
return tag.replace("{%s}" % nsmap["xmlns"], "")
|
|
21
|
-
|
|
22
|
-
class ARType(metaclass=ABCMeta):
|
|
6
|
+
class ARType(metaclass = ABCMeta):
|
|
23
7
|
def __init__(self) -> None:
|
|
24
8
|
self.timestamp = None # type: str
|
|
25
9
|
self.uuid = None # type: str
|
|
26
|
-
self._value = None
|
|
10
|
+
self._value = None
|
|
27
11
|
|
|
28
12
|
@property
|
|
29
13
|
def value(self):
|
|
30
14
|
return self._value
|
|
31
|
-
|
|
15
|
+
|
|
32
16
|
@value.setter
|
|
33
17
|
def value(self, val):
|
|
34
18
|
self._value = val
|
|
35
19
|
|
|
36
20
|
def getValue(self):
|
|
37
21
|
return self.value
|
|
38
|
-
|
|
22
|
+
|
|
39
23
|
def setValue(self, val):
|
|
40
24
|
self.value = val
|
|
41
25
|
|
|
42
26
|
def getText(self) -> str:
|
|
43
27
|
return str(self)
|
|
44
28
|
|
|
45
|
-
|
|
46
|
-
class ARLiteral(ARType):
|
|
47
|
-
def __init__(self) -> None:
|
|
48
|
-
super().__init__()
|
|
49
|
-
|
|
50
|
-
@property
|
|
51
|
-
def value(self) -> str:
|
|
52
|
-
if self._value is None:
|
|
53
|
-
return ""
|
|
54
|
-
return self._value
|
|
55
|
-
|
|
56
|
-
@value.setter
|
|
57
|
-
def value(self, val: any):
|
|
58
|
-
if isinstance(val, str):
|
|
59
|
-
self._value = val
|
|
60
|
-
else:
|
|
61
|
-
self._value = str(val)
|
|
62
|
-
|
|
63
|
-
def __str__(self) -> str:
|
|
64
|
-
return self.value
|
|
65
|
-
|
|
66
|
-
def upper(self) -> str:
|
|
67
|
-
return self.value.upper()
|
|
68
|
-
|
|
69
29
|
class ARNumerical(ARType):
|
|
70
30
|
def __init__(self) -> None:
|
|
71
31
|
super().__init__()
|
|
@@ -88,11 +48,11 @@ class ARNumerical(ARType):
|
|
|
88
48
|
return int(value)
|
|
89
49
|
except:
|
|
90
50
|
raise ValueError("Invalid Numerical Type <%s>" % value)
|
|
91
|
-
|
|
51
|
+
|
|
92
52
|
@property
|
|
93
53
|
def value(self) -> int:
|
|
94
54
|
return self._value
|
|
95
|
-
|
|
55
|
+
|
|
96
56
|
@value.setter
|
|
97
57
|
def value(self, val: any):
|
|
98
58
|
if isinstance(val, int):
|
|
@@ -108,26 +68,7 @@ class ARNumerical(ARType):
|
|
|
108
68
|
return self._text
|
|
109
69
|
else:
|
|
110
70
|
return str(self._value)
|
|
111
|
-
|
|
112
|
-
class ARPositiveInteger(ARNumerical):
|
|
113
|
-
def __init__(self) -> None:
|
|
114
|
-
super().__init__()
|
|
115
71
|
|
|
116
|
-
@property
|
|
117
|
-
def value(self) -> int:
|
|
118
|
-
return self._value
|
|
119
|
-
|
|
120
|
-
@value.setter
|
|
121
|
-
def value(self, val: any):
|
|
122
|
-
if isinstance(val, int):
|
|
123
|
-
if val < 0:
|
|
124
|
-
raise ValueError("Invalid Positive Integer <%s>" % val)
|
|
125
|
-
self._value = val
|
|
126
|
-
elif isinstance(val, str):
|
|
127
|
-
self._text = val
|
|
128
|
-
self._value = self._convertStringToNumberValue(val)
|
|
129
|
-
else:
|
|
130
|
-
raise ValueError("Unsupported Type <%s>", type(val))
|
|
131
72
|
|
|
132
73
|
class ARFloat(ARNumerical):
|
|
133
74
|
def __init__(self) -> None:
|
|
@@ -138,7 +79,7 @@ class ARFloat(ARNumerical):
|
|
|
138
79
|
@property
|
|
139
80
|
def value(self) -> float:
|
|
140
81
|
return self._value
|
|
141
|
-
|
|
82
|
+
|
|
142
83
|
@value.setter
|
|
143
84
|
def value(self, val: any):
|
|
144
85
|
if isinstance(val, float):
|
|
@@ -158,11 +99,74 @@ class ARFloat(ARNumerical):
|
|
|
158
99
|
else:
|
|
159
100
|
return str(self._value)
|
|
160
101
|
|
|
102
|
+
class TimeValue(ARFloat):
|
|
103
|
+
'''
|
|
104
|
+
This primitive type is taken for expressing time values. The numerical value is supposed to be interpreted
|
|
105
|
+
in the physical unit second.
|
|
106
|
+
Tags:
|
|
107
|
+
* xml.xsd.customType=TIME-VALUE
|
|
108
|
+
* xml.xsd.type=double
|
|
109
|
+
'''
|
|
110
|
+
|
|
111
|
+
def __init__(self):
|
|
112
|
+
super().__init__()
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class ARLiteral(ARType):
|
|
116
|
+
def __init__(self) -> None:
|
|
117
|
+
super().__init__()
|
|
118
|
+
|
|
119
|
+
@property
|
|
120
|
+
def value(self) -> str:
|
|
121
|
+
if self._value is None:
|
|
122
|
+
return ""
|
|
123
|
+
return self._value
|
|
124
|
+
|
|
125
|
+
@value.setter
|
|
126
|
+
def value(self, val: any):
|
|
127
|
+
if isinstance(val, str):
|
|
128
|
+
self._value = val
|
|
129
|
+
else:
|
|
130
|
+
self._value = str(val)
|
|
131
|
+
|
|
132
|
+
def __str__(self) -> str:
|
|
133
|
+
return self.value
|
|
134
|
+
|
|
135
|
+
def upper(self) -> str:
|
|
136
|
+
return self.value.upper()
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class String(ARLiteral):
|
|
140
|
+
|
|
141
|
+
pass
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class ARPositiveInteger(ARNumerical):
|
|
145
|
+
def __init__(self) -> None:
|
|
146
|
+
super().__init__()
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def value(self) -> int:
|
|
150
|
+
return self._value
|
|
151
|
+
|
|
152
|
+
@value.setter
|
|
153
|
+
def value(self, val: any):
|
|
154
|
+
if isinstance(val, int):
|
|
155
|
+
if val < 0:
|
|
156
|
+
raise ValueError("Invalid Positive Integer <%s>" % val)
|
|
157
|
+
self._value = val
|
|
158
|
+
elif isinstance(val, str):
|
|
159
|
+
self._text = val
|
|
160
|
+
self._value = self._convertStringToNumberValue(val)
|
|
161
|
+
else:
|
|
162
|
+
raise ValueError("Unsupported Type <%s>", type(val))
|
|
163
|
+
|
|
164
|
+
|
|
161
165
|
class ARBoolean(ARType):
|
|
162
166
|
def __init__(self) -> None:
|
|
163
167
|
super().__init__()
|
|
164
168
|
|
|
165
|
-
self._text = None
|
|
169
|
+
self._text = None
|
|
166
170
|
|
|
167
171
|
def _convertNumberToBoolean(self, value: int) -> bool:
|
|
168
172
|
if value == 0:
|
|
@@ -181,7 +185,7 @@ class ARBoolean(ARType):
|
|
|
181
185
|
@property
|
|
182
186
|
def value(self) -> int:
|
|
183
187
|
return self._value
|
|
184
|
-
|
|
188
|
+
|
|
185
189
|
@value.setter
|
|
186
190
|
def value(self, val: any):
|
|
187
191
|
if isinstance(val, bool):
|
|
@@ -203,4 +207,93 @@ class ARBoolean(ARType):
|
|
|
203
207
|
return "true"
|
|
204
208
|
else:
|
|
205
209
|
return "false"
|
|
206
|
-
|
|
210
|
+
|
|
211
|
+
class NameToken(ARLiteral):
|
|
212
|
+
'''
|
|
213
|
+
This is an identifier as used in xml, e.g. xml-names. Typical usages are, for example, the names of type
|
|
214
|
+
emitters, protocols, or profiles. For details see NMTOKEN definition on the W3C website
|
|
215
|
+
(https://www.w3.org/TR/xml/#NT-Nmtoken).
|
|
216
|
+
|
|
217
|
+
Note: Although NameToken supports a wide range of characters, the actually allowed patterns for a
|
|
218
|
+
certain attribute typed by NameToken may be further restricted by the specification of that attribute.
|
|
219
|
+
|
|
220
|
+
Tags:
|
|
221
|
+
* xml.xsd.customType=NMTOKEN-STRING
|
|
222
|
+
* xml.xsd.type=NMTOKEN
|
|
223
|
+
'''
|
|
224
|
+
def __init__(self):
|
|
225
|
+
super().__init__()
|
|
226
|
+
|
|
227
|
+
class PositiveInteger(ARPositiveInteger):
|
|
228
|
+
'''
|
|
229
|
+
This is a positive integer which can be denoted in decimal, binary, octal and hexadecimal. The value is
|
|
230
|
+
between 0 and 4294967295.
|
|
231
|
+
|
|
232
|
+
Tags:
|
|
233
|
+
* xml.xsd.customType=POSITIVE-INTEGER
|
|
234
|
+
* xml.xsd.pattern=0|[\+]?[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]+
|
|
235
|
+
* xml.xsd.type=string
|
|
236
|
+
'''
|
|
237
|
+
def __init__(self):
|
|
238
|
+
super().__init__()
|
|
239
|
+
|
|
240
|
+
class Integer(ARNumerical):
|
|
241
|
+
'''
|
|
242
|
+
An instance of Integer is an element in the set of integer numbers ( ..., -2, -1, 0, 1, 2, ...).
|
|
243
|
+
The value can be expressed in decimal, octal, hexadecimal and binary representation. Negative numbers
|
|
244
|
+
can only be expressed in decimal notation
|
|
245
|
+
Range is from -2147483648 and 2147483647.
|
|
246
|
+
|
|
247
|
+
Tags:
|
|
248
|
+
* xml.xsd.customType=INTEGER
|
|
249
|
+
* xml.xsd.pattern=0|[\+\-]?[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]+
|
|
250
|
+
* xml.xsd.type=string
|
|
251
|
+
'''
|
|
252
|
+
def __init__(self):
|
|
253
|
+
super().__init__()
|
|
254
|
+
|
|
255
|
+
class Identifier(ARLiteral):
|
|
256
|
+
'''
|
|
257
|
+
An Identifier is a string with a number of constraints on its appearance, satisfying the requirements typical
|
|
258
|
+
programming languages define for their Identifiers.
|
|
259
|
+
This datatype represents a string, that can be used as a c-Identifier.
|
|
260
|
+
It shall start with a letter, may consist of letters, digits and underscores.
|
|
261
|
+
|
|
262
|
+
Tags:
|
|
263
|
+
* xml.xsd.customType=IDENTIFIER
|
|
264
|
+
* xml.xsd.maxLength=128
|
|
265
|
+
* xml.xsd.pattern=[a-zA-Z][a-zA-Z0-9_]*
|
|
266
|
+
* xml.xsd.type=string
|
|
267
|
+
'''
|
|
268
|
+
def __init__(self):
|
|
269
|
+
super().__init__()
|
|
270
|
+
class Limit(ARObject):
|
|
271
|
+
def __init__(self):
|
|
272
|
+
super().__init__()
|
|
273
|
+
|
|
274
|
+
self.intervalType = None # type: str
|
|
275
|
+
self.value = None # type: str
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
class RefType(ARObject):
|
|
279
|
+
def __init__(self):
|
|
280
|
+
self.dest = ""
|
|
281
|
+
self.value = ""
|
|
282
|
+
|
|
283
|
+
def getDest(self):
|
|
284
|
+
return self.dest
|
|
285
|
+
|
|
286
|
+
def setDest(self, value):
|
|
287
|
+
self.dest = value
|
|
288
|
+
return self
|
|
289
|
+
|
|
290
|
+
def getValue(self):
|
|
291
|
+
return self.value
|
|
292
|
+
|
|
293
|
+
def setValue(self, value):
|
|
294
|
+
self.value = value
|
|
295
|
+
return self
|
|
296
|
+
|
|
297
|
+
class TRefType(RefType):
|
|
298
|
+
def __init__(self):
|
|
299
|
+
super().__init__()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import *
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from . import *
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
+
from armodel.models.M2.AUTOSARTemplates.SWComponentTemplate.port_interface.instance_refs import ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
4
5
|
|
|
5
|
-
from
|
|
6
|
-
from
|
|
7
|
-
from
|
|
8
|
-
from
|
|
9
|
-
from
|
|
6
|
+
from ..GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
7
|
+
from ..GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, ARNumerical, ARPositiveInteger
|
|
8
|
+
from ..GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARBoolean
|
|
9
|
+
from ..GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
10
|
+
from ...MSR.DataDictionary.DataDefProperties import SwDataDefProps
|
|
11
|
+
from ..CommonStructure import ValueSpecification
|
|
10
12
|
|
|
11
13
|
class PPortComSpec(ARObject, metaclass = ABCMeta):
|
|
12
14
|
"""
|
|
@@ -43,6 +45,21 @@ class RPortComSpec(ARObject, metaclass = ABCMeta):
|
|
|
43
45
|
super().__init__()
|
|
44
46
|
|
|
45
47
|
|
|
48
|
+
class CompositeNetworkRepresentation(ARObject):
|
|
49
|
+
def __init__(self):
|
|
50
|
+
super().__init__()
|
|
51
|
+
|
|
52
|
+
self.leaf_element_iref = None # type: ApplicationCompositeElementInPortInterfaceInstanceRef
|
|
53
|
+
self.network_representation = None # type: SwDataDefProps
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class TransmissionAcknowledgementRequest(ARObject):
|
|
57
|
+
def __init__(self):
|
|
58
|
+
super().__init__()
|
|
59
|
+
|
|
60
|
+
self.timeout = None # type: float
|
|
61
|
+
|
|
62
|
+
|
|
46
63
|
class SenderComSpec(PPortComSpec, metaclass = ABCMeta):
|
|
47
64
|
def __init__(self):
|
|
48
65
|
if type(self) == SenderComSpec:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from abc import ABCMeta
|
|
2
2
|
|
|
3
|
-
from ...
|
|
4
|
-
from
|
|
3
|
+
from ...GenericStructure.AbstractStructure import AtpInstanceRef
|
|
4
|
+
from ...GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class ModeGroupInAtomicSwcInstanceRef(AtpInstanceRef, metaclass = ABCMeta):
|