Re: Python gdb.Function is an old-style class?

Phil Muldoon <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 21/07/16 20:16, Paul Smith wrote:
> On Thu, 2016-07-21 at 19:49 +0100, Phil Muldoon wrote:
>> Does calling the super __init__ function solve the PyLint issue?
>>
>> super(self).__init__()
>>
>> The old style/new style classes were introduced, I think, in Python
>> 2.2 (I have not checked).
> 
> Yes, I believe you're right.  I assume GDB doesn't try to support any
> Python API older than 2.2!!

It's ambivalent in my opinion. It works with Python 3. But I think the
case here is that nobody has run the PyLint over GDB Python API script
usage to check for these scenarios.

>> I'll check what we are doing in gdb.Function. But I've never linted
>> the Python bindings so there might be other areas where the linting
>> function flags usage requirements.
> 
> I really must have fubar'ed my email to cause so much confusion :).
> 
> I have a set of functions in my own source directory like this:
> 
>   $ cat mystuff.py
> 
>   class MyStuff(gdb.Function):
>       def __init__(self):
>           super(MyStuff, self).__init__("mystuff")
> 
>       def invoke(self):
>           do_stuff()
> 
> This works great, I can source these from within GDB then call
> $mystuff() etc.
> 
> But when I run Pylint on "mystuff.py", I get an error because Pylint
> thinks that I'm not inheriting from object.
> 
> I suspect a Pylint problem, where it can't grok that gdb.Function is a
> new-style class (through the C API?), because the super() code actually
> works.

Yes, in the source tree see gdb/python/py-function.c. I've not had a
chance to check it yet or if, in fact, there is something we could
tweak. It's never come up before ;)

Cheers

Phil
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.