MCPcopy Create free account
hub / github.com/FreeOpcUa/python-opcua / string_to_val

Function string_to_val

opcua/common/ua_utils.py:82–131  ·  view source on GitHub ↗

Convert back a string to a python or python-opcua object Note: no error checking is done here, supplying null strings could raise exceptions (datetime and guid)

(string, vtype)

Source from the content-addressed store, hash-verified

80
81
82def string_to_val(string, vtype):
83 """
84 Convert back a string to a python or python-opcua object
85 Note: no error checking is done here, supplying null strings could raise exceptions (datetime and guid)
86 """
87 string = string.strip()
88 if string.startswith("["):
89 string = string[1:-1]
90 var = []
91 for s in string.split(","):
92 s = s.strip()
93 val = string_to_val(s, vtype)
94 var.append(val)
95 return var
96
97 if vtype == ua.VariantType.Null:
98 val = None
99 elif vtype == ua.VariantType.Boolean:
100 if string in ("True", "true", "on", "On", "1"):
101 val = True
102 else:
103 val = False
104 elif vtype in (ua.VariantType.SByte, ua.VariantType.Int16, ua.VariantType.Int32, ua.VariantType.Int64):
105 val = int(string)
106 elif vtype in (ua.VariantType.Byte, ua.VariantType.UInt16, ua.VariantType.UInt32, ua.VariantType.UInt64):
107 val = int(string)
108 elif vtype in (ua.VariantType.Float, ua.VariantType.Double):
109 val = float(string)
110 elif vtype == ua.VariantType.XmlElement:
111 val = ua.XmlElement(string)
112 elif vtype == ua.VariantType.String:
113 val = string
114 elif vtype == ua.VariantType.ByteString:
115 val = string.encode()
116 elif vtype in (ua.VariantType.NodeId, ua.VariantType.ExpandedNodeId):
117 val = ua.NodeId.from_string(string)
118 elif vtype == ua.VariantType.QualifiedName:
119 val = ua.QualifiedName.from_string(string)
120 elif vtype == ua.VariantType.DateTime:
121 val = parser.parse(string)
122 elif vtype == ua.VariantType.LocalizedText:
123 val = ua.LocalizedText(string)
124 elif vtype == ua.VariantType.StatusCode:
125 val = ua.StatusCode(string)
126 elif vtype == ua.VariantType.Guid:
127 val = uuid.UUID(string)
128 else:
129 # FIXME: Some types are probably missing!
130 raise NotImplementedError
131 return val
132
133
134def string_to_variant(string, vtype):

Calls 2

from_stringMethod · 0.45
parseMethod · 0.45