armodel 1.5.0__py3-none-any.whl → 1.6.1__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 (96) hide show
  1. armodel/cli/arxml_dump_cli.py +13 -13
  2. armodel/cli/memory_section_cli.py +76 -0
  3. armodel/cli/system_signal_cli.py +74 -0
  4. armodel/data_models/sw_connector.py +3 -3
  5. armodel/lib/__init__.py +2 -1
  6. armodel/lib/system_signal.py +37 -0
  7. armodel/models/__init__.py +9 -4
  8. armodel/models/annotation.py +27 -3
  9. armodel/models/ar_object.py +18 -6
  10. armodel/models/ar_package.py +271 -127
  11. armodel/models/ar_ref.py +11 -166
  12. armodel/models/bsw_module_template.py +37 -14
  13. armodel/models/common_structure.py +91 -174
  14. armodel/models/communication.py +2 -2
  15. armodel/models/data_prototype.py +41 -6
  16. armodel/models/datatype.py +16 -74
  17. armodel/models/end_to_end_protection.py +1 -1
  18. armodel/models/fibex/can_communication.py +119 -3
  19. armodel/models/fibex/fibex_4_can/__init__.py +0 -0
  20. armodel/models/fibex/fibex_4_lin/__init__.py +0 -0
  21. armodel/models/fibex/fibex_4_multiplatform.py +81 -88
  22. armodel/models/fibex/fibex_core/__init__.py +0 -0
  23. armodel/models/fibex/fibex_core/core_communication.py +627 -0
  24. armodel/models/fibex/fibex_core/core_topology.py +180 -0
  25. armodel/models/fibex/lin_communication.py +24 -3
  26. armodel/models/general_structure.py +110 -11
  27. armodel/models/internal_behavior.py +1 -1
  28. armodel/models/m2/__init__.py +0 -0
  29. armodel/models/m2/autosar_templates/__init__.py +0 -0
  30. armodel/models/m2/autosar_templates/common_structure/__init__.py +188 -0
  31. armodel/models/m2/autosar_templates/common_structure/constants.py +0 -0
  32. armodel/models/m2/autosar_templates/common_structure/implementation.py +21 -0
  33. armodel/models/m2/autosar_templates/common_structure/implementation_data_types.py +148 -0
  34. armodel/models/m2/autosar_templates/ecuc_description_template.py +269 -0
  35. armodel/models/m2/autosar_templates/generic_structure/__init__.py +0 -0
  36. armodel/models/m2/autosar_templates/generic_structure/abstract_structure.py +69 -0
  37. armodel/models/m2/autosar_templates/sw_component_template/__init__.py +0 -0
  38. armodel/models/m2/autosar_templates/sw_component_template/communication.py +360 -0
  39. armodel/models/m2/autosar_templates/sw_component_template/components/__init__.py +246 -0
  40. armodel/models/m2/autosar_templates/sw_component_template/components/instance_refs.py +181 -0
  41. armodel/models/m2/autosar_templates/sw_component_template/composition/__init__.py +154 -0
  42. armodel/models/m2/autosar_templates/sw_component_template/composition/instance_refs.py +157 -0
  43. armodel/models/m2/autosar_templates/sw_component_template/data_type/__init__.py +0 -0
  44. armodel/models/m2/autosar_templates/sw_component_template/data_type/data_prototypes.py +104 -0
  45. armodel/models/m2/autosar_templates/sw_component_template/port_interface/__init__.py +243 -0
  46. armodel/models/m2/autosar_templates/sw_component_template/port_interface/instance_refs.py +39 -0
  47. armodel/models/m2/autosar_templates/sw_component_template/port_interface.py +236 -0
  48. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/__init__.py +203 -0
  49. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/access_count.py +13 -0
  50. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/data_elements.py +46 -0
  51. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/instance_refs_usage.py +169 -0
  52. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/mode_declaration_group.py +38 -0
  53. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/server_call.py +27 -0
  54. armodel/models/m2/autosar_templates/sw_component_template/swc_internal_behavior/trigger.py +10 -0
  55. armodel/models/m2/autosar_templates/system_template/__init__.py +321 -0
  56. armodel/models/m2/autosar_templates/system_template/data_mapping.py +88 -0
  57. armodel/models/m2/autosar_templates/system_template/instance_refs.py +48 -0
  58. armodel/models/m2/autosar_templates/system_template/network_management.py +554 -0
  59. armodel/models/m2/autosar_templates/system_template/transport_protocols.py +7 -0
  60. armodel/models/m2/msr/__init__.py +0 -0
  61. armodel/models/m2/msr/asam_hdo/__init__.py +0 -0
  62. armodel/models/m2/msr/asam_hdo/units.py +105 -0
  63. armodel/models/m2/msr/data_dictionary/__init__.py +0 -0
  64. armodel/models/m2/msr/data_dictionary/auxillary_objects.py +42 -0
  65. armodel/models/m2/msr/data_dictionary/data_def_properties.py +295 -0
  66. armodel/models/m2/msr/documentation/__init__.py +0 -0
  67. armodel/models/m2/msr/documentation/block_elements.py +18 -0
  68. armodel/models/m2_msr.py +1 -0
  69. armodel/models/multilanguage_data.py +15 -0
  70. armodel/models/per_instance_memory.py +34 -6
  71. armodel/models/port_prototype.py +2 -253
  72. armodel/models/service_needs.py +3 -1
  73. armodel/models/sw_component.py +19 -358
  74. armodel/parser/__init__.py +2 -1
  75. armodel/parser/abstract_arxml_parser.py +10 -1
  76. armodel/parser/arxml_parser.py +912 -229
  77. armodel/parser/file_parser.py +43 -0
  78. armodel/tests/test_armodel/models/test_ar_package.py +6 -3
  79. armodel/tests/test_armodel/models/test_ar_ref.py +18 -16
  80. armodel/tests/test_armodel/models/test_bsw_module_template.py +5 -5
  81. armodel/tests/test_armodel/models/test_common_structure.py +8 -7
  82. armodel/tests/test_armodel/models/test_data_dictionary.py +5 -5
  83. armodel/tests/test_armodel/models/test_data_prototype.py +2 -2
  84. armodel/tests/test_armodel/models/test_datatype.py +9 -9
  85. armodel/tests/test_armodel/models/test_port_interface.py +2 -2
  86. armodel/tests/test_armodel/parser/test_parse_bswmd.py +3 -3
  87. armodel/tests/test_armodel/parser/test_sw_components.py +3 -3
  88. armodel/writer/abstract_arxml_writer.py +5 -1
  89. armodel/writer/arxml_writer.py +870 -224
  90. {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/METADATA +28 -1
  91. armodel-1.6.1.dist-info/RECORD +140 -0
  92. {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/entry_points.txt +3 -1
  93. armodel-1.5.0.dist-info/RECORD +0 -91
  94. {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/LICENSE +0 -0
  95. {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/WHEEL +0 -0
  96. {armodel-1.5.0.dist-info → armodel-1.6.1.dist-info}/top_level.txt +0 -0
@@ -2,9 +2,9 @@ import getopt
2
2
  import sys
3
3
  import logging
4
4
 
5
- from ..models import AUTOSAR, ARPackage, AtomicSwComponentType, VariableAccess, SwComponentType, DataTypeMappingSet
5
+ from ..models import AUTOSAR, ARPackage, VariableAccess, SwComponentType, DataTypeMappingSet
6
6
  from ..models import SwcInternalBehavior, ImplementationDataType
7
- from ..models import BswModuleDescription, BswEvent, BswInternalBehavior, BswModuleEntity, BswModuleEntry
7
+ from ..models import BswModuleDescription, BswInternalBehavior, BswModuleEntity, BswModuleEntry
8
8
  from ..models import PortPrototype, RPortPrototype, PPortPrototype
9
9
  from ..models import SenderReceiverInterface, ClientServerInterface
10
10
  from ..parser import ARXMLParser
@@ -21,26 +21,26 @@ def show_port(indent:int, port_prototype: PortPrototype):
21
21
  if (isinstance(port_prototype, RPortPrototype)):
22
22
  print("%s-RPort: %s (%s)" % (" " * indent, port_prototype.short_name, port_prototype.required_interface_tref.value))
23
23
  for client_com_spec in port_prototype.getClientComSpecs():
24
- print("%s : %s (ClientComSpec)" % (" " * (indent + 2), client_com_spec.operation_ref.value))
24
+ print("%s : %s (ClientComSpec)" % (" " * (indent + 2), client_com_spec.operationRef.value))
25
25
  for com_spec in port_prototype.getNonqueuedReceiverComSpecs():
26
- print("%s : %s (NonqueuedReceiverComSpec)" % (" " * (indent + 2), com_spec.data_element_ref.value))
26
+ print("%s : %s (NonqueuedReceiverComSpec)" % (" " * (indent + 2), com_spec.dataElementRef.value))
27
27
  elif (isinstance(port_prototype, PPortPrototype)):
28
28
  print("%s-PPort: %s (%s)" % (" " * indent, port_prototype.short_name, port_prototype.provided_interface_tref.value))
29
29
  for com_spec in port_prototype.getNonqueuedSenderComSpecs():
30
- print("%s : %s (NonqueuedSenderComSpec)" % (" " * (indent + 2), com_spec.data_element_ref.value))
30
+ print("%s : %s (NonqueuedSenderComSpec)" % (" " * (indent + 2), com_spec.dataElementRef.value))
31
31
  else:
32
32
  raise ValueError("Unsupported Port prototype")
33
33
 
34
34
  def show_type(indent: int, data_type: ImplementationDataType):
35
35
  print("%s-Implementation Type: %s (%s)" % (" " * indent, data_type.short_name, data_type._parent.full_name))
36
36
  print("%s : %s" % (" " * indent, data_type.category))
37
- if (data_type.sw_data_def_props != None):
38
- if (data_type.sw_data_def_props.baseTypeRef != None):
39
- base_type_ref = data_type.sw_data_def_props.baseTypeRef
37
+ if (data_type.swDataDefProps != None):
38
+ if (data_type.swDataDefProps.baseTypeRef != None):
39
+ base_type_ref = data_type.swDataDefProps.baseTypeRef
40
40
  print("%s : %s (%s)" % (" " * indent, base_type_ref.value, base_type_ref.dest))
41
41
 
42
- if (data_type.sw_data_def_props.implementationDataTypeRef != None):
43
- implementation_data_type_ref = data_type.sw_data_def_props.implementationDataTypeRef
42
+ if (data_type.swDataDefProps.implementationDataTypeRef != None):
43
+ implementation_data_type_ref = data_type.swDataDefProps.implementationDataTypeRef
44
44
  print("%s : %s (%s)" % (" " * indent, implementation_data_type_ref.value, implementation_data_type_ref.dest))
45
45
 
46
46
  def show_data_type_mapping(indent: int, mapping_set: DataTypeMappingSet):
@@ -92,7 +92,7 @@ def show_client_server_interface(indent: int, cs_interface: ClientServerInterfac
92
92
  print("%sOperation:%s" % (" " * (indent + 2), operation.short_name))
93
93
  for argument in operation.getArgumentDataPrototypes():
94
94
  print("%s :%s (%s: %s)" % (" " * (indent + 2), argument.short_name,
95
- argument.direction, argument.type_tref.value))
95
+ argument.direction, argument.typeTRef.value))
96
96
 
97
97
  def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
98
98
  document = AUTOSAR.getInstance()
@@ -107,8 +107,8 @@ def show_bsw_internal_behavior(indent: int, behavior: BswInternalBehavior):
107
107
  print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEventRef", event.startsOnEventRef.value))
108
108
  starts_on_event = document.find(event.startsOnEventRef.value) # type: BswModuleEntity
109
109
  print("%s-%s: %s" % (" " * (indent + 4), "StartsOnEvent", starts_on_event.short_name))
110
- print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntryRef", starts_on_event.implemented_entry_ref.value))
111
- implemented_entry = document.find(starts_on_event.implemented_entry_ref.value) # type: BswModuleEntry
110
+ print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntryRef", starts_on_event.implementedEntryRef.value))
111
+ implemented_entry = document.find(starts_on_event.implementedEntryRef.value) # type: BswModuleEntry
112
112
  print("%s-%s: %s" % (" " * (indent + 4), "ImplementedEntry", implemented_entry.short_name))
113
113
  print("%s-%s: %d" % (" " * (indent + 6), "Service Id", implemented_entry.service_id))
114
114
 
@@ -0,0 +1,76 @@
1
+ import argparse
2
+ import pkg_resources
3
+ import logging
4
+ import sys
5
+ import os.path
6
+
7
+ from armodel import AUTOSAR
8
+ from armodel.parser import ARXMLParser
9
+ from ..lib import InputFileParser, SystemSignalAnalyzer
10
+
11
+ def main():
12
+ version = pkg_resources.require("armodel")[0].version
13
+
14
+ ap = argparse.ArgumentParser()
15
+ ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
16
+ ap.add_argument("-f", "--format", required= False, help= "Specify the short or long name of Sw-C. [short|long]")
17
+
18
+ ap.add_argument("INPUT", help = "The path of AUTOSAR XML", nargs='+')
19
+ ap.add_argument("")
20
+
21
+ args = ap.parse_args()
22
+
23
+ logger = logging.getLogger()
24
+
25
+ formatter = logging.Formatter('[%(levelname)s] : %(message)s')
26
+
27
+ stdout_handler = logging.StreamHandler(sys.stderr)
28
+ stdout_handler.setFormatter(formatter)
29
+
30
+ #base_path = os.path.dirname(args.Output)
31
+ log_file = os.path.join(".", 'system-signals.log')
32
+
33
+ if os.path.exists(log_file):
34
+ os.remove(log_file)
35
+
36
+ file_handler = logging.FileHandler(log_file)
37
+ file_handler.setFormatter(formatter)
38
+
39
+ logger.setLevel(logging.DEBUG)
40
+ file_handler.setLevel(logging.DEBUG)
41
+
42
+ if args.verbose:
43
+ stdout_handler.setLevel(logging.DEBUG)
44
+
45
+ else:
46
+ stdout_handler.setLevel(logging.INFO)
47
+
48
+ logger.addHandler(file_handler)
49
+ logger.addHandler(stdout_handler)
50
+
51
+ try:
52
+ parser = InputFileParser(args.INPUT)
53
+ filenames = parser.parse()
54
+
55
+ document = AUTOSAR().getInstance()
56
+ parser = ARXMLParser({'warning': True})
57
+
58
+ format = "short"
59
+ if args.format is not None and args.format.lower() == "long":
60
+ format = "long"
61
+
62
+ for filename in filenames:
63
+ parser.load(filename, document)
64
+
65
+ analyzer = SystemSignalAnalyzer()
66
+ analyzer.import_data(document)
67
+ analyzer.print_out({
68
+ 'format': format,
69
+ })
70
+
71
+ except Exception as e:
72
+ print(e)
73
+ #raise e
74
+
75
+ if __name__ == "__main__":
76
+ main()
@@ -0,0 +1,74 @@
1
+ import argparse
2
+ import pkg_resources
3
+ import logging
4
+ import sys
5
+ import os.path
6
+
7
+ from armodel import AUTOSAR
8
+ from armodel.parser import ARXMLParser
9
+ from ..lib import InputFileParser, SystemSignalAnalyzer
10
+
11
+ def main():
12
+ version = pkg_resources.require("armodel")[0].version
13
+
14
+ ap = argparse.ArgumentParser()
15
+ ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
16
+ ap.add_argument("-f", "--format", required= False, help= "Specify the name format of SW-C. [short|full]")
17
+ ap.add_argument("INPUT", help = "The path of AUTOSAR XML", nargs='+')
18
+
19
+ args = ap.parse_args()
20
+
21
+ logger = logging.getLogger()
22
+
23
+ formatter = logging.Formatter('[%(levelname)s] : %(message)s')
24
+
25
+ stdout_handler = logging.StreamHandler(sys.stderr)
26
+ stdout_handler.setFormatter(formatter)
27
+
28
+ #base_path = os.path.dirname(args.Output)
29
+ log_file = os.path.join(".", 'system-signals.log')
30
+
31
+ if os.path.exists(log_file):
32
+ os.remove(log_file)
33
+
34
+ file_handler = logging.FileHandler(log_file)
35
+ file_handler.setFormatter(formatter)
36
+
37
+ logger.setLevel(logging.DEBUG)
38
+ file_handler.setLevel(logging.DEBUG)
39
+
40
+ if args.verbose:
41
+ stdout_handler.setLevel(logging.DEBUG)
42
+
43
+ else:
44
+ stdout_handler.setLevel(logging.INFO)
45
+
46
+ logger.addHandler(file_handler)
47
+ logger.addHandler(stdout_handler)
48
+
49
+ try:
50
+ parser = InputFileParser(args.INPUT)
51
+ filenames = parser.parse()
52
+
53
+ document = AUTOSAR().getInstance()
54
+ parser = ARXMLParser({'warning': True})
55
+
56
+ format = "short"
57
+ if args.format is not None and args.format.lower() == "full":
58
+ format = "full"
59
+
60
+ for filename in filenames:
61
+ parser.load(filename, document)
62
+
63
+ analyzer = SystemSignalAnalyzer()
64
+ analyzer.import_data(document)
65
+ analyzer.print_out({
66
+ 'format': format,
67
+ })
68
+
69
+ except Exception as e:
70
+ print(e)
71
+ #raise e
72
+
73
+ if __name__ == "__main__":
74
+ main()
@@ -17,6 +17,6 @@ class AssemblySwConnectorData(SwConnectorData):
17
17
  super().__init__()
18
18
 
19
19
  self.provider_swc= ""
20
- self.pport = ""
21
- self.requester_swc = ""
22
- self.rport = ""
20
+ self.p_port = ""
21
+ self.r_swc = ""
22
+ self.r_port = ""
armodel/lib/__init__.py CHANGED
@@ -1,3 +1,4 @@
1
1
 
2
2
  from .cli_args_parser import InputFileParser
3
- from .sw_component import SwComponentAnalyzer
3
+ from .sw_component import SwComponentAnalyzer
4
+ from .system_signal import SystemSignalAnalyzer
@@ -0,0 +1,37 @@
1
+ import logging
2
+ from typing import List
3
+
4
+ from ..models.ar_package import AUTOSAR, ARPackage
5
+ from ..models.fibex.fibex_core.core_communication import SystemSignal
6
+
7
+ class SystemSignalAnalyzer:
8
+ def __init__(self) -> None:
9
+ self.system_signals = [] # type: List[SystemSignal]
10
+
11
+ def add_system_signal(self, signal: SystemSignal):
12
+ self.system_signals.append(signal)
13
+
14
+ def get_system_signals(self) -> List[SystemSignal]:
15
+ return self.system_signals
16
+
17
+ def parse_pkg(self, parent: ARPackage):
18
+ for pkg in parent.getARPackages():
19
+ self.parse_pkg(pkg)
20
+ for signal in parent.getSystemSignals():
21
+
22
+ self.add_system_signal(signal)
23
+
24
+ def import_data(self, document: AUTOSAR):
25
+ for pkg in document.getARPackages():
26
+ self.parse_pkg(pkg)
27
+
28
+ def print_out(self, option = {}):
29
+ logger = logging.getLogger()
30
+
31
+ logger.info("== SYSTEM SIGNAL LIST ==")
32
+
33
+ for signal in sorted(self.system_signals, key = lambda o: o.short_name):
34
+ if option['format'] == 'full':
35
+ logger.info("%s" % signal.full_name)
36
+ else:
37
+ logger.info("%s" % signal.short_name)
@@ -7,13 +7,18 @@ from .ar_package import *
7
7
  from .ar_ref import *
8
8
  from .datatype import *
9
9
  from .port_prototype import *
10
- from .data_prototype import *
11
- from .data_dictionary import *
12
- from .port_interface import *
10
+ from .m2.autosar_templates.sw_component_template.data_type.data_prototypes import *
11
+ from .m2.msr.asam_hdo.units import *
12
+ from .m2.msr.data_dictionary.data_def_properties import *
13
+ from .m2.msr.data_dictionary.auxillary_objects import *
14
+ from .m2.autosar_templates.sw_component_template.port_interface import *
13
15
  from .m2_msr import *
14
16
  from .implementation import *
15
17
  from .bsw_module_template import *
16
18
  from .communication import *
17
19
  from .calibration import *
18
20
  from .global_constraints import *
19
- from .unit import *
21
+ from .m2.msr.asam_hdo.units import *
22
+ from .m2.autosar_templates.sw_component_template import *
23
+ from .m2.autosar_templates.sw_component_template.components import *
24
+ from .m2.autosar_templates.sw_component_template.composition import *
@@ -1,8 +1,9 @@
1
1
 
2
2
  from abc import ABCMeta
3
3
 
4
+ from .m2.msr.documentation.block_elements import DocumentationBlock
4
5
  from .multilanguage_data import MultilanguageLongName
5
- from .ar_object import ARObject
6
+ from .ar_object import ARLiteral, ARObject
6
7
 
7
8
 
8
9
  class GeneralAnnotation(ARObject, metaclass=ABCMeta):
@@ -10,10 +11,33 @@ class GeneralAnnotation(ARObject, metaclass=ABCMeta):
10
11
  if type(self) == ARObject:
11
12
  raise NotImplementedError("GeneralAnnotation is an abstract class.")
12
13
 
13
- self.label = None # type: MultilanguageLongName
14
-
15
14
  super().__init__()
16
15
 
16
+ self.annotationOrigin = None # type: ARLiteral
17
+ self.annotationText = None # type: DocumentationBlock
18
+ self.label = None # type: MultilanguageLongName
19
+
20
+ def getAnnotationOrigin(self) -> ARLiteral:
21
+ return self.annotationOrigin
22
+
23
+ def setAnnotationOrigin(self, value: ARLiteral):
24
+ self.annotationOrigin = value
25
+ return self
26
+
27
+ def getAnnotationText(self) -> DocumentationBlock:
28
+ return self.annotationText
29
+
30
+ def setAnnotationText(self, value: DocumentationBlock):
31
+ self.annotationText = value
32
+ return self
33
+
34
+ def getLabel(self) -> MultilanguageLongName:
35
+ return self.label
36
+
37
+ def setLabel(self, value: MultilanguageLongName):
38
+ self.label = value
39
+ return self
40
+
17
41
  class Annotation(GeneralAnnotation):
18
42
  def __init__(self):
19
43
  super().__init__()
@@ -73,10 +73,21 @@ class ARNumerical(ARType):
73
73
  self._text = None # type: str
74
74
 
75
75
  def _convertStringToNumberValue(self, value: str) -> int:
76
- m = re.match(r"0x([0-9a-f]+)", value, re.I)
77
- if (m):
78
- return int(m.group(1), 16)
79
- return int(value)
76
+ try:
77
+ if value == 'true':
78
+ return 1
79
+ elif value == 'false':
80
+ return 0
81
+ else:
82
+ m = re.match(r"0x([0-9a-f]+)", value, re.I)
83
+ if m:
84
+ return int(m.group(1), 16)
85
+ m = re.match(r"-?\d+\.\d+", value)
86
+ if m:
87
+ return float(value)
88
+ return int(value)
89
+ except:
90
+ raise ValueError("Invalid Numerical Type <%s>" % value)
80
91
 
81
92
  @property
82
93
  def value(self) -> int:
@@ -118,7 +129,7 @@ class ARPositiveInteger(ARNumerical):
118
129
  else:
119
130
  raise ValueError("Unsupported Type <%s>", type(val))
120
131
 
121
- class ARFloat(ARType):
132
+ class ARFloat(ARNumerical):
122
133
  def __init__(self) -> None:
123
134
  super().__init__()
124
135
 
@@ -136,7 +147,8 @@ class ARFloat(ARType):
136
147
  self._value = val * 1.0
137
148
  elif isinstance(val, str):
138
149
  self._text = val
139
- self._value = float(val)
150
+ #self._value = float(val)
151
+ self._value = self._convertStringToNumberValue(val)
140
152
  else:
141
153
  raise ValueError("Unsupported Type <%s>", type(val))
142
154