Hi,
Here is my new patch. Made the changes that you (Emile) requested. Ran all
the pylint tests and.called the test file func_noerror_no_docstring_warning.
Donovan Lee Wanhoy
On Wed, Mar 24, 2010 at 5:28 AM, Emile Anclin <[email protected]>wrote:
> On Wednesday 24 March 2010 05:02:09 Donovan Lee Wanhoy wrote:
> > Well i forgot to attach the file. Here it is.
>
> 0/ hm, I think, you should run at least all pylint's test before proposing
> a patch.
>
> File "/home/emile/src/pylint/checkers/base.py", line 437, in
> visit_function
> for ancestor in node.parent.frame().ancestors():
> AttributeError: 'Module' object has no attribute 'ancestors'
>
>
> 1/ A function node can be on module level; hence you should check if
> node.parent is a Class node
>
> 2/ if overrriden = True, do a break
>
> 3/ our conventions :
> - avoid trailing white spaces
> - no error tests are usually called func_noerror*
> and have no corresponding error message file
> (example attached)
>
> --
>
> Emile Anclin <[email protected]>
> http://www.logilab.fr/ http://www.logilab.org/
> Informatique scientifique & et gestion de connaissances
>
diff -r f5f084e5267a checkers/base.py
--- a/checkers/base.py Thu Mar 04 12:12:32 2010 +0100
+++ b/checkers/base.py Fri Mar 26 12:25:25 2010 -0400
@@ -428,7 +428,18 @@
self._check_name(f_type, node.name, node)
# docstring
if self.config.no_docstring_rgx.match(node.name) is None:
- self._check_docstring(f_type, node)
+ if isinstance(node.parent, astng.Class):
+ overridden = False
+ # check if node is from a method overridden by its ancestor
+ for ancestor in node.parent.frame().ancestors():
+ if node.name in ancestor and \
+ isinstance(ancestor[node.name], astng.Function):
+ overridden = True
+ break
+ if not overridden:
+ self._check_docstring(f_type, node)
+ else:
+ self._check_docstring(f_type, node)
# check default arguments'value
self._check_defaults(node)
# check arguments name
diff -r f5f084e5267a test/input/func_noerror_no_warning_docstring.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/input/func_noerror_no_warning_docstring.py Fri Mar 26 12:25:25 2010 -0400
@@ -0,0 +1,38 @@
+''' Test for inheritence '''
+
+__revision__ = 1
+
+class AAAA:
+ ''' class AAAA '''
+
+ def __init__(self):
+ pass
+
+ def method1(self):
+ ''' method 1 '''
+ print self
+
+ def method2(self):
+ ''' method 2 '''
+ print self
+
+class BBBB(AAAA):
+ ''' class BBBB '''
+
+ def __init__(self):
+ AAAA.__init__(self)
+
+ # should ignore docstring calling from class AAAA
+ def method1(self):
+ AAAA.method1(self)
+
+class CCCC(BBBB):
+ ''' class CCCC '''
+
+ def __init__(self):
+ BBBB.__init__(self)
+
+ # should ignore docstring since CCCC is inherited from BBBB which is
+ # inherited from AAAA containing method3
+ def method2(self):
+ AAAA.method2(self)
_______________________________________________
Python-Projects mailing list
[email protected]
http://lists.logilab.org/mailman/listinfo/python-projects