Code Duplication    Length = 18-19 lines in 2 locations

asyncua/common/manage_nodes.py 2 locations

@@ 100-118 (lines=19) @@
97
    )
98
99
100
async def create_variable(parent, nodeid, bname, val, varianttype=None, datatype=None):
101
    """
102
    create a child node variable
103
    args are nodeid, browsename, value, [variant type], [data type]
104
    or idx, name, value, [variant type], [data type]
105
    """
106
    status = _check_browsename_exist(parent, bname)
107
    if status is not None:
108
        return status
109
    nodeid, qname = _parse_nodeid_qname(nodeid, bname)
110
    var = ua.Variant(val, varianttype)
111
    if datatype and isinstance(datatype, int):
112
        datatype = ua.NodeId(datatype, 0)
113
    if datatype and not isinstance(datatype, ua.NodeId):
114
        raise RuntimeError("datatype argument must be a nodeid or an int refering to a nodeid")
115
116
    return make_node(
117
        parent.server,
118
        await _create_variable(parent.server, parent.nodeid, nodeid, qname, var, datatype=datatype, isproperty=False)
119
    )
120
121
@@ 79-96 (lines=18) @@
76
        )
77
78
79
async def create_property(parent, nodeid, bname, val, varianttype=None, datatype=None):
80
    """
81
    create a child node property
82
    args are nodeid, browsename, value, [variant type]
83
    or idx, name, value, [variant type]
84
    """
85
    status = _check_browsename_exist(parent, bname)
86
    if status is not None:
87
        return status
88
    nodeid, qname = _parse_nodeid_qname(nodeid, bname)
89
    var = ua.Variant(val, varianttype)
90
    if datatype and isinstance(datatype, int):
91
        datatype = ua.NodeId(datatype, 0)
92
    if datatype and not isinstance(datatype, ua.NodeId):
93
        raise RuntimeError("datatype argument must be a nodeid or an int refering to a nodeid")
94
    return make_node(
95
        parent.server,
96
        await _create_variable(parent.server, parent.nodeid, nodeid, qname, var, datatype=datatype, isproperty=True)
97
    )
98
99