Code Duplication    Length = 17-18 lines in 2 locations

opcua/common/xmlimporter.py 2 locations

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