The failing code appears to be _set_proxied in inference.py.

def _set_proxied(const):
 
    if not hasattr(const, '__proxied'):
        const.__proxied = _CONST_PROXY[const.value.__class__]
    return const.__proxied
nodes.Const._proxied = property(_set_proxied)

The call to hasattr can call Proxy.__getattr__ in infutils.py:

def __getattr__(self, name):
        if name == '_proxied':
            return getattr(self.__class__, '_proxied')
        if name in self.__dict__:
            return self.__dict__[name]
        return getattr(self._proxied, name)

As the trace shows, the last line of __getattr__ can invoke _setProxied,
apparently directly.

My head is about to explode :-) In particular, the const argument to
_set_proxied apparently represents None without being None.  The
debugger reports const to be:

<Instance of __builtin__.NoneType at (an address)>

but "const is None" evaluates to False.  Ditto for various other tries,
such as isinstance(const,something-or-other)

As if that were not enough, did you notice _proxied vs. __proxied?

I do hope somebody who actually understand this code will fix it.  To
repeat, pylint has been failing to catch serious bugs in my app as a
result of this problem.  I've pretty much lost confidence in pylint for
now.

Edward

-- 
pylint spews Exception RuntimeError: maximum recursion depth exceeded while 
calling a Python object
https://bugs.launchpad.net/bugs/456870
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to