15e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis"""Fixer for __nonzero__ -> __bool__ methods."""
25e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis# Author: Collin Winter
35e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis
45e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis# Local imports
5e607823af57c176c3be23985f5bbf9260f6bd836Benjamin Petersonfrom .. import fixer_base
6e607823af57c176c3be23985f5bbf9260f6bd836Benjamin Petersonfrom ..fixer_util import Name, syms
75e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis
8e607823af57c176c3be23985f5bbf9260f6bd836Benjamin Petersonclass FixNonzero(fixer_base.BaseFix):
9a81eae1fd71eed670d1c28bf940ea99b4bfa2335Benjamin Peterson    BM_compatible = True
105e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis    PATTERN = """
115e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis    classdef< 'class' any+ ':'
125e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis              suite< any*
135e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis                     funcdef< 'def' name='__nonzero__'
145e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis                              parameters< '(' NAME ')' > any+ >
155e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis                     any* > >
165e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis    """
175e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis
185e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis    def transform(self, node, results):
195e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis        name = results["name"]
206118040b7aee905bcddcb949c6815dc19ca23070Benjamin Peterson        new = Name(u"__bool__", prefix=name.prefix)
215e37baea8007cb64b65a180e4d6c80de292a8a4aMartin v. Löwis        name.replace(new)
22