From d102cd7ada0dfafcdc0af2c9580630afe8a92492 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 17 Feb 2022 14:31:38 +0100 Subject: [PATCH] Pylint docs/find-missing.py, src/simix/simcalls.py. --- docs/find-missing.py | 15 ++++++------ src/simix/simcalls.py | 55 +++++++++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/docs/find-missing.py b/docs/find-missing.py index fb46a6c0da..9ee58b4dbd 100755 --- a/docs/find-missing.py +++ b/docs/find-missing.py @@ -15,7 +15,6 @@ This script is tailored to SimGrid own needs. If you are missing some dependencies, try: pip3 install --requirement docs/requirements.txt """ -import fnmatch import os import re import sys @@ -81,7 +80,7 @@ def handle_python_module(fullname, englobing, elm): if fullname in python_ignore: - print ("Ignore Python symbol '{}' as requested.".format(fullname)) + print("Ignore Python symbol '{}' as requested.".format(fullname)) return if inspect.isroutine(elm) and inspect.isclass(englobing): @@ -93,7 +92,7 @@ def handle_python_module(fullname, englobing, elm): elif inspect.isdatadescriptor(elm): found_decl("attribute", fullname) # print('.. autoattribute:: {}'.format(fullname)) - elif isinstance(elm, str) or isinstance(elm, int): # We do have such a data, directly in the SimGrid top module + elif isinstance(elm, (int, str)): # We do have such a data, directly in the SimGrid top module found_decl("data", fullname) # print('.. autodata:: {}'.format(fullname)) elif inspect.ismodule(elm) or inspect.isclass(elm): @@ -149,7 +148,7 @@ doxy_type = {} # {classname: [names]} # find the declarations in the XML files for arg in xml_files: if arg[-4:] != '.xml': - print ("Argument '{}' does not end with '.xml'".format(arg)) + print("Argument '{}' does not end with '.xml'".format(arg)) continue #print("Parse file {}".format(arg)) tree = ET.parse(arg) @@ -160,7 +159,7 @@ for arg in xml_files: if "compoundname" in elem: raise Exception("Compound {} has no 'compoundname' child tag.".format(elem)) compoundname = elem.find("compoundname").text - #print ("compoundname {}".format(compoundname)) + #print("compoundname {}".format(compoundname)) elif elem.attrib["kind"] == "file": compoundname = "" elif elem.attrib["kind"] == "namespace": @@ -180,7 +179,7 @@ for arg in xml_files: doxy_vars[compoundname].append(name) elif kind == "function": args = member.find('argsstring').text - args = re.sub('\)[^)]*$', ')', args) # ignore what's after the parameters (eg, '=0' or ' const') + args = re.sub(r'\)[^)]*$', ')', args) # ignore what's after the parameters (eg, '=0' or ' const') if compoundname not in doxy_funs: doxy_funs[compoundname] = {} @@ -194,7 +193,7 @@ for arg in xml_files: elif kind == "friend": pass # Ignore friendship else: - print ("member {}::{} is of kind {}".format(compoundname, name, kind)) + print("member {}::{} is of kind {}".format(compoundname, name, kind)) # Forget about the declarations that are done in the RST with os.popen('grep doxygenfunction:: find-missing.ignore source/*rst|sed \'s/^.*doxygenfunction:: //\'|sed \'s/ *const//\'') as pse: @@ -215,7 +214,7 @@ with os.popen('grep doxygenfunction:: find-missing.ignore source/*rst|sed \'s/^. print("Warning: Object '{}' documented but not found in '{}'".format(line, klass)) # for obj in doxy_funs[klass]: # print(" found: {}::{}".format(klass, obj)) - elif len(doxy_funs[klass][obj])==1: + elif len(doxy_funs[klass][obj]) == 1: del doxy_funs[klass][obj] elif args not in doxy_funs[klass][obj]: print("Warning: Function {}{} not found in {}".format(obj, args, klass)) diff --git a/src/simix/simcalls.py b/src/simix/simcalls.py index ef75a13314..b278080f02 100755 --- a/src/simix/simcalls.py +++ b/src/simix/simcalls.py @@ -10,11 +10,12 @@ import re import glob import sys -class Arg(object): +class Arg: def __init__(self, name, thetype): self.name = name self.type = thetype + self.simcall_types = [] def field(self): return self.simcall_types[self.type] @@ -23,7 +24,7 @@ class Arg(object): return self.type -class Simcall(object): +class Simcall: simcalls_body = None simcalls_pre = None @@ -41,13 +42,13 @@ class Simcall(object): self.simcalls_body = set(re.findall(r'simcall_BODY_(.*?)\(', f.read())) f.close() if self.name not in self.simcalls_body: - print ('# ERROR: No function calling simcall_BODY_%s' % self.name) - print ('# Add something like this to libsmx.c:') - print ('%s simcall_%s(%s)' % (self.res.rettype(), self.name, ', '. - join('%s %s' % (arg.rettype(), arg.name) for arg in self.args))) - print ('{') - print (' return simcall_BODY_%s(%s);' % (self.name, "...")) - print ('}') + print('# ERROR: No function calling simcall_BODY_%s' % self.name) + print('# Add something like this to libsmx.c:') + print('%s simcall_%s(%s)' % (self.res.rettype(), self.name, ', '. + join('%s %s' % (arg.rettype(), arg.name) for arg in self.args))) + print('{') + print(' return simcall_BODY_%s(%s);' % (self.name, "...")) + print('}') return False # smx_*.c void simcall_HANDLER_host_on(smx_simcall_t simcall, @@ -61,20 +62,20 @@ class Simcall(object): f.close() if self.need_handler: if self.name not in self.simcalls_pre: - print ('# ERROR: No function called simcall_HANDLER_%s' % self.name) - print ('# Add something like this to the relevant C file (like smx_io.c if it\'s an IO call):') - print ('%s simcall_HANDLER_%s(smx_simcall_t simcall%s)' % (self.res.rettype(), self.name, ''. - join(', %s %s' % (arg.rettype(), arg.name)for arg in self.args))) - print ('{') - print (' // Your code handling the simcall') - print ('}') + print('# ERROR: No function called simcall_HANDLER_%s' % self.name) + print('# Add something like this to the relevant C file (like smx_io.c if it\'s an IO call):') + print('%s simcall_HANDLER_%s(smx_simcall_t simcall%s)' % (self.res.rettype(), self.name, ''. + join(', %s %s' % (arg.rettype(), arg.name)for arg in self.args))) + print('{') + print(' // Your code handling the simcall') + print('}') return False else: if self.name in self.simcalls_pre: - print ( + print( '# ERROR: You have a function called simcall_HANDLER_%s, but that simcall is not using any handler' % self.name) - print ('# Either change your simcall definition, or kill that function') + print('# Either change your simcall definition, or kill that function') return False return True @@ -89,8 +90,7 @@ class Simcall(object): res.append('') regex = re.compile(r"^boost::intrusive_ptr<(.*?)>(.*)$") # to compute the raw type # Arguments getter/setters - for i in range(len(self.args)): - arg = self.args[i] + for i, arg in enumerate(self.args): rawtype = regex.sub(r'\1*\2', arg.rettype()) res.append('static inline %s simcall_%s__get__%s(smx_simcall_t simcall)' % ( arg.rettype(), self.name, arg.name)) @@ -135,8 +135,8 @@ class Simcall(object): res.append(indent + 'case Simcall::%s:' % (self.name.upper())) if self.need_handler: call = "simcall_HANDLER_%s(&simcall_%s%s)" % (self.name, - ", " if args else "", - ', '.join(args)) + ", " if args else "", + ', '.join(args)) else: call = "SIMIX_%s(%s)" % (self.name, ', '.join(args)) if self.call_kind == 'Func': @@ -258,16 +258,16 @@ def handle(fd, func, simcalls, guarded_simcalls): fd.write('\n') -if __name__ == '__main__': +def main(): simcalls, simcalls_dict = parse('simcalls.in') ok = True ok &= all(map(Simcall.check, simcalls)) - for k, v in simcalls_dict.items(): + for _k, v in simcalls_dict.items(): ok &= all(map(Simcall.check, v)) if not ok: - print ("Some checks fail!") - sys.exit(1) + print("Some checks fail!") + sys.exit(1) # # popping_accessors.hpp @@ -394,3 +394,6 @@ inline static R simcall(Simcall call, T const&... t) handle(fd, Simcall.body, simcalls, simcalls_dict) fd.write("/** @endcond */\n") fd.close() + +if __name__ == '__main__': + main() -- 2.20.1