From: Thomas V. S. <tho...@us...> - 2008-06-29 22:21:45
|
Update of /cvsroot/pychecker/pychecker/pychecker In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24023/pychecker Modified Files: checker.py Log Message: * pychecker/checker.py: If an object looks like a class object because it has __bases__ but it does not have __names__, make up a name. Fixes #1563494. * test_check.sh: Add a test that previously failed. Index: checker.py =================================================================== RCS file: /cvsroot/pychecker/pychecker/pychecker/checker.py,v retrieving revision 1.99 retrieving revision 1.100 diff -C2 -d -r1.99 -r1.100 *** checker.py 3 May 2007 06:29:00 -0000 1.99 --- checker.py 29 Jun 2008 22:21:53 -0000 1.100 *************** *** 249,252 **** --- 249,263 ---- modname = ".".join(mo.group(1).split(".")[:-1]) + # zope.interface for example has Provides and Declaration that + # look a lot like class objects but do not have __name__ + if not hasattr(self.classObject, '__name__'): + if modname not in cfg().blacklist: + sys.stderr.write("warning: no __name__ attribute " + "for class %s (module name: %s)\n" + % (self.classObject, modname)) + self.classObject.__name__ = name + # later pychecker code uses this + self.classObject__name__ = self.classObject.__name__ + self.module = sys.modules.get(modname) if not self.module: *************** *** 330,334 **** # add standard methods for methodName in ('__class__',) : ! self.addMethod(methodName, classObject.__name__) def addMembers(self, classObject) : --- 341,345 ---- # add standard methods for methodName in ('__class__',) : ! self.addMethod(methodName, self.classObject__name__) def addMembers(self, classObject) : |