If you are editing a __init__.py file (from a package) and another file in the project (in the same package) has some pylint errors, the errors are also shown in the __init__.py file.
That's a PyLint bug: http://www.logilab.org/ticket/2473 (so, I suggest adding some comments to that bug explaining it there... you can also reference this bug in the logilab bug)
When you run PyLint on an __init__.py file, it gives errors on the whole package and not only on that file... At least, doing it in the command line here on a simple example:
Having a structure with /mod1/mod2/ (with __init__.py in each) and a file aa.py inside mod2, executing the command below yields errors for aa.py too:
No config file found, using default configuration
************* Module __init__
C0111: 1: Missing docstring
C0103: 1:A: Invalid name "A" (should match [A-Z_][a-zA-Z0-9]+$)
C0111: 1:A: Missing docstring
R0903: 1:A: Too few public methods (0/2)
************* Module aa
C0111: 1: Missing docstring
C0111: 4:BBBBB: Missing docstring
E0602: 6:BBBBB.__init__: Undefined variable 'undefinederror'
R0903: 4:BBBBB: Too few public methods (0/2)
C0103: 7:A: Invalid name "A" (should match [A-Z_][a-zA-Z0-9]+$)
C0111: 7:A: Missing docstring
E0602: 9:A.__init__: Undefined variable 'undefinederror'
R0903: 7:A: Too few public methods (0/2)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I must disagree here, for me it makes a difference between using the full path for __init__.py or not:
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n /home/siebert/testworkspace/test/testpackage/__init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
************* Module Test2
C0111: 1: Missing docstring
W0611: 1: Unused import os
************* Module Test
C0111: 1: Missing docstring
C0111: 4:Test: Missing docstring
W0232: 4:Test: Class has no __init__ method
W0611: 1: Unused import sys
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n __init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
I'm using pylint 0.14.0
The following patch for pylint seem to fix the problem, but I'm not 100% sure that it doesn't break something else:
siebert@steffen:/usr/lib/python2.5/site-packages/pylint$ diff lint.py.orig lint.py
534c534
< if not modname.endswith('.__init__') and '__init__.py' in filepath:
---
> if not modname.endswith('__init__') and '__init__.py' in filepath:
Same tests with the patched pylint:
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n /home/siebert/testworkspace/test/testpackage/__init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n __init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=617340
Originator: NO
That's a PyLint bug: http://www.logilab.org/ticket/2473 (so, I suggest adding some comments to that bug explaining it there... you can also reference this bug in the logilab bug)
When you run PyLint on an __init__.py file, it gives errors on the whole package and not only on that file... At least, doing it in the command line here on a simple example:
Having a structure with /mod1/mod2/ (with __init__.py in each) and a file aa.py inside mod2, executing the command below yields errors for aa.py too:
python d:\bin\Python251\Lib\site-packages\pylint\lint.py --include-ids=y d:\temp\temp_workspace_2\testjyhon\src\mod1\mod2\__init__.py
or executing as:
python d:\bin\Python251\Lib\site-packages\pylint\lint.py --include-ids=y __init__.py
yields the output below:
No config file found, using default configuration
************* Module __init__
C0111: 1: Missing docstring
C0103: 1:A: Invalid name "A" (should match [A-Z_][a-zA-Z0-9]+$)
C0111: 1:A: Missing docstring
R0903: 1:A: Too few public methods (0/2)
************* Module aa
C0111: 1: Missing docstring
C0111: 4:BBBBB: Missing docstring
E0602: 6:BBBBB.__init__: Undefined variable 'undefinederror'
R0903: 4:BBBBB: Too few public methods (0/2)
C0103: 7:A: Invalid name "A" (should match [A-Z_][a-zA-Z0-9]+$)
C0111: 7:A: Missing docstring
E0602: 9:A.__init__: Undefined variable 'undefinederror'
R0903: 7:A: Too few public methods (0/2)
Logged In: YES
user_id=617340
Originator: NO
Marking as won't fix because it should be fixed in PyLint and not in Pydev.
Logged In: YES
user_id=884962
Originator: NO
I must disagree here, for me it makes a difference between using the full path for __init__.py or not:
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n /home/siebert/testworkspace/test/testpackage/__init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
************* Module Test2
C0111: 1: Missing docstring
W0611: 1: Unused import os
************* Module Test
C0111: 1: Missing docstring
C0111: 4:Test: Missing docstring
W0232: 4:Test: Class has no __init__ method
W0611: 1: Unused import sys
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n __init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
I'm using pylint 0.14.0
The following patch for pylint seem to fix the problem, but I'm not 100% sure that it doesn't break something else:
siebert@steffen:/usr/lib/python2.5/site-packages/pylint$ diff lint.py.orig lint.py
534c534
< if not modname.endswith('.__init__') and '__init__.py' in filepath:
---
> if not modname.endswith('__init__') and '__init__.py' in filepath:
Same tests with the patched pylint:
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n /home/siebert/testworkspace/test/testpackage/__init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
siebert@steffen:~/testworkspace/test/testpackage$ pylint --include-ids=y -r n __init__.py
************* Module __init__
C0111: 5:Dummy: Missing docstring
W0232: 5:Dummy: Class has no __init__ method
Logged In: YES
user_id=617340
Originator: NO
The difference may be regarding windows / linux.
Thanks for the info (maybe it should be reported to the PyLint guys too)
Cheers,
Fabio
Logged In: YES
user_id=884962
Originator: NO
Hi,
I send a message to the Python-Projects (pylint) mailing list about this issue and my patch.
Another somewhat related question: Does PyDev need the full report of pylint, or only the messages so I can use the --reports=n option?
Ciao,
Steffen
Logged In: YES
user_id=617340
Originator: NO
It only needs the messages (so having --reports=n should be safe -- although I didn't test it).