logilab-astng #82221 False positive for PyQt4 import [validation pending]

a@a-laptop:~/code/mksv3$ pylint --version
pylint 0.23.0,
astng 0.21.1, common 0.55.2
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
[GCC 4.6.1]
a@a-laptop:~/code/mksv3$ pylint mks/plugins/helpmenu.py
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/logilab/astng/scoped_nodes.py", line 276, in getattr
return [self.import_module(name, relative_only=True)]
File "/usr/lib/pymodules/python2.7/logilab/astng/scoped_nodes.py", line 329, in import_module
return MANAGER.astng_from_module_name(absmodname)
File "/usr/lib/pymodules/python2.7/logilab/astng/manager.py", line 145, in astng_from_module_name
return self.astng_from_module(module, modname)
File "/usr/lib/pymodules/python2.7/logilab/astng/manager.py", line 200, in astng_from_module
return ASTNGBuilder(self).module_build(module, modname)
File "/usr/lib/pymodules/python2.7/logilab/astng/builder.py", line 107, in module_build
node = self.inspect_build(module, modname=modname, path=path)
File "/usr/lib/pymodules/python2.7/logilab/astng/raw_building.py", line 221, in inspect_build
self.object_build(node, module)
File "/usr/lib/pymodules/python2.7/logilab/astng/raw_building.py", line 258, in object_build
class_node = object_build_class(node, member, name)
File "/usr/lib/pymodules/python2.7/logilab/astng/raw_building.py", line 135, in object_build_class
basenames = [base.__name__ for base in member.__bases__]
TypeError: C++ type 'QWidget*' is not supported as type
************* Module mks.plugins.helpmenu
E: 11: No name 'QtCore' in module 'PyQt4'
W: 27:Plugin.__init__.createAction.<lambda>: Lambda may not be necessary
R: 38:Plugin.moduleConfiguratorClass: Method could be a function

Report
======
32 statements analysed.

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

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

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

+----------+-------+------+---------+-----------+
|type |number |% |previous |difference |
+==========+=======+======+=========+===========+
|code |32 |58.18 |32 |= |
+----------+-------+------+---------+-----------+
|docstring |17 |30.91 |17 |= |
+----------+-------+------+---------+-----------+
|comment |0 |0.00 |0 |= |
+----------+-------+------+---------+-----------+
|empty |6 |10.91 |6 |= |
+----------+-------+------+---------+-----------+

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

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

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

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

Messages
--------

+-----------+------------+
|message id |occurrences |
+===========+============+
|W0108 |1 |
+-----------+------------+
|R0201 |1 |
+-----------+------------+
|E0611 |1 |
+-----------+------------+

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

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

mks
\-core
\-core
| \-DATA_FILES_PATH (mks.plugins.helpmenu)
| \-core (mks.plugins.helpmenu)
\-defines
\-PACKAGE_COPYRIGHTS (mks.plugins.helpmenu)
\-PACKAGE_NAME (mks.plugins.helpmenu)
\-PACKAGE_VERSION (mks.plugins.helpmenu)

a@a-laptop:~/code/mksv3$ cat mks/plugins/helpmenu.py
"""
helpmenu --- Manage Help main menu items
========================================

Module contains about and help dialogues
"""

import os.path

from PyQt4 import uic
from PyQt4.QtCore import QObject
from PyQt4.QtGui import qApp, QDialog, QIcon

from mks.core.defines import PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_COPYRIGHTS
from mks.core.core import core, DATA_FILES_PATH

class Plugin(QObject):
"""Module implementation
"""
def __init__(self):
QObject.__init__(self)

def createAction(menuItem, text, icon, tab):
"""Create a menu action and connect it to the slot
"""
action = core.actionModel().addAction("mHelp/%s" % menuItem, text, QIcon(':mksicons/' + icon))
slot = lambda : UIAbout(core.mainWindow(), tab).exec_()
action.triggered.connect(slot)

createAction('aAbout', self.tr('&About...'), 'monkey2.png', 'about')
createAction('aHelp', self.tr('&Help...'), 'help.png', 'help')
createAction('aReportBug', self.tr('Report &Bug...'), 'debugger.png', 'bug')
createAction('aDonate', self.tr('&Donate...'), 'add.png', 'donate')

action = core.actionModel().addAction( "mHelp/aAboutQt", self.tr('About &Qt...'), QIcon(':mksicons/qt.png'))
action.triggered.connect(qApp.aboutQt)

def moduleConfiguratorClass(self):
""" ::class:`mks.core.uisettings.ModuleConfigurator` used to configure plugin with UISettings dialogue
"""
return None # No any settings

class UIAbout(QDialog):
"""About dialogue
"""
def __init__(self, parentWindow, tab):
QDialog.__init__(self, parentWindow)
uic.loadUi(os.path.join(DATA_FILES_PATH, 'ui/UIAbout.ui'), self)
self.setWindowTitle( self.tr( "About : %s" % PACKAGE_NAME ) )

self.lTitle.setText( PACKAGE_NAME )
self.lVersion.setText( self.tr( "Version %s" % PACKAGE_VERSION ))
self.lCopyrights.setText( PACKAGE_COPYRIGHTS )

tabs = {'about': self.wLogo,
'help': self.tbHelp,
'bug': self.tbReportBug,
'donate': self.tbDonations}
self.twAbout.setCurrentWidget(tabs[tab])
a@a-laptop:~/code/mksv3$

a@a-laptop:~/code/mksv3$ apt-cache show python-qt4
Package: python-qt4
Installed-Size: 23556
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
Architecture: i386
Version: 4.8.5-0ubuntu2

prioritynormal
typebug
done in<not specified>
load left0.000
closed by<not specified>