Code Duplication    Length = 17-18 lines in 2 locations

opcua/common/xmlimporter.py 2 locations

@@ 113-130 (lines=18) @@
110
        self.server.add_nodes([node])
111
        self._add_refs(obj)
112
113
    def _add_variable_value(self, obj):
114
        """
115
        Returns the value for a Variable based on the objects valuetype. 
116
        """
117
        if obj.valuetype == 'ListOfLocalizedText':
118
            return ua.Variant([ua.LocalizedText(txt) for txt in obj.value], None)
119
        elif obj.valuetype == 'EnumValueType':
120
            values = []
121
            for ev in obj.value:
122
                enum_value = ua.EnumValueType()
123
                enum_value.DisplayName = ua.LocalizedText(ev['DisplayName'])
124
                enum_value.Description = ua.LocalizedText(ev['Description'])
125
                enum_value.Value = int(ev['Value'])
126
                values.append(enum_value)
127
            return values
128
        elif obj.valuetype == 'Argument':
129
            values = []
130
            for arg in obj.value:
131
                argument = ua.Argument()
132
                argument.Name = arg['Name']
133
                argument.Description = ua.LocalizedText(arg['Description'])
@@ 132-148 (lines=17) @@
129
            values = []
130
            for arg in obj.value:
131
                argument = ua.Argument()
132
                argument.Name = arg['Name']
133
                argument.Description = ua.LocalizedText(arg['Description'])
134
                argument.DataType = self.to_nodeid(arg['DataType'])
135
                argument.ValueRank = int(arg['ValueRank'])
136
                argument.ArrayDimensions = arg['ArrayDimensions']
137
                values.append(argument)
138
            return values
139
140
        return ua.Variant(obj.value, getattr(ua.VariantType, obj.valuetype))
141
142
143
    def add_variable_type(self, obj):
144
        node = self._get_node(obj)
145
        attrs = ua.VariableTypeAttributes()
146
        if obj.desc:
147
            attrs.Description = ua.LocalizedText(obj.desc)
148
        attrs.DisplayName = ua.LocalizedText(obj.displayname)
149
        attrs.DataType = self.to_nodeid(obj.datatype)
150
        if obj.value and len(obj.value) == 1:
151
            attrs.Value = obj.value[0]