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]

Reply via email to