clone 591676 -1
reassign -1 python-pyicu 1.0-1
severity -1 wishlist
retitle -1 please make _icu importable
retitle 591676 pylint: please either disable or document dynamic checks
severity 591676 important
thanks
* Sandro Tosi <[email protected]>, 2010-11-16, 01:49:
$ echo 'import icu' > test.py
$ pylint test.py No config file found, using default configuration
************* Module test
C: 1: Missing docstring
Traceback (most recent call last):
File "/usr/bin/pylint", line 4, in <module>
lint.Run(sys.argv[1:])
...
File "/usr/lib/pymodules/python2.6/docs.py", line 27, in <module>
_install__doc__(BreakIterator, '''
NameError: name 'BreakIterator' is not defined
pylint upstream identified the problem in:
$ python -c "from _icu import *"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/pymodules/python2.6/icu.py", line 37, in <module>
from docs import *
File "/usr/lib/pymodules/python2.6/docs.py", line 27, in <module>
_install__doc__(BreakIterator, '''
NameError: name 'BreakIterator' is not defined
(and don't want to invest further energy on it, understandably). Do
you think it's ok to reassign this ticket to python-pyicu? AFAICS _icu
should be a private module, but it prevents 'icu' to be "linted".
Okay, so basically what happens here is:
1. _icu can be imported only if icu has been imported first. It's
definitely annoying, but I'd have hard time arguing it's actually a bug.
2. pylint will import a module if and only if it cannot find its source.
This bad because:
- It's surprising and undocumented. According to the package
description, the manual pages, and the FAQ, pylint is a "static code
checker", so one would expect it won't execute any code it analyses.
- As seen on the above example, it's a pretty brittle approach.
--
Jakub Wilk
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]