PythonCharmers/python-future

futurize `__bool__` not implemented for subclasses of dict

Open

#282 opened on May 5, 2017

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Python (327 forks)batch import
0.20bughelp wanted

Repository metrics

Stars
 (1,172 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

If a run futurize on python 2 code containing a subclass of the built in dict, e.g.

class A(dict):
    __nonzero__(self):
    return False

it is translated to

class A(dict):
    __bool__(self):
    return False

However, the __bool__ method is not called in python 2. Seems some other kind of trickery is needed.

For now I'm working around the issue by doing

class A(dict):
    __bool__(self):
    return False
    if sys.version_info[0] == 2:
        __nonzero__ = __bool__

Contributor guide