armodel 1.6.0__py3-none-any.whl → 1.6.2__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 +25 -22
- armodel/cli/arxml_format_cli.py +1 -4
- armodel/cli/connector_update_cli.py +1 -1
- armodel/cli/swc_list_cli.py +1 -1
- armodel/data_models/sw_connector.py +3 -3
- armodel/lib/sw_component.py +3 -1
- armodel/lib/system_signal.py +3 -1
- armodel/models/__init__.py +5 -3
- armodel/models/ar_object.py +1 -1
- armodel/models/ar_package.py +185 -151
- armodel/models/ar_ref.py +0 -202
- armodel/models/common_structure.py +3 -71
- armodel/models/communication.py +1 -1
- armodel/models/datatype.py +7 -72
- armodel/models/end_to_end_protection.py +1 -1
- armodel/models/general_structure.py +10 -4
- armodel/models/internal_behavior.py +1 -1
- armodel/models/m2/autosar_templates/autosar_top_level_structure.py +120 -0
- armodel/models/m2/autosar_templates/common_structure/implementation.py +21 -0
- armodel/models/m2/autosar_templates/common_structure/implementation_data_types.py +154 -0
- armodel/models/m2/autosar_templates/ecuc_description_template.py +2 -1
- armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
- armodel/models/m2/autosar_templates/generic_structure/abstract_structure.py +69 -0
- armodel/models/m2/autosar_templates/generic_structure/ar_package.py +528 -0
- armodel/models/m2/autosar_templates/sw_component_template/communication.py +44 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +246 -0
- armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +33 -1
- armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +154 -0
- armodel/models/m2/autosar_templates/sw_component_template/composition/instance_refs.py +157 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
- armodel/models/m2/autosar_templates/sw_component_template/data_type/data_prototypes.py +104 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/__init__.py +243 -0
- armodel/models/m2/autosar_templates/sw_component_template/port_interface/instance_refs.py +39 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +3 -11
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py +169 -0
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +1 -2
- armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +5 -4
- armodel/models/m2/autosar_templates/system_template/instance_refs.py +48 -0
- armodel/models/m2_msr.py +1 -0
- armodel/models/port_prototype.py +1 -90
- armodel/models/service_needs.py +3 -1
- armodel/models/sw_component.py +6 -143
- armodel/parser/__init__.py +2 -1
- armodel/parser/abstract_arxml_parser.py +1 -1
- armodel/parser/arxml_parser.py +157 -80
- armodel/parser/connector_xlsx_parser.py +3 -1
- armodel/parser/file_parser.py +43 -0
- armodel/report/connector_xls_report.py +2 -1
- armodel/tests/test_armodel/models/test_ar_package.py +6 -3
- armodel/tests/test_armodel/models/test_ar_ref.py +15 -13
- armodel/tests/test_armodel/models/test_common_structure.py +6 -5
- armodel/tests/test_armodel/models/test_data_prototype.py +1 -1
- armodel/tests/test_armodel/models/test_datatype.py +9 -9
- armodel/tests/test_armodel/models/test_general_structure.py +1 -1
- armodel/tests/test_armodel/models/test_implementation.py +1 -1
- armodel/tests/test_armodel/models/test_port_interface.py +2 -2
- armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -1
- armodel/tests/test_armodel/parser/test_sw_components.py +2 -2
- armodel/writer/abstract_arxml_writer.py +5 -1
- armodel/writer/arxml_writer.py +70 -60
- {armodel-1.6.0.dist-info → armodel-1.6.2.dist-info}/METADATA +5 -1
- {armodel-1.6.0.dist-info → armodel-1.6.2.dist-info}/RECORD +66 -51
- {armodel-1.6.0.dist-info → armodel-1.6.2.dist-info}/LICENSE +0 -0
- {armodel-1.6.0.dist-info → armodel-1.6.2.dist-info}/WHEEL +0 -0
- {armodel-1.6.0.dist-info → armodel-1.6.2.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.0.dist-info → armodel-1.6.2.dist-info}/top_level.txt +0 -0
armodel/models/port_prototype.py
CHANGED
|
@@ -1,95 +1,6 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
|
|
3
|
-
from .m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ServerComSpec
|
|
3
|
+
from .m2.autosar_templates.sw_component_template.communication import ClientComSpec, ModeSwitchReceiverComSpec, ModeSwitchSenderComSpec, NonqueuedReceiverComSpec, NonqueuedSenderComSpec, PPortComSpec, ParameterRequireComSpec, QueuedReceiverComSpec, QueuedSenderComSpec, RPortComSpec, ServerComSpec
|
|
4
4
|
from .general_structure import ARObject, Identifiable
|
|
5
5
|
from .ar_ref import TRefType
|
|
6
6
|
|
|
7
|
-
class PortPrototype(Identifiable):
|
|
8
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
9
|
-
super().__init__(parent, short_name)
|
|
10
|
-
|
|
11
|
-
class AbstractProvidedPortPrototype(PortPrototype):
|
|
12
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
13
|
-
super().__init__(parent, short_name)
|
|
14
|
-
|
|
15
|
-
self.provided_com_specs = [] # type: List[PPortComSpec]
|
|
16
|
-
|
|
17
|
-
def _validateRPortComSpec(self, com_spec: PPortComSpec):
|
|
18
|
-
if isinstance(com_spec, NonqueuedSenderComSpec):
|
|
19
|
-
if com_spec.dataElementRef == None:
|
|
20
|
-
raise ValueError(
|
|
21
|
-
"operation of NonqueuedSenderComSpec is invalid")
|
|
22
|
-
if com_spec.dataElementRef.dest != "VARIABLE-DATA-PROTOTYPE":
|
|
23
|
-
raise ValueError(
|
|
24
|
-
"Invalid operation dest of NonqueuedSenderComSpec")
|
|
25
|
-
elif isinstance(com_spec, ServerComSpec):
|
|
26
|
-
pass
|
|
27
|
-
elif isinstance(com_spec, QueuedSenderComSpec):
|
|
28
|
-
pass
|
|
29
|
-
elif isinstance(com_spec, ModeSwitchSenderComSpec):
|
|
30
|
-
pass
|
|
31
|
-
else:
|
|
32
|
-
raise ValueError("Unsupported com spec")
|
|
33
|
-
|
|
34
|
-
def addProvidedComSpec(self, com_spec):
|
|
35
|
-
self._validateRPortComSpec(com_spec)
|
|
36
|
-
self.provided_com_specs.append(com_spec)
|
|
37
|
-
|
|
38
|
-
def getProvidedComSpecs(self) -> List[PPortComSpec]:
|
|
39
|
-
return self.provided_com_specs
|
|
40
|
-
|
|
41
|
-
def getNonqueuedSenderComSpecs(self) -> List[NonqueuedSenderComSpec]:
|
|
42
|
-
return filter(lambda c: isinstance(c, NonqueuedSenderComSpec), self.provided_com_specs)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class AbstractRequiredPortPrototype(PortPrototype):
|
|
46
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
47
|
-
super().__init__(parent, short_name)
|
|
48
|
-
|
|
49
|
-
self.required_com_specs = [] # type: List[RPortComSpec]
|
|
50
|
-
|
|
51
|
-
def _validateRPortComSpec(self, com_spec: RPortComSpec):
|
|
52
|
-
if (isinstance(com_spec, ClientComSpec)):
|
|
53
|
-
if (com_spec.operationRef == None):
|
|
54
|
-
raise ValueError(
|
|
55
|
-
"The operation reference of ClientComSpec has not been defined.")
|
|
56
|
-
if (com_spec.operationRef.dest != "CLIENT-SERVER-OPERATION"):
|
|
57
|
-
raise ValueError("Invalid operation dest of ClientComSpec.")
|
|
58
|
-
elif (isinstance(com_spec, NonqueuedReceiverComSpec)):
|
|
59
|
-
if (com_spec.dataElementRef == None):
|
|
60
|
-
raise ValueError(
|
|
61
|
-
"The data element reference of NonqueuedReceiverComSpec has not been defined.")
|
|
62
|
-
if (com_spec.dataElementRef.dest != "VARIABLE-DATA-PROTOTYPE"):
|
|
63
|
-
raise ValueError(
|
|
64
|
-
"Invalid date element dest of NonqueuedReceiverComSpec.")
|
|
65
|
-
elif isinstance(com_spec, QueuedReceiverComSpec):
|
|
66
|
-
pass
|
|
67
|
-
elif isinstance(com_spec, ModeSwitchReceiverComSpec):
|
|
68
|
-
pass
|
|
69
|
-
else:
|
|
70
|
-
raise ValueError("Unsupported RPortComSpec <%s>" % type(com_spec))
|
|
71
|
-
|
|
72
|
-
def addRequiredComSpec(self, com_spec: RPortComSpec):
|
|
73
|
-
self._validateRPortComSpec(com_spec)
|
|
74
|
-
self.required_com_specs.append(com_spec)
|
|
75
|
-
|
|
76
|
-
def getRequiredComSpecs(self) -> List[RPortComSpec]:
|
|
77
|
-
return self.required_com_specs
|
|
78
|
-
|
|
79
|
-
def getClientComSpecs(self) -> List[ClientComSpec]:
|
|
80
|
-
return filter(lambda c: isinstance(c, ClientComSpec), self.required_com_specs)
|
|
81
|
-
|
|
82
|
-
def getNonqueuedReceiverComSpecs(self) -> List[NonqueuedReceiverComSpec]:
|
|
83
|
-
return filter(lambda c: isinstance(c, NonqueuedReceiverComSpec), self.required_com_specs)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
class PPortPrototype(AbstractProvidedPortPrototype):
|
|
87
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
88
|
-
super().__init__(parent, short_name)
|
|
89
|
-
|
|
90
|
-
self.provided_interface_tref = TRefType()
|
|
91
|
-
class RPortPrototype(AbstractRequiredPortPrototype):
|
|
92
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
93
|
-
super().__init__(parent, short_name)
|
|
94
|
-
|
|
95
|
-
self.required_interface_tref = TRefType()
|
armodel/models/service_needs.py
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
from abc import ABCMeta
|
|
3
|
+
|
|
4
|
+
from .m2.autosar_templates.sw_component_template.swc_internal_behavior.instance_refs_usage import AutosarParameterRef, AutosarVariableRef
|
|
3
5
|
from .general_structure import Identifiable
|
|
4
|
-
from .ar_ref import
|
|
6
|
+
from .ar_ref import RefType
|
|
5
7
|
from .ar_object import ARBoolean, ARLiteral, ARObject
|
|
6
8
|
|
|
7
9
|
|
armodel/models/sw_component.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from typing import List
|
|
2
2
|
from abc import ABCMeta
|
|
3
3
|
|
|
4
|
+
from .m2.autosar_templates.sw_component_template.components import SwComponentType
|
|
5
|
+
from .m2.autosar_templates.sw_component_template.composition.instance_refs import POperationInAtomicSwcInstanceRef
|
|
4
6
|
from .m2.autosar_templates.sw_component_template.components.instance_refs import RModeInAtomicSwcInstanceRef, RVariableInAtomicSwcInstanceRef
|
|
5
7
|
from .m2.autosar_templates.sw_component_template.swc_internal_behavior import RunnableEntity
|
|
6
8
|
from .internal_behavior import IncludedDataTypeSet, InternalBehavior
|
|
@@ -8,11 +10,10 @@ from .service_mapping import RoleBasedPortAssignment
|
|
|
8
10
|
from .per_instance_memory import PerInstanceMemory
|
|
9
11
|
from .service_needs import NvBlockNeeds, RoleBasedDataAssignment, ServiceNeeds
|
|
10
12
|
from .ar_object import ARBoolean, ARLiteral
|
|
11
|
-
from .general_structure import
|
|
12
|
-
from .ar_ref import
|
|
13
|
-
from .ar_ref import RefType
|
|
14
|
-
from .
|
|
15
|
-
from .data_prototype import ParameterDataPrototype, VariableDataPrototype
|
|
13
|
+
from .general_structure import Identifiable, ARObject
|
|
14
|
+
from .ar_ref import TRefType
|
|
15
|
+
from .ar_ref import RefType
|
|
16
|
+
from .m2.autosar_templates.sw_component_template.data_type.data_prototypes import ParameterDataPrototype, VariableDataPrototype
|
|
16
17
|
from .m2.autosar_templates.common_structure import ValueSpecification
|
|
17
18
|
|
|
18
19
|
class AbstractEvent(Identifiable):
|
|
@@ -333,60 +334,7 @@ class SwcInternalBehavior(InternalBehavior):
|
|
|
333
334
|
def getRunnableEntity(self, short_name) -> RunnableEntity:
|
|
334
335
|
return self.elements[short_name]
|
|
335
336
|
|
|
336
|
-
class PortGroup(Identifiable):
|
|
337
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
338
|
-
super().__init__(parent, short_name)
|
|
339
|
-
|
|
340
|
-
self._inner_group_iref = [] # type: List[InnerPortGroupInCompositionInstanceRef]
|
|
341
|
-
self._outer_port_ref = [] # type: List[RefType]
|
|
342
337
|
|
|
343
|
-
def addInnerGroupIRef(self, iref: InnerPortGroupInCompositionInstanceRef):
|
|
344
|
-
self._inner_group_iref.append(iref)
|
|
345
|
-
|
|
346
|
-
def getInnerGroupIRefs(self) -> List[InnerPortGroupInCompositionInstanceRef]:
|
|
347
|
-
return self._inner_group_iref
|
|
348
|
-
|
|
349
|
-
def addOuterPortRef(self, ref: RefType):
|
|
350
|
-
self._outer_port_ref.append(ref)
|
|
351
|
-
|
|
352
|
-
def getOuterPortRefs(self) -> List[RefType]:
|
|
353
|
-
return self._outer_port_ref
|
|
354
|
-
|
|
355
|
-
class SwComponentType(ARElement):
|
|
356
|
-
__metaclass__ = ABCMeta
|
|
357
|
-
|
|
358
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
359
|
-
super().__init__(parent, short_name)
|
|
360
|
-
|
|
361
|
-
def createPPortPrototype(self, short_name: str) -> PPortPrototype:
|
|
362
|
-
prototype = PPortPrototype(self, short_name)
|
|
363
|
-
if (short_name not in self.elements):
|
|
364
|
-
self.elements[short_name] = prototype
|
|
365
|
-
return self.elements[short_name]
|
|
366
|
-
|
|
367
|
-
def createRPortPrototype(self, short_name) -> RPortPrototype:
|
|
368
|
-
prototype = RPortPrototype(self, short_name)
|
|
369
|
-
if (short_name not in self.elements):
|
|
370
|
-
self.elements[short_name] = prototype
|
|
371
|
-
return self.elements[short_name]
|
|
372
|
-
|
|
373
|
-
def createPortGroup(self, short_name) -> PortGroup:
|
|
374
|
-
port_group = PortGroup(self, short_name)
|
|
375
|
-
if (short_name not in self.elements):
|
|
376
|
-
self.elements[short_name] = port_group
|
|
377
|
-
return self.elements[short_name]
|
|
378
|
-
|
|
379
|
-
def getPPortPrototypes(self) -> List[PPortPrototype]:
|
|
380
|
-
return list(sorted(filter(lambda c: isinstance(c, PPortPrototype), self.elements.values()), key= lambda o: o.short_name))
|
|
381
|
-
|
|
382
|
-
def getRPortPrototypes(self) -> List[RPortPrototype]:
|
|
383
|
-
return list(sorted(filter(lambda c: isinstance(c, RPortPrototype), self.elements.values()), key= lambda o: o.short_name))
|
|
384
|
-
|
|
385
|
-
def getPortPrototypes(self) -> List[PortPrototype]:
|
|
386
|
-
return list(sorted(filter(lambda c: isinstance(c, PortPrototype), self.elements.values()), key= lambda o: o.short_name))
|
|
387
|
-
|
|
388
|
-
def getPortGroups(self) -> List[PortGroup]:
|
|
389
|
-
return list(sorted(filter(lambda c: isinstance(c, PortGroup), self.elements.values()), key= lambda o: o.short_name))
|
|
390
338
|
|
|
391
339
|
class AtomicSwComponentType(SwComponentType):
|
|
392
340
|
__metaclass__ = ABCMeta
|
|
@@ -434,89 +382,4 @@ class ServiceSwComponentType(AtomicSwComponentType):
|
|
|
434
382
|
def __init__(self, parent: ARObject, short_name: str):
|
|
435
383
|
super().__init__(parent, short_name)
|
|
436
384
|
|
|
437
|
-
class SwConnector(Identifiable):
|
|
438
|
-
__metaclass__ = ABCMeta
|
|
439
|
-
|
|
440
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
441
|
-
super().__init__(parent, short_name)
|
|
442
|
-
|
|
443
|
-
self.mapping_ref = None # type: RefType
|
|
444
|
-
|
|
445
|
-
class AssemblySwConnector(SwConnector):
|
|
446
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
447
|
-
super().__init__(parent, short_name)
|
|
448
|
-
|
|
449
|
-
self.provider_iref = None # type: PPortInCompositionInstanceRef
|
|
450
|
-
self.requester_iref = None # type: RPortInCompositionInstanceRef
|
|
451
|
-
|
|
452
|
-
class DelegationSwConnector(SwConnector):
|
|
453
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
454
|
-
super().__init__(parent, short_name)
|
|
455
|
-
|
|
456
|
-
self.inner_port_iref = None # type: PortInCompositionTypeInstanceRef
|
|
457
|
-
self.outer_port_ref = None # type: RefType
|
|
458
|
-
|
|
459
|
-
class PassThroughSwConnector(SwConnector):
|
|
460
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
461
|
-
super().__init__(parent, short_name)
|
|
462
|
-
|
|
463
|
-
self.provided_outer_port_ref = None # type: RefType
|
|
464
|
-
self.required_outer_port_ref = None # type: RefType
|
|
465
|
-
|
|
466
|
-
class SwComponentPrototype(Identifiable):
|
|
467
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
468
|
-
super().__init__(parent, short_name)
|
|
469
|
-
|
|
470
|
-
self.type_tref = RefType()
|
|
471
|
-
|
|
472
|
-
class CompositionSwComponentType(SwComponentType):
|
|
473
|
-
def __init__(self, parent: ARObject, short_name: str):
|
|
474
|
-
super().__init__(parent, short_name)
|
|
475
|
-
|
|
476
|
-
self.constant_value_mapping_refs = [] # type: List[RefType]
|
|
477
|
-
self._data_type_mapping_refs = [] # type: List[RefType]
|
|
478
|
-
self.instantiation_rte_event_props = [] # type: List[InstantiationRTEEventProps]
|
|
479
|
-
|
|
480
|
-
def removeAllAssemblySwConnector(self):
|
|
481
|
-
for sw_connector in self.getAssemblySwConnectors():
|
|
482
|
-
self.elements.pop(sw_connector.short_name)
|
|
483
|
-
|
|
484
|
-
def removeAllDelegationSwConnector(self):
|
|
485
|
-
for sw_connector in self.getDelegationSwConnectors():
|
|
486
|
-
self.elements.pop(sw_connector.short_name)
|
|
487
|
-
|
|
488
|
-
def createAssemblySwConnector(self, short_name: str) -> AssemblySwConnector:
|
|
489
|
-
if (short_name not in self.elements):
|
|
490
|
-
connector = AssemblySwConnector(self, short_name)
|
|
491
|
-
self.elements[short_name] = connector
|
|
492
|
-
return self.elements[short_name]
|
|
493
|
-
|
|
494
|
-
def createDelegationSwConnector(self, short_name: str) -> DelegationSwConnector:
|
|
495
|
-
if short_name not in self.elements:
|
|
496
|
-
connector = DelegationSwConnector(self, short_name)
|
|
497
|
-
self.elements[short_name] = connector
|
|
498
|
-
return self.elements[short_name]
|
|
499
|
-
|
|
500
|
-
def getAssemblySwConnectors(self) -> List[AssemblySwConnector]:
|
|
501
|
-
return list(sorted(filter(lambda e: isinstance(e, AssemblySwConnector), self.elements.values()), key = lambda c: c.short_name))
|
|
502
|
-
|
|
503
|
-
def getDelegationSwConnectors(self) -> List[DelegationSwConnector]:
|
|
504
|
-
return list(sorted(filter(lambda e: isinstance(e, DelegationSwConnector), self.elements.values()), key = lambda c: c.short_name))
|
|
505
|
-
|
|
506
|
-
def getSwConnectors(self) -> List[SwConnector]:
|
|
507
|
-
return list(sorted(filter(lambda e: isinstance(e, SwConnector), self.elements.values()), key = lambda c: c.short_name))
|
|
508
|
-
|
|
509
|
-
def createSwComponentPrototype(self, short_name: str) -> SwComponentPrototype:
|
|
510
|
-
if (short_name not in self.elements):
|
|
511
|
-
connector = SwComponentPrototype(self, short_name)
|
|
512
|
-
self.elements[short_name] = connector
|
|
513
|
-
return self.elements[short_name]
|
|
514
|
-
|
|
515
|
-
def getSwComponentPrototypes(self) -> List[SwComponentPrototype]:
|
|
516
|
-
return list(filter(lambda e: isinstance(e, SwComponentPrototype), self.elements.values()))
|
|
517
|
-
|
|
518
|
-
def addDataTypeMapping(self, data_type_mapping_ref: RefType):
|
|
519
|
-
self._data_type_mapping_refs.append(data_type_mapping_ref)
|
|
520
385
|
|
|
521
|
-
def getDataTypeMappings(self) -> List[RefType]:
|
|
522
|
-
return self._data_type_mapping_refs
|
armodel/parser/__init__.py
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
from .arxml_parser import ARXMLParser
|
|
1
|
+
from .arxml_parser import ARXMLParser
|
|
2
|
+
from .file_parser import FileListParser
|
|
@@ -7,7 +7,7 @@ import re
|
|
|
7
7
|
import logging
|
|
8
8
|
import xml.etree.ElementTree as ET
|
|
9
9
|
|
|
10
|
-
from ..models.
|
|
10
|
+
from ..models.m2.autosar_templates.autosar_top_level_structure import AUTOSAR
|
|
11
11
|
from ..models.ar_ref import RefType
|
|
12
12
|
from ..models.ar_object import ARBoolean, ARFloat, ARLiteral, ARNumerical, ARObject
|
|
13
13
|
from ..models.general_structure import Limit
|