[Python-apps-team] Bug#568968: Trivial program makes pylint hang (regression since 0.18.1-1)

Joseph Barillari debian at barillari.org
Tue Feb 9 02:45:53 UTC 2010


Package: pylint
Version: 0.19.0-1
Severity: normal

If I run pylint on the following program:

from matplotlib.figure import Figure
Figure().add_subplot(111).xaxis

...pylint never exits. It prints the following:

$ pylint generate.py
No config file found, using default configuration
************* Module generate
C:  1: Missing docstring

...and hangs, using 100% of CPU. 


For the record, I'm using these versions of matplotlib:
ii  python-matplotlib                     0.99.1.2-2                 Python based plotting system in a style similar to Matlab
ii  python-matplotlib-data                0.99.1.2-2                 Python based plotting system (data package)
ii  python-matplotlib-doc                 0.99.1.2-2                 Python based plotting system (documentation package)

If I interrupt pylab, it prints a very long stack trace which ends in:

  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 231, in wrapper
    for node in func(*args, **kwargs):
  File "/usr/lib/pymodules/python2.5/logilab/astng/inference.py", line 259, in infer_getattr
    for obj in owner.igetattr(self.attrname, context):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 168, in _infer_stmts
    for infered in stmt.infer(context):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 203, in wrapped
    for res in _func(node, context, **kwargs):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 168, in _infer_stmts
    for infered in stmt.infer(context):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 203, in wrapped
    for res in _func(node, context, **kwargs):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 231, in wrapper
    for node in func(*args, **kwargs):
  File "/usr/lib/pymodules/python2.5/logilab/astng/inference.py", line 207, in infer_callfunc
    for infered in callee.infer_call_result(self, callcontext):
  File "/usr/lib/pymodules/python2.5/logilab/astng/scoped_nodes.py", line 426, in infer_call_result
    for infered in returnnode.value.infer(context):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 203, in wrapped
    for res in _func(node, context, **kwargs):
  File "/usr/lib/pymodules/python2.5/logilab/astng/inference.py", line 185, in infer_name
    frame, stmts = self.lookup(self.name)
  File "/usr/lib/pymodules/python2.5/logilab/astng/lookup.py", line 53, in lookup
    return self.scope().scope_lookup(self, name)
  File "/usr/lib/pymodules/python2.5/logilab/astng/scoped_nodes.py", line 323, in scope_lookup
    return frame._scope_lookup(node, name, offset)
  File "/usr/lib/pymodules/python2.5/logilab/astng/lookup.py", line 233, in _scope_lookup
    stmts = node._filter_stmts(self.locals[name], self, offset)
  File "/usr/lib/pymodules/python2.5/logilab/astng/lookup.py", line 172, in _filter_stmts
    if not are_exclusive(self, node):
  File "/usr/lib/pymodules/python2.5/logilab/astng/infutils.py", line 106, in are_exclusive
    while node:
KeyboardInterrupt



If I try the same program on a machine running 0.18.1-1, it works without incident, printing the following:

$ pylint a.py 
/usr/lib/pymodules/python2.5/pylint/lint.py:314: DeprecationWarning: use lgc.optik_ext.check_csv
  value = check_csv(None, opt_name, value)
No config file found, using default configuration
************* Module a
C:  1: Missing docstring


Report
======
2 statements analysed.

Raw metrics
-----------

+----------+-------+-------+---------+-----------+
|type      |number |%      |previous |difference |
+==========+=======+=======+=========+===========+
|code      |2      |100.00 |2        |=          |
+----------+-------+-------+---------+-----------+
|docstring |0      |0.00   |0        |=          |
+----------+-------+-------+---------+-----------+
|comment   |0      |0.00   |0        |=          |
+----------+-------+-------+---------+-----------+
|empty     |0      |0.00   |0        |=          |
+----------+-------+-------+---------+-----------+



Duplication
-----------

+-------------------------+------+---------+-----------+
|                         |now   |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines      |0     |0        |=          |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |0.000    |=          |
+-------------------------+------+---------+-----------+



External dependencies
---------------------
::

    matplotlib 
      \-figure 
        \-Figure (a)



Statistics by type
------------------

+---------+-------+-----------+-----------+------------+---------+
|type     |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
|module   |1      |1          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|class    |0      |0          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|method   |0      |0          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|function |0      |0          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+



Messages by category
--------------------

+-----------+-------+---------+-----------+
|type       |number |previous |difference |
+===========+=======+=========+===========+
|convention |1      |1        |=          |
+-----------+-------+---------+-----------+
|refactor   |0      |0        |=          |
+-----------+-------+---------+-----------+
|warning    |0      |0        |=          |
+-----------+-------+---------+-----------+
|error      |0      |0        |=          |
+-----------+-------+---------+-----------+



Messages
--------

+-----------+-----------+
|message id |occurences |
+===========+===========+
|C0111      |1          |
+-----------+-----------+



Global evaluation
-----------------
Your code has been rated at 5.00/10 (previous run: 5.00/10)

For the record, that machine is using a slightly different version of matplotlib:
ii  python-matplotlib                0.99.1.2-1                 Python based plotting system in a style simi
ii  python-matplotlib-data           0.99.1.2-1                 Python based plotting system (data package)
And the following pylint deps:
ii  python                           2.5.4-2                    An interactive high-level object-oriented la
ii  python-logilab-astng             0.19.1-1                   extend Python's abstract syntax tree (AST)
ii  python-logilab-common            0.45.1-1                   useful miscellaneous modules used by Logilab
ii  python-support                   1.0.4                      automated rebuilding support for Python modu



-- System Information:
Debian Release: squeeze/sid
  APT prefers oldstable
  APT policy: (500, 'oldstable'), (500, 'unstable'), (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-trunk-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages pylint depends on:
ii  python                        2.5.4-9    An interactive high-level object-o
ii  python-logilab-astng          0.19.3-1   extend Python's abstract syntax tr
ii  python-logilab-common         0.45.2-1   useful miscellaneous modules used 
ii  python-support                1.0.6      automated rebuilding support for P

Versions of packages pylint recommends:
ii  python-tk                     2.6.4-1    Tkinter - Writing Tk applications 

pylint suggests no packages.

-- no debconf information





More information about the Python-apps-team mailing list