[Python-projects] __init__ method from a non direct base class <logilab.astng.Yes object at 0xb7f8392c> is called

Barry Scott barry.scott at onelan.co.uk
Tue Nov 21 19:08:07 CET 2006


Sylvain Thénault wrote:
> On Tuesday 21 November à 12:34, Barry Scott wrote:
>   
>> Sylvain Thénault wrote:
>>     
>>>> I get around 200 errors out of the first module that I run pylint on. I 
>>>> cannot release
>>>> this source for you to test against. I will have to build a smaller 
>>>> example
>>>> that breaks otherwise we will have nothing concrete to work with.
>>>>
>>>> My first attempt at a small example did not have the problem with this 
>>>> class.
>>>> However when I forgot to copy a __init__.py I did see the message:
>>>>
>>>> __init__ method from a non direct base class    <logilab.astng.Yes 
>>>> object at 0xb7f8392c> is called
>>>>
>>>> So a missing __init__.py is another way to get this message.
>>>>
>>>> Am I right in guessing that this message means pylint/ast failed to find 
>>>> information? Is it
>>>> a place holder in the code?
>>>>    
>>>>         
>>> you're right, and the easiest way to get ride of W0233 false positive is
>>> to skip YES object where this message is issued, as done by the patch
>>> below. Getting warning for inference problem is harder since this
>>> problem is tied to astng which shouldn't contain pylint specific code.
>>> I plan to use the logging module at some point to allow astng > pylint
>>> communication, but this is really not a priority for me at least, so...
>>>
>>> diff -r a6d5c4daf255 checkers/classes.py
>>> --- a/checkers/classes.py       Wed Nov 15 19:43:01 2006 +0100
>>> +++ b/checkers/classes.py       Mon Nov 20 16:47:00 2006 +0100
>>> @@ -442,6 +440,8 @@ instance attributes.'}
>>>                 return
>>>             try:
>>>                 klass = expr.expr.infer().next()
>>> +                if klass is astng.YES:
>>> +                    continue
>>>                 try:
>>>                     del to_call[klass]
>>>                 except KeyError:
>>>
>>>  
>>>       
>> This is a bad idea right? At least with the __init__ message I now know 
>> why the
>> following "method not defined" messages occur.
>>
>> The problem is that because of the failure to find out about base 
>> classes there are huge
>> number of false positive messages.
>>     
>
> you mean that with this patch applied you get some other false positive?
>   
With the patch applied I get false positives. What I had to do was fix 
up the PYTHONPATH
to allow every module to be found.

Where as pychecker will give me an error telling me that it cannot find 
a module pylint
is silent on the matter. You mentioned logging in astng. Once that 
happens astng will
be able to report to pylint that it cannot find a module and pylint can 
then report to the
user?

Barry



More information about the Python-Projects mailing list