mirror of
https://gitlab.com/libvirt/libvirt-python.git
synced 2024-10-26 07:55:06 +03:00
generator: Remove use of 'has_key' function
The code 'XXX.has_key(YYYY)' must be changed to be of the form 'YYY in XXXX' which works in Python2 and 3 As an added complication, if 'YYY in XXX' is used against an object overriding the '__getitem__' method it does not work in Python 2.4. Instead we must use 'YYY in XXX.keys()' Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
ec15ea947b
commit
3ae0a76d88
108
generator.py
108
generator.py
@ -76,11 +76,11 @@ class docParser(xml.sax.handler.ContentHandler):
|
||||
self.function_return = None
|
||||
self.function_file = None
|
||||
self.function_module= None
|
||||
if attrs.has_key('name'):
|
||||
if 'name' in attrs.keys():
|
||||
self.function = attrs['name']
|
||||
if attrs.has_key('file'):
|
||||
if 'file' in attrs.keys():
|
||||
self.function_file = attrs['file']
|
||||
if attrs.has_key('module'):
|
||||
if 'module' in attrs.keys():
|
||||
self.function_module= attrs['module']
|
||||
elif tag == 'cond':
|
||||
self._data = []
|
||||
@ -91,24 +91,24 @@ class docParser(xml.sax.handler.ContentHandler):
|
||||
self.function_arg_name = None
|
||||
self.function_arg_type = None
|
||||
self.function_arg_info = None
|
||||
if attrs.has_key('name'):
|
||||
if 'name' in attrs.keys():
|
||||
self.function_arg_name = attrs['name']
|
||||
if self.function_arg_name == 'from':
|
||||
self.function_arg_name = 'frm'
|
||||
if attrs.has_key('type'):
|
||||
if 'type' in attrs.keys():
|
||||
self.function_arg_type = attrs['type']
|
||||
if attrs.has_key('info'):
|
||||
if 'info' in attrs.keys():
|
||||
self.function_arg_info = attrs['info']
|
||||
elif tag == 'return':
|
||||
if self.in_function == 1:
|
||||
self.function_return_type = None
|
||||
self.function_return_info = None
|
||||
self.function_return_field = None
|
||||
if attrs.has_key('type'):
|
||||
if 'type' in attrs.keys():
|
||||
self.function_return_type = attrs['type']
|
||||
if attrs.has_key('info'):
|
||||
if 'info' in attrs.keys():
|
||||
self.function_return_info = attrs['info']
|
||||
if attrs.has_key('field'):
|
||||
if 'field' in attrs.keys():
|
||||
self.function_return_field = attrs['field']
|
||||
elif tag == 'enum':
|
||||
# enums come from header files, hence virterror.h
|
||||
@ -207,7 +207,7 @@ def lxc_function(name, desc, ret, args, file, module, cond):
|
||||
lxc_functions[name] = (desc, ret, args, file, module, cond)
|
||||
|
||||
def enum(type, name, value):
|
||||
if not enums.has_key(type):
|
||||
if type not in enums:
|
||||
enums[type] = {}
|
||||
if value == 'VIR_TYPED_PARAM_INT':
|
||||
value = 1
|
||||
@ -233,14 +233,14 @@ def enum(type, name, value):
|
||||
enums[type][name] = value
|
||||
|
||||
def lxc_enum(type, name, value):
|
||||
if not lxc_enums.has_key(type):
|
||||
if type not in lxc_enums:
|
||||
lxc_enums[type] = {}
|
||||
if onlyOverrides and name not in lxc_enums[type]:
|
||||
return
|
||||
lxc_enums[type][name] = value
|
||||
|
||||
def qemu_enum(type, name, value):
|
||||
if not qemu_enums.has_key(type):
|
||||
if type not in qemu_enums:
|
||||
qemu_enums[type] = {}
|
||||
if onlyOverrides and name not in qemu_enums[type]:
|
||||
return
|
||||
@ -603,7 +603,7 @@ def print_function_wrapper(module, name, output, export, include):
|
||||
print("failed to get function %s infos" % name)
|
||||
return
|
||||
|
||||
if skipped_modules.has_key(module):
|
||||
if module in skipped_modules:
|
||||
return 0
|
||||
|
||||
if module == "libvirt":
|
||||
@ -637,7 +637,7 @@ def print_function_wrapper(module, name, output, export, include):
|
||||
if arg[1][0:6] == "const ":
|
||||
arg[1] = arg[1][6:]
|
||||
c_args = c_args + " %s %s;\n" % (arg[1], arg[0])
|
||||
if py_types.has_key(arg[1]):
|
||||
if arg[1] in py_types:
|
||||
(f, t, n, c) = py_types[arg[1]]
|
||||
if (f == 'z') and (name in foreign_encoding_args) and (num_bufs == 0):
|
||||
f = 't#'
|
||||
@ -659,9 +659,9 @@ def print_function_wrapper(module, name, output, export, include):
|
||||
c_call = c_call + ", "
|
||||
c_call = c_call + "%s" % (arg[0])
|
||||
else:
|
||||
if skipped_types.has_key(arg[1]):
|
||||
if arg[1] in skipped_types:
|
||||
return 0
|
||||
if unknown_types.has_key(arg[1]):
|
||||
if arg[1] in unknown_types:
|
||||
lst = unknown_types[arg[1]]
|
||||
lst.append(name)
|
||||
else:
|
||||
@ -683,7 +683,7 @@ def print_function_wrapper(module, name, output, export, include):
|
||||
else:
|
||||
c_call = "\n %s(%s);\n" % (name, c_call)
|
||||
ret_convert = " Py_INCREF(Py_None);\n return Py_None;\n"
|
||||
elif py_types.has_key(ret[0]):
|
||||
elif ret[0] in py_types:
|
||||
(f, t, n, c) = py_types[ret[0]]
|
||||
c_return = " %s c_retval;\n" % (ret[0])
|
||||
if file == "python_accessor" and ret[2] is not None:
|
||||
@ -692,16 +692,16 @@ def print_function_wrapper(module, name, output, export, include):
|
||||
c_call = "\n c_retval = %s(%s);\n" % (name, c_call)
|
||||
ret_convert = " py_retval = libvirt_%sWrap((%s) c_retval);\n" % (n,c)
|
||||
ret_convert = ret_convert + " return py_retval;\n"
|
||||
elif py_return_types.has_key(ret[0]):
|
||||
elif ret[0] in py_return_types:
|
||||
(f, t, n, c) = py_return_types[ret[0]]
|
||||
c_return = " %s c_retval;\n" % (ret[0])
|
||||
c_call = "\n c_retval = %s(%s);\n" % (name, c_call)
|
||||
ret_convert = " py_retval = libvirt_%sWrap((%s) c_retval);\n" % (n,c)
|
||||
ret_convert = ret_convert + " return py_retval;\n"
|
||||
else:
|
||||
if skipped_types.has_key(ret[0]):
|
||||
if ret[0] in skipped_types:
|
||||
return 0
|
||||
if unknown_types.has_key(ret[0]):
|
||||
if ret[0] in unknown_types:
|
||||
lst = unknown_types[ret[0]]
|
||||
lst.append(name)
|
||||
else:
|
||||
@ -1254,10 +1254,10 @@ def buildWrappers(module):
|
||||
ctypes.append(type)
|
||||
ctypes_processed[type] = ()
|
||||
for type in list(classes_type.keys()):
|
||||
if ctypes_processed.has_key(type):
|
||||
if type in ctypes_processed:
|
||||
continue
|
||||
tinfo = classes_type[type]
|
||||
if not classes_processed.has_key(tinfo[2]):
|
||||
if tinfo[2] not in classes_processed:
|
||||
classes_list.append(tinfo[2])
|
||||
classes_processed[tinfo[2]] = ()
|
||||
|
||||
@ -1319,7 +1319,7 @@ def buildWrappers(module):
|
||||
if extra is not None:
|
||||
extra.close()
|
||||
|
||||
if function_classes.has_key("None"):
|
||||
if "None" in function_classes:
|
||||
flist = function_classes["None"]
|
||||
flist.sort(functionCompare)
|
||||
oldfile = ""
|
||||
@ -1344,7 +1344,7 @@ def buildWrappers(module):
|
||||
writeDoc(module, name, args, ' ', classes)
|
||||
|
||||
for arg in args:
|
||||
if classes_type.has_key(arg[1]):
|
||||
if arg[1] in classes_type:
|
||||
classes.write(" if %s is None: %s__o = None\n" %
|
||||
(arg[0], arg[0]))
|
||||
classes.write(" else: %s__o = %s%s\n" %
|
||||
@ -1359,17 +1359,17 @@ def buildWrappers(module):
|
||||
if n != 0:
|
||||
classes.write(", ")
|
||||
classes.write("%s" % arg[0])
|
||||
if classes_type.has_key(arg[1]):
|
||||
if arg[1] in classes_type:
|
||||
classes.write("__o")
|
||||
n = n + 1
|
||||
classes.write(")\n")
|
||||
|
||||
if ret[0] != "void":
|
||||
if classes_type.has_key(ret[0]):
|
||||
if ret[0] in classes_type:
|
||||
#
|
||||
# Raise an exception
|
||||
#
|
||||
if functions_noexcept.has_key(name):
|
||||
if name in functions_noexcept:
|
||||
classes.write(" if ret is None:return None\n")
|
||||
else:
|
||||
classes.write(
|
||||
@ -1384,8 +1384,8 @@ def buildWrappers(module):
|
||||
# several things that we can do, depending on the
|
||||
# contents of functions_int_*:
|
||||
elif is_integral_type (ret[0]):
|
||||
if not functions_noexcept.has_key (name):
|
||||
if functions_int_exception_test.has_key (name):
|
||||
if name not in functions_noexcept:
|
||||
if name in functions_int_exception_test:
|
||||
test = functions_int_exception_test[name]
|
||||
else:
|
||||
test = functions_int_default_test
|
||||
@ -1395,8 +1395,8 @@ def buildWrappers(module):
|
||||
classes.write(" return ret\n")
|
||||
|
||||
elif is_python_noninteger_type (ret[0]):
|
||||
if not functions_noexcept.has_key (name):
|
||||
if functions_list_exception_test.has_key (name):
|
||||
if name not in functions_noexcept:
|
||||
if name in functions_list_exception_test:
|
||||
test = functions_list_exception_test[name]
|
||||
else:
|
||||
test = functions_list_default_test
|
||||
@ -1414,11 +1414,11 @@ def buildWrappers(module):
|
||||
if classname == "None":
|
||||
pass
|
||||
else:
|
||||
if classes_ancestor.has_key(classname):
|
||||
if classname in classes_ancestor:
|
||||
classes.write("class %s(%s):\n" % (classname,
|
||||
classes_ancestor[classname]))
|
||||
classes.write(" def __init__(self, _obj=None):\n")
|
||||
if reference_keepers.has_key(classname):
|
||||
if classname in reference_keepers:
|
||||
rlist = reference_keepers[classname]
|
||||
for ref in rlist:
|
||||
classes.write(" self.%s = None\n" % ref[1])
|
||||
@ -1435,7 +1435,7 @@ def buildWrappers(module):
|
||||
classes.write(" def __init__(self, dom, _obj=None):\n")
|
||||
else:
|
||||
classes.write(" def __init__(self, _obj=None):\n")
|
||||
if reference_keepers.has_key(classname):
|
||||
if classname in reference_keepers:
|
||||
rlist = reference_keepers[classname]
|
||||
for ref in rlist:
|
||||
classes.write(" self.%s = None\n" % ref[1])
|
||||
@ -1452,7 +1452,7 @@ def buildWrappers(module):
|
||||
classes.write(" self._conn = dom.connect()\n")
|
||||
classes.write(" self._o = _obj\n\n")
|
||||
destruct=None
|
||||
if classes_destructors.has_key(classname):
|
||||
if classname in classes_destructors:
|
||||
classes.write(" def __del__(self):\n")
|
||||
classes.write(" if self._o is not None:\n")
|
||||
classes.write(" libvirtmod.%s(self._o)\n" %
|
||||
@ -1460,12 +1460,12 @@ def buildWrappers(module):
|
||||
classes.write(" self._o = None\n\n")
|
||||
destruct=classes_destructors[classname]
|
||||
|
||||
if not class_skip_connect_impl.has_key(classname):
|
||||
if classname not in class_skip_connect_impl:
|
||||
# Build python safe 'connect' method
|
||||
classes.write(" def connect(self):\n")
|
||||
classes.write(" return self._conn\n\n")
|
||||
|
||||
if class_domain_impl.has_key(classname):
|
||||
if classname in class_domain_impl:
|
||||
classes.write(" def domain(self):\n")
|
||||
classes.write(" return self._dom\n\n")
|
||||
|
||||
@ -1504,7 +1504,7 @@ def buildWrappers(module):
|
||||
writeDoc(module, name, args, ' ', classes)
|
||||
n = 0
|
||||
for arg in args:
|
||||
if classes_type.has_key(arg[1]):
|
||||
if arg[1] in classes_type:
|
||||
if n != index:
|
||||
classes.write(" if %s is None: %s__o = None\n" %
|
||||
(arg[0], arg[0]))
|
||||
@ -1522,11 +1522,11 @@ def buildWrappers(module):
|
||||
classes.write(", ")
|
||||
if n != index:
|
||||
classes.write("%s" % arg[0])
|
||||
if classes_type.has_key(arg[1]):
|
||||
if arg[1] in classes_type:
|
||||
classes.write("__o")
|
||||
else:
|
||||
classes.write("self")
|
||||
if classes_type.has_key(arg[1]):
|
||||
if arg[1] in classes_type:
|
||||
classes.write(classes_type[arg[1]][0])
|
||||
n = n + 1
|
||||
classes.write(")\n")
|
||||
@ -1536,11 +1536,11 @@ def buildWrappers(module):
|
||||
|
||||
# For functions returning object types:
|
||||
if ret[0] != "void":
|
||||
if classes_type.has_key(ret[0]):
|
||||
if ret[0] in classes_type:
|
||||
#
|
||||
# Raise an exception
|
||||
#
|
||||
if functions_noexcept.has_key(name):
|
||||
if name in functions_noexcept:
|
||||
classes.write(
|
||||
" if ret is None:return None\n")
|
||||
else:
|
||||
@ -1590,7 +1590,7 @@ def buildWrappers(module):
|
||||
# See reference_keepers for the list
|
||||
#
|
||||
tclass = classes_type[ret[0]][2]
|
||||
if reference_keepers.has_key(tclass):
|
||||
if tclass in reference_keepers:
|
||||
rlist = reference_keepers[tclass]
|
||||
for pref in rlist:
|
||||
if pref[0] == classname:
|
||||
@ -1598,7 +1598,7 @@ def buildWrappers(module):
|
||||
pref[1])
|
||||
|
||||
# Post-processing - just before we return.
|
||||
if function_post.has_key(name):
|
||||
if name in function_post:
|
||||
classes.write(" %s\n" %
|
||||
(function_post[name]))
|
||||
|
||||
@ -1606,16 +1606,16 @@ def buildWrappers(module):
|
||||
# return the class
|
||||
#
|
||||
classes.write(" return __tmp\n")
|
||||
elif converter_type.has_key(ret[0]):
|
||||
elif ret[0] in converter_type:
|
||||
#
|
||||
# Raise an exception
|
||||
#
|
||||
if functions_noexcept.has_key(name):
|
||||
if name in functions_noexcept:
|
||||
classes.write(
|
||||
" if ret is None:return None")
|
||||
|
||||
# Post-processing - just before we return.
|
||||
if function_post.has_key(name):
|
||||
if name in function_post:
|
||||
classes.write(" %s\n" %
|
||||
(function_post[name]))
|
||||
|
||||
@ -1627,8 +1627,8 @@ def buildWrappers(module):
|
||||
# are several things that we can do, depending on
|
||||
# the contents of functions_int_*:
|
||||
elif is_integral_type (ret[0]):
|
||||
if not functions_noexcept.has_key (name):
|
||||
if functions_int_exception_test.has_key (name):
|
||||
if name not in functions_noexcept:
|
||||
if name in functions_int_exception_test:
|
||||
test = functions_int_exception_test[name]
|
||||
else:
|
||||
test = functions_int_default_test
|
||||
@ -1662,15 +1662,15 @@ def buildWrappers(module):
|
||||
("ret", name))
|
||||
|
||||
# Post-processing - just before we return.
|
||||
if function_post.has_key(name):
|
||||
if name in function_post:
|
||||
classes.write(" %s\n" %
|
||||
(function_post[name]))
|
||||
|
||||
classes.write (" return ret\n")
|
||||
|
||||
elif is_python_noninteger_type (ret[0]):
|
||||
if not functions_noexcept.has_key (name):
|
||||
if functions_list_exception_test.has_key (name):
|
||||
if name not in functions_noexcept:
|
||||
if name in functions_list_exception_test:
|
||||
test = functions_list_exception_test[name]
|
||||
else:
|
||||
test = functions_list_default_test
|
||||
@ -1704,7 +1704,7 @@ def buildWrappers(module):
|
||||
("ret", name))
|
||||
|
||||
# Post-processing - just before we return.
|
||||
if function_post.has_key(name):
|
||||
if name in function_post:
|
||||
classes.write(" %s\n" %
|
||||
(function_post[name]))
|
||||
|
||||
@ -1712,7 +1712,7 @@ def buildWrappers(module):
|
||||
|
||||
else:
|
||||
# Post-processing - just before we return.
|
||||
if function_post.has_key(name):
|
||||
if name in function_post:
|
||||
classes.write(" %s\n" %
|
||||
(function_post[name]))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user