/home/lnzliplg/www/fixes.zip
PKJ/�\�R��fix_imports.pyonu�[����
{fc@s�dZddlmZddlmZmZi0dd6dd6dd6d	d
6dd6d
d6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6d'd(6d)d*6d+d,6d-d.6d/d06d1d26d3d46d5d66d7d86d9d:6d;d<6d=d>6d?d@6dAdB6dCdD6dCdE6dFdG6dHdI6dJdK6dLdM6dNdO6dPdQ6dPdR6dPdS6dTdU6dVdW6dVdX6dYdZ6d[d\6Zd]�Zed^�Zd_ej	fd`��YZ
daS(bs/Fix incompatible imports and module references.i(t
fixer_base(tNamet
attr_chaintiotStringIOt	cStringIOtpickletcPickletbuiltinst__builtin__tcopyregtcopy_regtqueuetQueuetsocketservertSocketServertconfigparsertConfigParsertreprlibtreprstkinter.filedialogt
FileDialogttkFileDialogstkinter.simpledialogtSimpleDialogttkSimpleDialogstkinter.colorchooserttkColorChooserstkinter.commondialogttkCommonDialogstkinter.dialogtDialogstkinter.dndtTkdndstkinter.fontttkFontstkinter.messageboxttkMessageBoxstkinter.scrolledtexttScrolledTextstkinter.constantstTkconstantsstkinter.tixtTixstkinter.ttktttkttkintertTkintert_markupbaset
markupbasetwinregt_winregt_threadtthreadt
_dummy_threadtdummy_threadsdbm.bsdtdbhashsdbm.dumbtdumbdbmsdbm.ndbmtdbmsdbm.gnutgdbms
xmlrpc.clientt	xmlrpclibs
xmlrpc.servertDocXMLRPCServertSimpleXMLRPCServershttp.clientthttplibs
html.entitiesthtmlentitydefsshtml.parsert
HTMLParsershttp.cookiestCookieshttp.cookiejart	cookielibshttp.servertBaseHTTPServertSimpleHTTPServert
CGIHTTPServert
subprocesstcommandstcollectionst
UserStringtUserListsurllib.parseturlparsesurllib.robotparsertrobotparsercCsddjtt|��dS(Nt(t|t)(tjointmapR(tmembers((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyt
alternates=sccsldjg|D]}d|^q
�}t|j��}d||fVd|Vd||fVd|VdS(Ns | smodule_name='%s'syname_import=import_name< 'import' ((%s) |
               multiple_imports=dotted_as_names< any* (%s) any* >) >
          s�import_from< 'from' (%s) 'import' ['(']
              ( any | import_as_name< any 'as' any > |
                import_as_names< any* >)  [')'] >
          s�import_name< 'import' (dotted_as_name< (%s) 'as' any > |
               multiple_imports=dotted_as_names<
                 any* dotted_as_name< (%s) 'as' any > any* >) >
          s3power< bare_with_attr=(%s) trailer<'.' any > any* >(RERHtkeys(tmappingtkeytmod_listt
bare_names((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyt
build_patternAs&	t
FixImportscBsMeZeZeZeZdZd�Zd�Z	d�Z
d�Zd�ZRS(icCsdjt|j��S(NRC(RERNRJ(tself((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRN`scCs&|j�|_tt|�j�dS(N(RNtPATTERNtsuperROtcompile_pattern(RP((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRScscsatt|�j��|�}|r]d|krYt�fd�t|d�D��rYtS|StS(Ntbare_with_attrc3s|]}�|�VqdS(N((t.0tobj(tmatch(s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pys	<genexpr>qstparent(RRRORWtanyRtFalse(RPtnodetresults((RWs1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRWjs%cCs&tt|�j||�i|_dS(N(RRROt
start_treetreplace(RPttreetfilename((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyR]vscCs�|jd�}|r�|j}t|j|�}|jt|d|j��d|kri||j|<nd|kr�|j|�}|r�|j||�q�q�nH|dd}|jj|j�}|r�|jt|d|j��ndS(Ntmodule_nametprefixtname_importtmultiple_importsRTi(	tgettvaluetunicodeRJR^RRbRWt	transform(RPR[R\t
import_modtmod_nametnew_namet	bare_name((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRhzs	(
t__name__t
__module__tTruet
BM_compatibletkeep_line_ordertMAPPINGRJt	run_orderRNRSRWR]Rh(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyROUs				N(t__doc__tRt
fixer_utilRRRrRHRNtBaseFixRO(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyt<module>sj

	PKJ/�\�����fix_future.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sVRemove __future__ imports

from __future__ import foo is replaced with an empty line.
i(t
fixer_base(t	BlankLinet	FixFuturecBs#eZeZdZdZd�ZRS(s;import_from< 'from' module_name="__future__" 'import' any >i
cCst�}|j|_|S(N(Rtprefix(tselftnodetresultstnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_future.pyt	transforms	(t__name__t
__module__tTruet
BM_compatibletPATTERNt	run_orderR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_future.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_future.pyt<module>sPKJ/�\�6d��fix_tuple_params.pynu�[���"""Fixer for function definitions with tuple parameters.

def func(((a, b), c), d):
    ...

    ->

def func(x, d):
    ((a, b), c) = x
    ...

It will also support lambdas:

    lambda (x, y): x + y -> lambda t: t[0] + t[1]

    # The parens are a syntax error in Python 3
    lambda (x): x + y -> lambda x: x + y
"""
# Author: Collin Winter

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Assign, Name, Newline, Number, Subscript, syms

def is_docstring(stmt):
    return isinstance(stmt, pytree.Node) and \
           stmt.children[0].type == token.STRING

class FixTupleParams(fixer_base.BaseFix):
    run_order = 4 #use a lower order since lambda is part of other
                  #patterns
    BM_compatible = True

    PATTERN = """
              funcdef< 'def' any parameters< '(' args=any ')' >
                       ['->' any] ':' suite=any+ >
              |
              lambda=
              lambdef< 'lambda' args=vfpdef< '(' inner=any ')' >
                       ':' body=any
              >
              """

    def transform(self, node, results):
        if "lambda" in results:
            return self.transform_lambda(node, results)

        new_lines = []
        suite = results["suite"]
        args = results["args"]
        # This crap is so "def foo(...): x = 5; y = 7" is handled correctly.
        # TODO(cwinter): suite-cleanup
        if suite[0].children[1].type == token.INDENT:
            start = 2
            indent = suite[0].children[1].value
            end = Newline()
        else:
            start = 0
            indent = u"; "
            end = pytree.Leaf(token.INDENT, u"")

        # We need access to self for new_name(), and making this a method
        #  doesn't feel right. Closing over self and new_lines makes the
        #  code below cleaner.
        def handle_tuple(tuple_arg, add_prefix=False):
            n = Name(self.new_name())
            arg = tuple_arg.clone()
            arg.prefix = u""
            stmt = Assign(arg, n.clone())
            if add_prefix:
                n.prefix = u" "
            tuple_arg.replace(n)
            new_lines.append(pytree.Node(syms.simple_stmt,
                                         [stmt, end.clone()]))

        if args.type == syms.tfpdef:
            handle_tuple(args)
        elif args.type == syms.typedargslist:
            for i, arg in enumerate(args.children):
                if arg.type == syms.tfpdef:
                    # Without add_prefix, the emitted code is correct,
                    #  just ugly.
                    handle_tuple(arg, add_prefix=(i > 0))

        if not new_lines:
            return

        # This isn't strictly necessary, but it plays nicely with other fixers.
        # TODO(cwinter) get rid of this when children becomes a smart list
        for line in new_lines:
            line.parent = suite[0]

        # TODO(cwinter) suite-cleanup
        after = start
        if start == 0:
            new_lines[0].prefix = u" "
        elif is_docstring(suite[0].children[start]):
            new_lines[0].prefix = indent
            after = start + 1

        for line in new_lines:
            line.parent = suite[0]
        suite[0].children[after:after] = new_lines
        for i in range(after+1, after+len(new_lines)+1):
            suite[0].children[i].prefix = indent
        suite[0].changed()

    def transform_lambda(self, node, results):
        args = results["args"]
        body = results["body"]
        inner = simplify_args(results["inner"])

        # Replace lambda ((((x)))): x  with lambda x: x
        if inner.type == token.NAME:
            inner = inner.clone()
            inner.prefix = u" "
            args.replace(inner)
            return

        params = find_params(args)
        to_index = map_to_index(params)
        tup_name = self.new_name(tuple_name(params))

        new_param = Name(tup_name, prefix=u" ")
        args.replace(new_param.clone())
        for n in body.post_order():
            if n.type == token.NAME and n.value in to_index:
                subscripts = [c.clone() for c in to_index[n.value]]
                new = pytree.Node(syms.power,
                                  [new_param.clone()] + subscripts)
                new.prefix = n.prefix
                n.replace(new)


### Helper functions for transform_lambda()

def simplify_args(node):
    if node.type in (syms.vfplist, token.NAME):
        return node
    elif node.type == syms.vfpdef:
        # These look like vfpdef< '(' x ')' > where x is NAME
        # or another vfpdef instance (leading to recursion).
        while node.type == syms.vfpdef:
            node = node.children[1]
        return node
    raise RuntimeError("Received unexpected node %s" % node)

def find_params(node):
    if node.type == syms.vfpdef:
        return find_params(node.children[1])
    elif node.type == token.NAME:
        return node.value
    return [find_params(c) for c in node.children if c.type != token.COMMA]

def map_to_index(param_list, prefix=[], d=None):
    if d is None:
        d = {}
    for i, obj in enumerate(param_list):
        trailer = [Subscript(Number(unicode(i)))]
        if isinstance(obj, list):
            map_to_index(obj, trailer, d=d)
        else:
            d[obj] = prefix + trailer
    return d

def tuple_name(param_list):
    l = []
    for obj in param_list:
        if isinstance(obj, list):
            l.append(tuple_name(obj))
        else:
            l.append(obj)
    return u"_".join(l)
PKJ/�\�@Zw
fix_idioms.pynu�[���"""Adjust some old Python 2 idioms to their modern counterparts.

* Change some type comparisons to isinstance() calls:
    type(x) == T -> isinstance(x, T)
    type(x) is T -> isinstance(x, T)
    type(x) != T -> not isinstance(x, T)
    type(x) is not T -> not isinstance(x, T)

* Change "while 1:" into "while True:".

* Change both

    v = list(EXPR)
    v.sort()
    foo(v)

and the more general

    v = EXPR
    v.sort()
    foo(v)

into

    v = sorted(EXPR)
    foo(v)
"""
# Author: Jacques Frechet, Collin Winter

# Local imports
from .. import fixer_base
from ..fixer_util import Call, Comma, Name, Node, BlankLine, syms

CMP = "(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)"
TYPE = "power< 'type' trailer< '(' x=any ')' > >"

class FixIdioms(fixer_base.BaseFix):
    explicit = True # The user must ask for this fixer

    PATTERN = r"""
        isinstance=comparison< %s %s T=any >
        |
        isinstance=comparison< T=any %s %s >
        |
        while_stmt< 'while' while='1' ':' any+ >
        |
        sorted=any<
            any*
            simple_stmt<
              expr_stmt< id1=any '='
                         power< list='list' trailer< '(' (not arglist<any+>) any ')' > >
              >
              '\n'
            >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
        |
        sorted=any<
            any*
            simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
    """ % (TYPE, CMP, CMP, TYPE)

    def match(self, node):
        r = super(FixIdioms, self).match(node)
        # If we've matched one of the sort/sorted subpatterns above, we
        # want to reject matches where the initial assignment and the
        # subsequent .sort() call involve different identifiers.
        if r and "sorted" in r:
            if r["id1"] == r["id2"]:
                return r
            return None
        return r

    def transform(self, node, results):
        if "isinstance" in results:
            return self.transform_isinstance(node, results)
        elif "while" in results:
            return self.transform_while(node, results)
        elif "sorted" in results:
            return self.transform_sort(node, results)
        else:
            raise RuntimeError("Invalid match")

    def transform_isinstance(self, node, results):
        x = results["x"].clone() # The thing inside of type()
        T = results["T"].clone() # The type being compared against
        x.prefix = u""
        T.prefix = u" "
        test = Call(Name(u"isinstance"), [x, Comma(), T])
        if "n" in results:
            test.prefix = u" "
            test = Node(syms.not_test, [Name(u"not"), test])
        test.prefix = node.prefix
        return test

    def transform_while(self, node, results):
        one = results["while"]
        one.replace(Name(u"True", prefix=one.prefix))

    def transform_sort(self, node, results):
        sort_stmt = results["sort"]
        next_stmt = results["next"]
        list_call = results.get("list")
        simple_expr = results.get("expr")

        if list_call:
            list_call.replace(Name(u"sorted", prefix=list_call.prefix))
        elif simple_expr:
            new = simple_expr.clone()
            new.prefix = u""
            simple_expr.replace(Call(Name(u"sorted"), [new],
                                     prefix=simple_expr.prefix))
        else:
            raise RuntimeError("should not have reached here")
        sort_stmt.remove()

        btwn = sort_stmt.prefix
        # Keep any prefix lines between the sort_stmt and the list_call and
        # shove them right after the sorted() call.
        if u"\n" in btwn:
            if next_stmt:
                # The new prefix should be everything from the sort_stmt's
                # prefix up to the last newline, then the old prefix after a new
                # line.
                prefix_lines = (btwn.rpartition(u"\n")[0], next_stmt[0].prefix)
                next_stmt[0].prefix = u"\n".join(prefix_lines)
            else:
                assert list_call.parent
                assert list_call.next_sibling is None
                # Put a blank line after list_call and set its prefix.
                end_line = BlankLine()
                list_call.parent.append_child(end_line)
                assert list_call.next_sibling is end_line
                # The new prefix should be everything up to the first new line
                # of sort_stmt's prefix.
                end_line.prefix = btwn.rpartition(u"\n")[0]
PKJ/�\�����
fix_throw.pycnu�[����
{fc@s{dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZdejfd��YZ
dS(	s�Fixer for generator.throw(E, V, T).

g.throw(E)       -> g.throw(E)
g.throw(E, V)    -> g.throw(E(V))
g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))

g.throw("foo"[, V[, T]]) will warn about string exceptions.i(tpytree(ttoken(t
fixer_base(tNametCalltArgListtAttrtis_tupletFixThrowcBseZeZdZd�ZRS(s�
    power< any trailer< '.' 'throw' >
           trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' >
    >
    |
    power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > >
    cCsP|j}|dj�}|jtjkr?|j|d�dS|jd�}|dkr^dS|j�}t|�r�g|j	dd!D]}|j�^q�}nd|_
|g}|d}d|kr6|dj�}	d|	_
t||�}
t|
t
d	��t|	g�g}|jtj|j|��n|jt||��dS(
Ntexcs+Python 3 does not support string exceptionsuvalii����utargsttbuwith_traceback(tsymstclonettypeRtSTRINGtcannot_converttgettNoneRtchildrentprefixRRRRtreplaceRtNodetpower(tselftnodetresultsRR	tvaltcR
t
throw_argsRtetwith_tb((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyt	transforms*	,		
	%(t__name__t
__module__tTruet
BM_compatibletPATTERNR (((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyRsN(t__doc__tRtpgen2RRt
fixer_utilRRRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyt<module>s
(PKJ/�\��fix_operator.pyonu�[����
{fc@s^dZddlmZddlmZmZmZmZd�Zdej	fd��YZ
dS(s�Fixer for operator functions.

operator.isCallable(obj)       -> hasattr(obj, '__call__')
operator.sequenceIncludes(obj) -> operator.contains(obj)
operator.isSequenceType(obj)   -> isinstance(obj, collections.Sequence)
operator.isMappingType(obj)    -> isinstance(obj, collections.Mapping)
operator.isNumberType(obj)     -> isinstance(obj, numbers.Number)
operator.repeat(obj, n)        -> operator.mul(obj, n)
operator.irepeat(obj, n)       -> operator.imul(obj, n)
i����(t
fixer_base(tCalltNametStringttouch_importcs�fd�}|S(Ncs
�|_|S(N(t
invocation(tf(ts(s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pytdecs	((RR((Rs2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyRstFixOperatorcBs�eZeZdZdZdZdedede�Zd�Z	e
d�d��Ze
d	�d
��Ze
d�d��Z
e
d
�d��Ze
d�d��Ze
d�d��Ze
d�d��Zd�Zd�Zd�ZRS(tpres�
              method=('isCallable'|'sequenceIncludes'
                     |'isSequenceType'|'isMappingType'|'isNumberType'
                     |'repeat'|'irepeat')
              s'(' obj=any ')'s�
              power< module='operator'
                trailer< '.' %(methods)s > trailer< %(obj)s > >
              |
              power< %(methods)s trailer< %(obj)s > >
              tmethodstobjcCs/|j||�}|dk	r+|||�SdS(N(t
_check_methodtNone(tselftnodetresultstmethod((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt	transform)ssoperator.contains(%s)cCs|j||d�S(Nucontains(t_handle_rename(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_sequenceIncludes.sshasattr(%s, '__call__')cCsG|d}|j�td�td�g}ttd�|d|j�S(NRu, u
'__call__'uhasattrtprefix(tcloneRRRR(RRRRtargs((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_isCallable2s
!soperator.mul(%s)cCs|j||d�S(Numul(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_repeat8ssoperator.imul(%s)cCs|j||d�S(Nuimul(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_irepeat<ss$isinstance(%s, collections.Sequence)cCs|j||dd�S(NucollectionsuSequence(t_handle_type2abc(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_isSequenceType@ss#isinstance(%s, collections.Mapping)cCs|j||dd�S(NucollectionsuMapping(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_isMappingTypeDssisinstance(%s, numbers.Number)cCs|j||dd�S(NunumbersuNumber(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt
_isNumberTypeHscCs%|dd}||_|j�dS(NRi(tvaluetchanged(RRRtnameR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyRLs	cCsatd||�|d}|j�tddj||g��g}ttd�|d|j�S(NRu, u.u
isinstanceR(RRRRtjoinRRR(RRRtmoduletabcRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyRQs
+cCs�t|d|ddjjd��}t|�r�d|krC|St|d�f}t|j�|}|j|d|�ndS(Nt_RitasciiR$RuYou should use '%s' here.(tgetattrR tencodetcallabletunicodeRtwarningR(RRRRtsubtinvocation_str((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyR
Ws'(t__name__t
__module__tTruet
BM_compatibletorderRRtdicttPATTERNRRRRRRRRRRRR
(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyR	s 			N(t__doc__tlib2to3Rtlib2to3.fixer_utilRRRRRtBaseFixR	(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt<module>
s"	PKJ/�\��-�$$
fix_apply.pycnu�[����
{fc@sodZddlmZddlmZddlmZddlmZmZm	Z	dej
fd��YZdS(	sIFixer for apply().

This converts apply(func, v, k) into (func)(*v, **k).i(tpytree(ttoken(t
fixer_base(tCalltCommatparenthesizetFixApplycBseZeZdZd�ZRS(s.
    power< 'apply'
        trailer<
            '('
            arglist<
                (not argument<NAME '=' any>) func=any ','
                (not argument<NAME '=' any>) args=any [','
                (not argument<NAME '=' any>) kwds=any] [',']
            >
            ')'
        >
    >
    c	Cs�|j}|st�|d}|d}|jd�}|r�|j|jjkrWdS|j|jjkr�|jdjdkr�dSn|r�|j|jjkr�|jdjdkr�dS|j}|j	�}|jt
j|jfkr(|j|j
ks|jdjt
jkr(t|�}nd|_|j	�}d|_|dk	rj|j	�}d|_ntjt
jd�|g}|dk	r�|jt�tjt
jd	�|g�d
|d_nt||d|�S(Ntfunctargstkwdsis**i����tu*u**u tprefix(tsymstAssertionErrortgetttypet	star_exprtargumenttchildrentvalueRtcloneRtNAMEtatomtpowert
DOUBLESTARRtNoneRtLeaftSTARtextendRR(	tselftnodetresultsRRRR	Rt	l_newargs((s//usr/lib64/python2.7/lib2to3/fixes/fix_apply.pyt	transformsB	

			
(t__name__t
__module__tTruet
BM_compatibletPATTERNR!(((s//usr/lib64/python2.7/lib2to3/fixes/fix_apply.pyRsN(t__doc__R
Rtpgen2RRt
fixer_utilRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_apply.pyt<module>s
PKJ/�\�����
fix_throw.pyonu�[����
{fc@s{dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZdejfd��YZ
dS(	s�Fixer for generator.throw(E, V, T).

g.throw(E)       -> g.throw(E)
g.throw(E, V)    -> g.throw(E(V))
g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))

g.throw("foo"[, V[, T]]) will warn about string exceptions.i(tpytree(ttoken(t
fixer_base(tNametCalltArgListtAttrtis_tupletFixThrowcBseZeZdZd�ZRS(s�
    power< any trailer< '.' 'throw' >
           trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' >
    >
    |
    power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > >
    cCsP|j}|dj�}|jtjkr?|j|d�dS|jd�}|dkr^dS|j�}t|�r�g|j	dd!D]}|j�^q�}nd|_
|g}|d}d|kr6|dj�}	d|	_
t||�}
t|
t
d	��t|	g�g}|jtj|j|��n|jt||��dS(
Ntexcs+Python 3 does not support string exceptionsuvalii����utargsttbuwith_traceback(tsymstclonettypeRtSTRINGtcannot_converttgettNoneRtchildrentprefixRRRRtreplaceRtNodetpower(tselftnodetresultsRR	tvaltcR
t
throw_argsRtetwith_tb((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyt	transforms*	,		
	%(t__name__t
__module__tTruet
BM_compatibletPATTERNR (((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyRsN(t__doc__tRtpgen2RRt
fixer_utilRRRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_throw.pyt<module>s
(PKJ/�\�W���fix_getcwdu.pynu�[���"""
Fixer that changes os.getcwdu() to os.getcwd().
"""
# Author: Victor Stinner

# Local imports
from .. import fixer_base
from ..fixer_util import Name

class FixGetcwdu(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
              power< 'os' trailer< dot='.' name='getcwdu' > any* >
              """

    def transform(self, node, results):
        name = results["name"]
        name.replace(Name(u"getcwd", prefix=name.prefix))
PKJ/�\��IIfix_isinstance.pynu�[���# Copyright 2008 Armin Ronacher.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that cleans up a tuple argument to isinstance after the tokens
in it were fixed.  This is mainly used to remove double occurrences of
tokens as a leftover of the long -> int / unicode -> str conversion.

eg.  isinstance(x, (int, long)) -> isinstance(x, (int, int))
       -> isinstance(x, int)
"""

from .. import fixer_base
from ..fixer_util import token


class FixIsinstance(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    power<
        'isinstance'
        trailer< '(' arglist< any ',' atom< '('
            args=testlist_gexp< any+ >
        ')' > > ')' >
    >
    """

    run_order = 6

    def transform(self, node, results):
        names_inserted = set()
        testlist = results["args"]
        args = testlist.children
        new_args = []
        iterator = enumerate(args)
        for idx, arg in iterator:
            if arg.type == token.NAME and arg.value in names_inserted:
                if idx < len(args) - 1 and args[idx + 1].type == token.COMMA:
                    iterator.next()
                    continue
            else:
                new_args.append(arg)
                if arg.type == token.NAME:
                    names_inserted.add(arg.value)
        if new_args and new_args[-1].type == token.COMMA:
            del new_args[-1]
        if len(new_args) == 1:
            atom = testlist.parent
            new_args[0].prefix = atom.prefix
            atom.replace(new_args[0])
        else:
            args[:] = new_args
            node.changed()
PKJ/�\�ĸ&��fix_methodattrs.pycnu�[����
{fc@s^dZddlmZddlmZidd6dd6dd	6Zd
ejfd��YZdS(
s;Fix bound method attributes (method.im_? -> method.__?__).
i(t
fixer_base(tNamet__func__tim_funct__self__tim_selfs__self__.__class__tim_classtFixMethodattrscBseZeZdZd�ZRS(sU
    power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* >
    cCsA|dd}tt|j�}|jt|d|j��dS(Ntattritprefix(tunicodetMAPtvaluetreplaceRR	(tselftnodetresultsRtnew((s5/usr/lib64/python2.7/lib2to3/fixes/fix_methodattrs.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_methodattrs.pyRsN(t__doc__tRt
fixer_utilRRtBaseFixR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_methodattrs.pyt<module>s
PKJ/�\y�	�	fix_apply.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for apply().

This converts apply(func, v, k) into (func)(*v, **k)."""

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Call, Comma, parenthesize

class FixApply(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    power< 'apply'
        trailer<
            '('
            arglist<
                (not argument<NAME '=' any>) func=any ','
                (not argument<NAME '=' any>) args=any [','
                (not argument<NAME '=' any>) kwds=any] [',']
            >
            ')'
        >
    >
    """

    def transform(self, node, results):
        syms = self.syms
        assert results
        func = results["func"]
        args = results["args"]
        kwds = results.get("kwds")
        # I feel like we should be able to express this logic in the
        # PATTERN above but I don't know how to do it so...
        if args:
            if args.type == self.syms.star_expr:
                return  # Make no change.
            if (args.type == self.syms.argument and
                args.children[0].value == '**'):
                return  # Make no change.
        if kwds and (kwds.type == self.syms.argument and
                     kwds.children[0].value == '**'):
            return  # Make no change.
        prefix = node.prefix
        func = func.clone()
        if (func.type not in (token.NAME, syms.atom) and
            (func.type != syms.power or
             func.children[-2].type == token.DOUBLESTAR)):
            # Need to parenthesize
            func = parenthesize(func)
        func.prefix = ""
        args = args.clone()
        args.prefix = ""
        if kwds is not None:
            kwds = kwds.clone()
            kwds.prefix = ""
        l_newargs = [pytree.Leaf(token.STAR, u"*"), args]
        if kwds is not None:
            l_newargs.extend([Comma(),
                              pytree.Leaf(token.DOUBLESTAR, u"**"),
                              kwds])
            l_newargs[-2].prefix = u" " # that's the ** token
        # XXX Sometimes we could be cleverer, e.g. apply(f, (x, y) + t)
        # can be translated into f(x, y, *t) instead of f(*(x, y) + t)
        #new = pytree.Node(syms.power, (func, ArgList(l_newargs)))
        return Call(func, l_newargs, prefix=prefix)
PKJ/�\P�T��fix_set_literal.pynu�[���"""
Optional fixer to transform set() calls to set literals.
"""

# Author: Benjamin Peterson

from lib2to3 import fixer_base, pytree
from lib2to3.fixer_util import token, syms



class FixSetLiteral(fixer_base.BaseFix):

    BM_compatible = True
    explicit = True

    PATTERN = """power< 'set' trailer< '('
                     (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) >
                                |
                                single=any) ']' >
                     |
                     atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' >
                     )
                     ')' > >
              """

    def transform(self, node, results):
        single = results.get("single")
        if single:
            # Make a fake listmaker
            fake = pytree.Node(syms.listmaker, [single.clone()])
            single.replace(fake)
            items = fake
        else:
            items = results["items"]

        # Build the contents of the literal
        literal = [pytree.Leaf(token.LBRACE, u"{")]
        literal.extend(n.clone() for n in items.children)
        literal.append(pytree.Leaf(token.RBRACE, u"}"))
        # Set the prefix of the right brace to that of the ')' or ']'
        literal[-1].prefix = items.next_sibling.prefix
        maker = pytree.Node(syms.dictsetmaker, literal)
        maker.prefix = node.prefix

        # If the original was a one tuple, we need to remove the extra comma.
        if len(maker.children) == 4:
            n = maker.children[2]
            n.remove()
            maker.children[-1].prefix = n.prefix

        # Finally, replace the set call with our shiny new literal.
        return maker
PKJ/�\��\���
fix_import.pynu�[���"""Fixer for import statements.
If spam is being imported from the local directory, this import:
    from spam import eggs
Becomes:
    from .spam import eggs

And this import:
    import spam
Becomes:
    from . import spam
"""

# Local imports
from .. import fixer_base
from os.path import dirname, join, exists, sep
from ..fixer_util import FromImport, syms, token


def traverse_imports(names):
    """
    Walks over all the names imported in a dotted_as_names node.
    """
    pending = [names]
    while pending:
        node = pending.pop()
        if node.type == token.NAME:
            yield node.value
        elif node.type == syms.dotted_name:
            yield "".join([ch.value for ch in node.children])
        elif node.type == syms.dotted_as_name:
            pending.append(node.children[0])
        elif node.type == syms.dotted_as_names:
            pending.extend(node.children[::-2])
        else:
            raise AssertionError("unknown node type")


class FixImport(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    import_from< 'from' imp=any 'import' ['('] any [')'] >
    |
    import_name< 'import' imp=any >
    """

    def start_tree(self, tree, name):
        super(FixImport, self).start_tree(tree, name)
        self.skip = "absolute_import" in tree.future_features

    def transform(self, node, results):
        if self.skip:
            return
        imp = results['imp']

        if node.type == syms.import_from:
            # Some imps are top-level (eg: 'import ham')
            # some are first level (eg: 'import ham.eggs')
            # some are third level (eg: 'import ham.eggs as spam')
            # Hence, the loop
            while not hasattr(imp, 'value'):
                imp = imp.children[0]
            if self.probably_a_local_import(imp.value):
                imp.value = u"." + imp.value
                imp.changed()
        else:
            have_local = False
            have_absolute = False
            for mod_name in traverse_imports(imp):
                if self.probably_a_local_import(mod_name):
                    have_local = True
                else:
                    have_absolute = True
            if have_absolute:
                if have_local:
                    # We won't handle both sibling and absolute imports in the
                    # same statement at the moment.
                    self.warning(node, "absolute and local imports together")
                return

            new = FromImport(u".", [imp])
            new.prefix = node.prefix
            return new

    def probably_a_local_import(self, imp_name):
        if imp_name.startswith(u"."):
            # Relative imports are certainly not local imports.
            return False
        imp_name = imp_name.split(u".", 1)[0]
        base_path = dirname(self.filename)
        base_path = join(base_path, imp_name)
        # If there is no __init__.py next to the file its not in a package
        # so can't be a relative import.
        if not exists(join(dirname(base_path), "__init__.py")):
            return False
        for ext in [".py", sep, ".pyc", ".so", ".sl", ".pyd"]:
            if exists(base_path + ext):
                return True
        return False
PKJ/�\�u��ccfix_standarderror.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s%Fixer for StandardError -> Exception.i(t
fixer_base(tNametFixStandarderrorcBseZeZdZd�ZRS(s-
              'StandardError'
              cCstdd|j�S(Nu	Exceptiontprefix(RR(tselftnodetresults((s7/usr/lib64/python2.7/lib2to3/fixes/fix_standarderror.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s7/usr/lib64/python2.7/lib2to3/fixes/fix_standarderror.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s7/usr/lib64/python2.7/lib2to3/fixes/fix_standarderror.pyt<module>sPKJ/�\_;�>��fix_set_literal.pycnu�[����
{fc@sOdZddlmZmZddlmZmZdejfd��YZdS(s:
Optional fixer to transform set() calls to set literals.
i����(t
fixer_basetpytree(ttokentsymst
FixSetLiteralcBs#eZeZeZdZd�ZRS(sjpower< 'set' trailer< '('
                     (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) >
                                |
                                single=any) ']' >
                     |
                     atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' >
                     )
                     ')' > >
              c	Cs|jd�}|rItjtj|j�g�}|j|�|}n
|d}tjtj	d�g}|j
d�|jD��|jtjtj
d��|jj|d_tjtj|�}|j|_t|j�dkr|jd}|j�|j|jd_n|S(	Ntsingletitemsu{css|]}|j�VqdS(N(tclone(t.0tn((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pys	<genexpr>'su}i����ii(tgetRtNodeRt	listmakerRtreplacetLeafRtLBRACEtextendtchildrentappendtRBRACEtnext_siblingtprefixtdictsetmakertlentremove(	tselftnodetresultsRtfakeRtliteraltmakerR	((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pyt	transforms"
	


(t__name__t
__module__tTruet
BM_compatibletexplicittPATTERNR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pyRs
N(	t__doc__tlib2to3RRtlib2to3.fixer_utilRRtBaseFixR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pyt<module>sPKJ/�\�0�||
fix_input.pyonu�[����
{fc@shdZddlmZddlmZmZddlmZejd�Zdej	fd��YZ
dS(	s4Fixer that changes input(...) into eval(input(...)).i(t
fixer_base(tCalltName(tpatcomps&power< 'eval' trailer< '(' any ')' > >tFixInputcBseZeZdZd�ZRS(sL
              power< 'input' args=trailer< '(' [any] ')' > >
              cCsMtj|jj�rdS|j�}d|_ttd�|gd|j�S(Nuuevaltprefix(tcontexttmatchtparenttcloneRRR(tselftnodetresultstnew((s//usr/lib64/python2.7/lib2to3/fixes/fix_input.pyt	transforms
	(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_input.pyR
sN(t__doc__tRt
fixer_utilRRRtcompile_patternRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_input.pyt<module>s
PKJ/�\�1Wl��fix_sys_exc.pycnu�[����
{fc@sgdZddlmZddlmZmZmZmZmZm	Z	m
Z
dejfd��YZdS(s�Fixer for sys.exc_{type, value, traceback}

sys.exc_type -> sys.exc_info()[0]
sys.exc_value -> sys.exc_info()[1]
sys.exc_traceback -> sys.exc_info()[2]
i(t
fixer_base(tAttrtCalltNametNumbert	SubscripttNodetsymst	FixSysExccBsCeZdddgZeZddjd�eD��Zd�ZRS(uexc_typeu	exc_valueu
exc_tracebacksN
              power< 'sys' trailer< dot='.' attribute=(%s) > >
              t|ccs|]}d|VqdS(s'%s'N((t.0te((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pys	<genexpr>scCs�|dd}t|jj|j��}ttd�d|j�}ttd�|�}|dj|djd_|j	t
|��ttj
|d|j�S(Nt	attributeiuexc_infotprefixusystdoti(Rtexc_infotindextvalueRRR
RtchildrentappendRRRtpower(tselftnodetresultstsys_attrRtcalltattr((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pyt	transforms(t__name__t
__module__RtTruet
BM_compatibletjointPATTERNR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pyRsN(
t__doc__tRt
fixer_utilRRRRRRRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pyt<module>s4PKJ/�\�R��fix_imports.pycnu�[����
{fc@s�dZddlmZddlmZmZi0dd6dd6dd6d	d
6dd6d
d6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6d'd(6d)d*6d+d,6d-d.6d/d06d1d26d3d46d5d66d7d86d9d:6d;d<6d=d>6d?d@6dAdB6dCdD6dCdE6dFdG6dHdI6dJdK6dLdM6dNdO6dPdQ6dPdR6dPdS6dTdU6dVdW6dVdX6dYdZ6d[d\6Zd]�Zed^�Zd_ej	fd`��YZ
daS(bs/Fix incompatible imports and module references.i(t
fixer_base(tNamet
attr_chaintiotStringIOt	cStringIOtpickletcPickletbuiltinst__builtin__tcopyregtcopy_regtqueuetQueuetsocketservertSocketServertconfigparsertConfigParsertreprlibtreprstkinter.filedialogt
FileDialogttkFileDialogstkinter.simpledialogtSimpleDialogttkSimpleDialogstkinter.colorchooserttkColorChooserstkinter.commondialogttkCommonDialogstkinter.dialogtDialogstkinter.dndtTkdndstkinter.fontttkFontstkinter.messageboxttkMessageBoxstkinter.scrolledtexttScrolledTextstkinter.constantstTkconstantsstkinter.tixtTixstkinter.ttktttkttkintertTkintert_markupbaset
markupbasetwinregt_winregt_threadtthreadt
_dummy_threadtdummy_threadsdbm.bsdtdbhashsdbm.dumbtdumbdbmsdbm.ndbmtdbmsdbm.gnutgdbms
xmlrpc.clientt	xmlrpclibs
xmlrpc.servertDocXMLRPCServertSimpleXMLRPCServershttp.clientthttplibs
html.entitiesthtmlentitydefsshtml.parsert
HTMLParsershttp.cookiestCookieshttp.cookiejart	cookielibshttp.servertBaseHTTPServertSimpleHTTPServert
CGIHTTPServert
subprocesstcommandstcollectionst
UserStringtUserListsurllib.parseturlparsesurllib.robotparsertrobotparsercCsddjtt|��dS(Nt(t|t)(tjointmapR(tmembers((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyt
alternates=sccsldjg|D]}d|^q
�}t|j��}d||fVd|Vd||fVd|VdS(Ns | smodule_name='%s'syname_import=import_name< 'import' ((%s) |
               multiple_imports=dotted_as_names< any* (%s) any* >) >
          s�import_from< 'from' (%s) 'import' ['(']
              ( any | import_as_name< any 'as' any > |
                import_as_names< any* >)  [')'] >
          s�import_name< 'import' (dotted_as_name< (%s) 'as' any > |
               multiple_imports=dotted_as_names<
                 any* dotted_as_name< (%s) 'as' any > any* >) >
          s3power< bare_with_attr=(%s) trailer<'.' any > any* >(RERHtkeys(tmappingtkeytmod_listt
bare_names((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyt
build_patternAs&	t
FixImportscBsMeZeZeZeZdZd�Zd�Z	d�Z
d�Zd�ZRS(icCsdjt|j��S(NRC(RERNRJ(tself((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRN`scCs&|j�|_tt|�j�dS(N(RNtPATTERNtsuperROtcompile_pattern(RP((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRScscsatt|�j��|�}|r]d|krYt�fd�t|d�D��rYtS|StS(Ntbare_with_attrc3s|]}�|�VqdS(N((t.0tobj(tmatch(s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pys	<genexpr>qstparent(RRRORWtanyRtFalse(RPtnodetresults((RWs1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRWjs%cCs&tt|�j||�i|_dS(N(RRROt
start_treetreplace(RPttreetfilename((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyR]vscCs�|jd�}|r�|j}t|j|�}|jt|d|j��d|kri||j|<nd|kr�|j|�}|r�|j||�q�q�nH|dd}|jj|j�}|r�|jt|d|j��ndS(Ntmodule_nametprefixtname_importtmultiple_importsRTi(	tgettvaluetunicodeRJR^RRbRWt	transform(RPR[R\t
import_modtmod_nametnew_namet	bare_name((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyRhzs	(
t__name__t
__module__tTruet
BM_compatibletkeep_line_ordertMAPPINGRJt	run_orderRNRSRWR]Rh(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyROUs				N(t__doc__tRt
fixer_utilRRRrRHRNtBaseFixRO(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_imports.pyt<module>sj

	PKJ/�\�&�1fix_types.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for removing uses of the types module.

These work for only the known names in the types module.  The forms above
can include types. or not.  ie, It is assumed the module is imported either as:

    import types
    from types import ... # either * or specific types

The import statements are not modified.

There should be another fixer that handles at least the following constants:

   type([]) -> list
   type(()) -> tuple
   type('') -> str

"""

# Local imports
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name

_TYPE_MAPPING = {
        'BooleanType' : 'bool',
        'BufferType' : 'memoryview',
        'ClassType' : 'type',
        'ComplexType' : 'complex',
        'DictType': 'dict',
        'DictionaryType' : 'dict',
        'EllipsisType' : 'type(Ellipsis)',
        #'FileType' : 'io.IOBase',
        'FloatType': 'float',
        'IntType': 'int',
        'ListType': 'list',
        'LongType': 'int',
        'ObjectType' : 'object',
        'NoneType': 'type(None)',
        'NotImplementedType' : 'type(NotImplemented)',
        'SliceType' : 'slice',
        'StringType': 'bytes', # XXX ?
        'StringTypes' : '(str,)', # XXX ?
        'TupleType': 'tuple',
        'TypeType' : 'type',
        'UnicodeType': 'str',
        'XRangeType' : 'range',
    }

_pats = ["power< 'types' trailer< '.' name='%s' > >" % t for t in _TYPE_MAPPING]

class FixTypes(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = '|'.join(_pats)

    def transform(self, node, results):
        new_value = unicode(_TYPE_MAPPING.get(results["name"].value))
        if new_value:
            return Name(new_value, prefix=node.prefix)
        return None
PKJ/�\��gpAAfix_basestring.pynu�[���"""Fixer for basestring -> str."""
# Author: Christian Heimes

# Local imports
from .. import fixer_base
from ..fixer_util import Name

class FixBasestring(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = "'basestring'"

    def transform(self, node, results):
        return Name(u"str", prefix=node.prefix)
PKJ/�\��J���fix_exec.pycnu�[����
{fc@s_dZddlmZddlmZddlmZmZmZdejfd��YZ	dS(s�Fixer for exec.

This converts usages of the exec statement into calls to a built-in
exec() function.

exec code in ns1, ns2 -> exec(code, ns1, ns2)
i(tpytree(t
fixer_base(tCommatNametCalltFixExeccBseZeZdZd�ZRS(sx
    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
    |
    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
    cCs�|st�|j}|d}|jd�}|jd�}|j�g}d|d_|dk	r�|jt�|j�g�n|dk	r�|jt�|j�g�ntt	d�|d|j�S(Ntatbtctiuexectprefix(
tAssertionErrortsymstgettcloneR
tNonetextendRRR(tselftnodetresultsRRRRtargs((s./usr/lib64/python2.7/lib2to3/fixes/fix_exec.pyt	transforms	

(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_exec.pyRsN(
t__doc__R	RRt
fixer_utilRRRtBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_exec.pyt<module>
sPKJ/�\4	��
fix_apply.pyonu�[����
{fc@sodZddlmZddlmZddlmZddlmZmZm	Z	dej
fd��YZdS(	sIFixer for apply().

This converts apply(func, v, k) into (func)(*v, **k).i(tpytree(ttoken(t
fixer_base(tCalltCommatparenthesizetFixApplycBseZeZdZd�ZRS(s.
    power< 'apply'
        trailer<
            '('
            arglist<
                (not argument<NAME '=' any>) func=any ','
                (not argument<NAME '=' any>) args=any [','
                (not argument<NAME '=' any>) kwds=any] [',']
            >
            ')'
        >
    >
    c	Cs�|j}|d}|d}|jd�}|r}|j|jjkrKdS|j|jjkr}|jdjdkr}dSn|r�|j|jjkr�|jdjdkr�dS|j}|j�}|jt	j
|jfkr|j|jks
|jdjt	j
krt|�}nd|_|j�}d|_|dk	r^|j�}d|_ntjt	jd�|g}|dk	r�|jt�tjt	j
d	�|g�d
|d_nt||d|�S(Ntfunctargstkwdsis**i����tu*u**u tprefix(tsymstgetttypet	star_exprtargumenttchildrentvalueRtcloneRtNAMEtatomtpowert
DOUBLESTARRtNoneRtLeaftSTARtextendRR(	tselftnodetresultsRRRR	Rt	l_newargs((s//usr/lib64/python2.7/lib2to3/fixes/fix_apply.pyt	transforms@	

			
(t__name__t
__module__tTruet
BM_compatibletPATTERNR (((s//usr/lib64/python2.7/lib2to3/fixes/fix_apply.pyRsN(t__doc__R
Rtpgen2RRt
fixer_utilRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_apply.pyt<module>s
PKJ/�\v���fix_map.pyonu�[����
{fc@sudZddlmZddlmZddlmZmZmZm	Z	ddl
mZdej
fd��YZdS(	sFixer that changes map(F, ...) into list(map(F, ...)) unless there
exists a 'from future_builtins import map' statement in the top-level
namespace.

As a special case, map(None, X) is changed into list(X).  (This is
necessary because the semantics are changed in this case -- the new
map(None, X) is equivalent to [(x,) for x in X].)

We avoid the transformation (except for the special case mentioned
above) if the map() call is directly contained in iter(<>), list(<>),
tuple(<>), sorted(<>), ...join(<>), or for V in <>:.

NOTE: This is still not correct if the original code was depending on
map(F, X, Y, ...) to go on until the longest argument is exhausted,
substituting None for missing values -- like zip(), it now stops as
soon as the shortest argument is exhausted.
i(ttoken(t
fixer_base(tNametCalltListComptin_special_context(tpython_symbolstFixMapcBs#eZeZdZdZd�ZRS(s�
    map_none=power<
        'map'
        trailer< '(' arglist< 'None' ',' arg=any [','] > ')' >
    >
    |
    map_lambda=power<
        'map'
        trailer<
            '('
            arglist<
                lambdef< 'lambda'
                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
                >
                ','
                it=any
            >
            ')'
        >
    >
    |
    power<
        'map' trailer< '(' [arglist=any] ')' >
    >
    sfuture_builtins.mapcCs�|j|�rdS|jjtjkrh|j|d�|j�}d|_tt	d�|g�}n	d|kr�t
|dj�|dj�|dj��}n�d|kr�|d	j�}n�d
|kr4|d
}|jtjkr4|jdjt
jkr4|jdjdkr4|j|d
�dSnt|�rDdS|j�}d|_tt	d�|g�}|j|_|S(NsYou should use a for loop hereuulistt
map_lambdatxptfptittmap_nonetargtarglistitNonesjcannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequence(tshould_skiptparentttypetsymstsimple_stmttwarningtclonetprefixRRRRtchildrenRtNAMEtvalueRR(tselftnodetresultstnewtargs((s-/usr/lib64/python2.7/lib2to3/fixes/fix_map.pyt	transform;s6	

	(t__name__t
__module__tTruet
BM_compatibletPATTERNtskip_onR (((s-/usr/lib64/python2.7/lib2to3/fixes/fix_map.pyRsN(t__doc__tpgen2RtRt
fixer_utilRRRRtpygramRRtConditionalFixR(((s-/usr/lib64/python2.7/lib2to3/fixes/fix_map.pyt<module>s
"PKJ/�\8|�gfix_execfile.pyonu�[����
{fc@sydZddlmZddlmZmZmZmZmZm	Z	m
Z
mZmZm
Z
dejfd��YZdS(soFixer for execfile.

This converts usages of the execfile function into calls to the built-in
exec() function.
i(t
fixer_base(
tCommatNametCalltLParentRParentDottNodetArgListtStringtsymstFixExecfilecBseZeZdZd�ZRS(s�
    power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > >
    |
    power< 'execfile' trailer< '(' filename=any ')' > >
    cCs�|d}|jd�}|jd�}|jdjdj�}t|j�t�tdd�gd|�}ttjt	d�|g�}ttj
t�t	d	�g�ttj
t�t
�g�g}	|g|	}
|j�}d
|_tdd
�}|
t�|t�|g}
tt	d�|
d
�}|g}|dk	re|jt�|j�g�n|dk	r�|jt�|j�g�ntt	d�|d|j�S(Ntfilenametglobalstlocalsi����s"rb"t trparenuopenureadu u'exec'ucompileuuexectprefix(tgettchildrentcloneRRR	RR
tpowerRttrailerRRRRRtNonetextend(tselftnodetresultsRR
Rtexecfile_parent	open_argst	open_calltreadt	open_exprtfilename_argtexec_strtcompile_argstcompile_calltargs((s2/usr/lib64/python2.7/lib2to3/fixes/fix_execfile.pyt	transforms*
$	!
		(t__name__t
__module__tTruet
BM_compatibletPATTERNR&(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_execfile.pyRsN(t__doc__tRt
fixer_utilRRRRRRRRR	R
tBaseFixR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_execfile.pyt<module>sFPKJ/�\k(P�zzfix_imports2.pycnu�[����
{fc@sGdZddlmZidd6dd6Zdejfd��YZdS(	sTFix incompatible imports and module references that must be fixed after
fix_imports.i(tfix_importstdbmtwhichdbtanydbmtFixImports2cBseZdZeZRS(i(t__name__t
__module__t	run_ordertMAPPINGtmapping(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_imports2.pyRsN(t__doc__tRRt
FixImportsR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_imports2.pyt<module>s

PKJ/�\(%N


fix_except.pynu�[���"""Fixer for except statements with named exceptions.

The following cases will be converted:

- "except E, T:" where T is a name:

    except E as T:

- "except E, T:" where T is not a name, tuple or list:

        except E as t:
            T = t

    This is done because the target of an "except" clause must be a
    name.

- "except E, T:" where T is a tuple or list literal:

        except E as t:
            T = t.args
"""
# Author: Collin Winter

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Assign, Attr, Name, is_tuple, is_list, syms

def find_excepts(nodes):
    for i, n in enumerate(nodes):
        if n.type == syms.except_clause:
            if n.children[0].value == u'except':
                yield (n, nodes[i+2])

class FixExcept(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    try_stmt< 'try' ':' (simple_stmt | suite)
                  cleanup=(except_clause ':' (simple_stmt | suite))+
                  tail=(['except' ':' (simple_stmt | suite)]
                        ['else' ':' (simple_stmt | suite)]
                        ['finally' ':' (simple_stmt | suite)]) >
    """

    def transform(self, node, results):
        syms = self.syms

        tail = [n.clone() for n in results["tail"]]

        try_cleanup = [ch.clone() for ch in results["cleanup"]]
        for except_clause, e_suite in find_excepts(try_cleanup):
            if len(except_clause.children) == 4:
                (E, comma, N) = except_clause.children[1:4]
                comma.replace(Name(u"as", prefix=u" "))

                if N.type != token.NAME:
                    # Generate a new N for the except clause
                    new_N = Name(self.new_name(), prefix=u" ")
                    target = N.clone()
                    target.prefix = u""
                    N.replace(new_N)
                    new_N = new_N.clone()

                    # Insert "old_N = new_N" as the first statement in
                    #  the except body. This loop skips leading whitespace
                    #  and indents
                    #TODO(cwinter) suite-cleanup
                    suite_stmts = e_suite.children
                    for i, stmt in enumerate(suite_stmts):
                        if isinstance(stmt, pytree.Node):
                            break

                    # The assignment is different if old_N is a tuple or list
                    # In that case, the assignment is old_N = new_N.args
                    if is_tuple(N) or is_list(N):
                        assign = Assign(target, Attr(new_N, Name(u'args')))
                    else:
                        assign = Assign(target, new_N)

                    #TODO(cwinter) stopgap until children becomes a smart list
                    for child in reversed(suite_stmts[:i]):
                        e_suite.insert_child(0, child)
                    e_suite.insert_child(i, assign)
                elif N.prefix == u"":
                    # No space after a comma is legal; no space after "as",
                    # not so much.
                    N.prefix = u" "

        #TODO(cwinter) fix this when children becomes a smart list
        children = [c.clone() for c in node.children[:3]] + try_cleanup + tail
        return pytree.Node(node.type, children)
PKJ/�\��s<<fix_isinstance.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s,Fixer that cleans up a tuple argument to isinstance after the tokens
in it were fixed.  This is mainly used to remove double occurrences of
tokens as a leftover of the long -> int / unicode -> str conversion.

eg.  isinstance(x, (int, long)) -> isinstance(x, (int, int))
       -> isinstance(x, int)
i(t
fixer_base(ttokent
FixIsinstancecBs#eZeZdZdZd�ZRS(s�
    power<
        'isinstance'
        trailer< '(' arglist< any ',' atom< '('
            args=testlist_gexp< any+ >
        ')' > > ')' >
    >
    icCsUt�}|d}|j}g}t|�}x�|D]�\}}	|	jtjkr�|	j|kr�|t|�dkr�||djtjkr�|j	�q5q�q5|j
|	�|	jtjkr5|j|	j�q5q5W|r|djtjkr|d=nt|�dkr@|j}
|
j
|d_
|
j|d�n||(|j�dS(Ntargsii����i(tsettchildrent	enumeratettypeRtNAMEtvaluetlentCOMMAtnexttappendtaddtparenttprefixtreplacetchanged(tselftnodetresultstnames_insertedttestlistRtnew_argstiteratortidxtargtatom((s4/usr/lib64/python2.7/lib2to3/fixes/fix_isinstance.pyt	transforms*	
	!0
	

	(t__name__t
__module__tTruet
BM_compatibletPATTERNt	run_orderR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_isinstance.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_isinstance.pyt<module>
sPKJ/�\c�����fix_filter.pycnu�[����
{fc@sedZddlmZddlmZddlmZmZmZm	Z	dej
fd��YZdS(s�Fixer that changes filter(F, X) into list(filter(F, X)).

We avoid the transformation if the filter() call is directly contained
in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or
for V in <>:.

NOTE: This is still not correct if the original code was depending on
filter(F, X) to return a string if X is a string and a tuple if X is a
tuple.  That would require type inference, which we don't do.  Let
Python 2.6 figure it out.
i(ttoken(t
fixer_base(tNametCalltListComptin_special_contextt	FixFiltercBs#eZeZdZdZd�ZRS(s�
    filter_lambda=power<
        'filter'
        trailer<
            '('
            arglist<
                lambdef< 'lambda'
                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
                >
                ','
                it=any
            >
            ')'
        >
    >
    |
    power<
        'filter'
        trailer< '(' arglist< none='None' ',' seq=any > ')' >
    >
    |
    power<
        'filter'
        args=trailer< '(' [any] ')' >
    >
    sfuture_builtins.filtercCs|j|�rdSd|krst|jd�j�|jd�j�|jd�j�|jd�j��}n}d|kr�ttd�td�|dj�td��}n=t|�r�dS|j�}d|_ttd	�|g�}|j|_|S(
Nt
filter_lambdatfptittxptnoneu_ftsequulist(	tshould_skipRtgettcloneRRtNonetprefixR(tselftnodetresultstnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_filter.pyt	transform5s&	
	(t__name__t
__module__tTruet
BM_compatibletPATTERNtskip_onR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_filter.pyRsN(t__doc__tpgen2RtRt
fixer_utilRRRRtConditionalFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_filter.pyt<module>s"PKJ/�\}ׄLLfix_nonzero.pyonu�[����
{fc@sIdZddlmZddlmZmZdejfd��YZdS(s*Fixer for __nonzero__ -> __bool__ methods.i(t
fixer_base(tNametsymst
FixNonzerocBseZeZdZd�ZRS(s�
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def' name='__nonzero__'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    cCs0|d}tdd|j�}|j|�dS(Ntnameu__bool__tprefix(RRtreplace(tselftnodetresultsRtnew((s1/usr/lib64/python2.7/lib2to3/fixes/fix_nonzero.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_nonzero.pyRsN(t__doc__tRt
fixer_utilRRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_nonzero.pyt<module>sPKJ/�\R�R���fix_numliterals.pycnu�[����
{fc@sSdZddlmZddlmZddlmZdejfd��YZdS(s-Fixer that turns 1L into 1, 0755 into 0o755.
i(ttoken(t
fixer_base(tNumbertFixNumliteralscBs#eZejZd�Zd�ZRS(cCs#|jjd�p"|jddkS(Nu0i����uLl(tvaluet
startswith(tselftnode((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pytmatchscCs}|j}|ddkr&|d }nD|jd�rj|j�rjtt|��dkrjd|d}nt|d|j�S(Ni����uLlu0iu0otprefix(RRtisdigittlentsetRR	(RRtresultstval((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pyt	transforms	
3(t__name__t
__module__RtNUMBERt_accept_typeRR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pyRs		N(	t__doc__tpgen2RtRt
fixer_utilRtBaseFixR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pyt<module>sPKJ/�\B�o���fix_dict.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for dict methods.

d.keys() -> list(d.keys())
d.items() -> list(d.items())
d.values() -> list(d.values())

d.iterkeys() -> iter(d.keys())
d.iteritems() -> iter(d.items())
d.itervalues() -> iter(d.values())

d.viewkeys() -> d.keys()
d.viewitems() -> d.items()
d.viewvalues() -> d.values()

Except in certain very specific contexts: the iter() can be dropped
when the context is list(), sorted(), iter() or for...in; the list()
can be dropped when the context is list() or sorted() (but not iter()
or for...in!). Special contexts that apply to both: list(), sorted(), tuple()
set(), any(), all(), sum().

Note: iter(d.keys()) could be written as iter(d) but since the
original d.iterkeys() was also redundant we don't fix this.  And there
are (rare) contexts where it makes a difference (e.g. when passing it
as an argument to a function that introspects the argument).
"""

# Local imports
from .. import pytree
from .. import patcomp
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, Call, LParen, RParen, ArgList, Dot
from .. import fixer_util


iter_exempt = fixer_util.consuming_calls | set(["iter"])


class FixDict(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    power< head=any+
         trailer< '.' method=('keys'|'items'|'values'|
                              'iterkeys'|'iteritems'|'itervalues'|
                              'viewkeys'|'viewitems'|'viewvalues') >
         parens=trailer< '(' ')' >
         tail=any*
    >
    """

    def transform(self, node, results):
        head = results["head"]
        method = results["method"][0] # Extract node for method name
        tail = results["tail"]
        syms = self.syms
        method_name = method.value
        isiter = method_name.startswith(u"iter")
        isview = method_name.startswith(u"view")
        if isiter or isview:
            method_name = method_name[4:]
        assert method_name in (u"keys", u"items", u"values"), repr(method)
        head = [n.clone() for n in head]
        tail = [n.clone() for n in tail]
        special = not tail and self.in_special_context(node, isiter)
        args = head + [pytree.Node(syms.trailer,
                                   [Dot(),
                                    Name(method_name,
                                         prefix=method.prefix)]),
                       results["parens"].clone()]
        new = pytree.Node(syms.power, args)
        if not (special or isview):
            new.prefix = u""
            new = Call(Name(u"iter" if isiter else u"list"), [new])
        if tail:
            new = pytree.Node(syms.power, [new] + tail)
        new.prefix = node.prefix
        return new

    P1 = "power< func=NAME trailer< '(' node=any ')' > any* >"
    p1 = patcomp.compile_pattern(P1)

    P2 = """for_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
         """
    p2 = patcomp.compile_pattern(P2)

    def in_special_context(self, node, isiter):
        if node.parent is None:
            return False
        results = {}
        if (node.parent.parent is not None and
               self.p1.match(node.parent.parent, results) and
               results["node"] is node):
            if isiter:
                # iter(d.iterkeys()) -> iter(d.keys()), etc.
                return results["func"].value in iter_exempt
            else:
                # list(d.keys()) -> list(d.keys()), etc.
                return results["func"].value in fixer_util.consuming_calls
        if not isiter:
            return False
        # for ... in d.iterkeys() -> for ... in d.keys(), etc.
        return self.p2.match(node.parent, results) and results["node"] is node
PKJ/�\�����fix_except.pyonu�[����
{fc@s�dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZd�Z
dejfd��YZd	S(
s�Fixer for except statements with named exceptions.

The following cases will be converted:

- "except E, T:" where T is a name:

    except E as T:

- "except E, T:" where T is not a name, tuple or list:

        except E as t:
            T = t

    This is done because the target of an "except" clause must be a
    name.

- "except E, T:" where T is a tuple or list literal:

        except E as t:
            T = t.args
i(tpytree(ttoken(t
fixer_base(tAssigntAttrtNametis_tupletis_listtsymsccsbx[t|�D]M\}}|jtjkr
|jdjdkrZ|||dfVqZq
q
WdS(Niuexcepti(t	enumeratettypeRt
except_clausetchildrentvalue(tnodestitn((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pytfind_exceptsst	FixExceptcBseZeZdZd�ZRS(s1
    try_stmt< 'try' ':' (simple_stmt | suite)
                  cleanup=(except_clause ':' (simple_stmt | suite))+
                  tail=(['except' ':' (simple_stmt | suite)]
                        ['else' ':' (simple_stmt | suite)]
                        ['finally' ':' (simple_stmt | suite)]) >
    cCs,|j}g|dD]}|j�^q}g|dD]}|j�^q7}x�t|�D]�\}}	t|j�dkr\|jdd!\}
}}|jtddd��|jtj	kr�t|j
�dd�}
|j�}d|_|j|
�|
j�}
|	j}x0t|�D]"\}}t
|tj�rPqqWt|�s[t|�r|t|t|
td	���}nt||
�}x(t|| �D]}|	jd
|�q�W|	j||�q�|jdkr�d|_q�q\q\Wg|jd D]}|j�^q�||}tj|j|�S(Nttailtcleanupiiuastprefixu uuargsii(RtcloneRtlenRtreplaceRR
RtNAMEtnew_nameRR	t
isinstanceRtNodeRRRRtreversedtinsert_child(tselftnodetresultsRRRtchttry_cleanupRte_suitetEtcommatNtnew_Nttargettsuite_stmtsRtstmttassigntchildtcR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyt	transform/s6	##	
	!.(t__name__t
__module__tTruet
BM_compatibletPATTERNR/(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyR$sN(t__doc__tRtpgen2RRt
fixer_utilRRRRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyt<module>s.	PKJ/�\		`pwwfix_exec.pyonu�[����
{fc@s_dZddlmZddlmZddlmZmZmZdejfd��YZ	dS(s�Fixer for exec.

This converts usages of the exec statement into calls to a built-in
exec() function.

exec code in ns1, ns2 -> exec(code, ns1, ns2)
i(tpytree(t
fixer_base(tCommatNametCalltFixExeccBseZeZdZd�ZRS(sx
    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
    |
    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
    cCs�|j}|d}|jd�}|jd�}|j�g}d|d_|dk	rx|jt�|j�g�n|dk	r�|jt�|j�g�nttd�|d|j�S(Ntatbtctiuexectprefix(	tsymstgettcloneR
tNonetextendRRR(tselftnodetresultsRRRRtargs((s./usr/lib64/python2.7/lib2to3/fixes/fix_exec.pyt	transforms	

(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_exec.pyRsN(
t__doc__R	RRt
fixer_utilRRRtBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_exec.pyt<module>
sPKJ/�\!x	�PPfix_zip.pycnu�[����
{fc@sOdZddlmZddlmZmZmZdejfd��YZdS(s7
Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...)
unless there exists a 'from future_builtins import zip' statement in the
top-level namespace.

We avoid the transformation if the zip() call is directly contained in
iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:.
i(t
fixer_base(tNametCalltin_special_contexttFixZipcBs#eZeZdZdZd�ZRS(s:
    power< 'zip' args=trailer< '(' [any] ')' >
    >
    sfuture_builtins.zipcCs`|j|�rdSt|�r#dS|j�}d|_ttd�|g�}|j|_|S(Nuulist(tshould_skipRtNonetclonetprefixRR(tselftnodetresultstnew((s-/usr/lib64/python2.7/lib2to3/fixes/fix_zip.pyt	transforms	(t__name__t
__module__tTruet
BM_compatibletPATTERNtskip_onR
(((s-/usr/lib64/python2.7/lib2to3/fixes/fix_zip.pyRsN(	t__doc__tRt
fixer_utilRRRtConditionalFixR(((s-/usr/lib64/python2.7/lib2to3/fixes/fix_zip.pyt<module>sPKJ/�\~&���fix_urllib.pyonu�[����
{fc@ssdZddlmZmZddlmZddlmZmZm	Z	m
Z
mZmZm
Z
iddddd	d
ddd
gfddddddddddddddddgfddgfgd 6dd
d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7gfdd8d9gfgd:6Zed:jed d;�d<�Zd=efd>��YZd?S(@s�Fix changes imports of urllib which are now incompatible.
   This is rather similar to fix_imports, but because of the more
   complex nature of the fixing for urllib, it has its own fixer.
i����(t
alternatest
FixImports(t
fixer_base(tNametCommat
FromImporttNewlinetfind_indentationtNodetsymssurllib.requestt	URLopenertFancyURLopenerturlretrievet
_urlopenerturlopent
urlcleanuptpathname2urlturl2pathnamesurllib.parsetquotet
quote_plustunquotetunquote_plust	urlencodet	splitattrt	splithostt
splitnporttsplitpasswdt	splitportt
splitquerytsplittagt	splittypet	splitusert
splitvaluesurllib.errortContentTooShortErrorturllibtinstall_openertbuild_openertRequesttOpenerDirectortBaseHandlertHTTPDefaultErrorHandlertHTTPRedirectHandlertHTTPCookieProcessortProxyHandlertHTTPPasswordMgrtHTTPPasswordMgrWithDefaultRealmtAbstractBasicAuthHandlertHTTPBasicAuthHandlertProxyBasicAuthHandlertAbstractDigestAuthHandlertHTTPDigestAuthHandlertProxyDigestAuthHandlertHTTPHandlertHTTPSHandlertFileHandlert
FTPHandlertCacheFTPHandlertUnknownHandlertURLErrort	HTTPErrorturllib2iccs�t�}x�tj�D]w\}}xh|D]`}|\}}t|�}d||fVd|||fVd|Vd|Vd||fVq)WqWdS(Ns�import_name< 'import' (module=%r
                                  | dotted_as_names< any* module=%r any* >) >
                  s�import_from< 'from' mod_member=%r 'import'
                       ( member=%s | import_as_name< member=%s 'as' any > |
                         import_as_names< members=any*  >) >
                  sIimport_from< 'from' module_star=%r 'import' star='*' >
                  stimport_name< 'import'
                                  dotted_as_name< module_as=%r 'as' any > >
                  sKpower< bare_with_attr=%r trailer< '.' member=%s > any* >
                  (tsettMAPPINGtitemsR(tbaret
old_moduletchangestchanget
new_moduletmembers((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt
build_pattern1s	
		t	FixUrllibcBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCsdjt��S(Nt|(tjoinRF(tself((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyRFJscCs�|jd�}|j}g}x?t|jd D],}|jt|dd|�t�g�q0W|jtt|jddd|��|j|�dS(s�Transform for the basic import case. Replaces the old
           import name with a comma separated list of its
           replacements.
        tmodulei����itprefixN(	tgetRLR>tvaluetextendRRtappendtreplace(RJtnodetresultst
import_modtpreftnamestname((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyttransform_importMs	*(cCs�|jd�}|j}|jd�}|r�t|t�rI|d}nd
}x6t|jD]'}|j|dkr]|d}Pq]q]W|r�|jt|d|��q�|j	|d�n/g}i}	|d}
x�|
D]�}|j
tjkr|j
dj}|j
dj}n|j}d
}|d	kr�xlt|jD]Z}||dkr>|d|	krx|j|d�n|	j|dg�j|�q>q>Wq�q�Wg}
t|�}t}d
�}x�|D]�}|	|}g}x8|d D],}|j|||��|jt��q�W|j||d|��t||�}|sa|jjj|�rm||_n|
j|�t}q�W|
r�g}x(|
d D]}|j|t�g�q�W|j|
d�|j|�n|j	|d�d
S(s�Transform for imports of specific module elements. Replaces
           the module to be imported from with the appropriate new
           module.
        t
mod_membertmemberiiRLs!This is an invalid module elementREiu,cSsz|jtjkrdt|jdjd|�|jdj�|jdj�g}ttj|�gSt|jd|�gS(NiRLii(ttypeR	timport_as_nameRtchildrenRNtcloneR(RWRLtkids((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pythandle_name�si����sAll module elements are invalidN(RMRLt
isinstancetlisttNoneR>RNRQRtcannot_convertR[R	R\R]RPt
setdefaultRtTrueRORRtparenttendswithtFalseR(RJRRRSRYRURZtnew_nameRCtmodulestmod_dictREtas_nametmember_namet	new_nodestindentationtfirstR`RKteltsRVtelttnewtnodestnew_node((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyttransform_member]sh	



	+	



cCs�|jd�}|jd�}d}t|t�r@|d}nx6t|jD]'}|j|dkrN|d}PqNqNW|r�|jt|d|j��n|j	|d�dS(s.Transform for calls to module members in code.tbare_with_attrRZiiRLs!This is an invalid module elementN(
RMRcRaRbR>RNRQRRLRd(RJRRRSt
module_dotRZRjRC((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt
transform_dot�s

cCs�|jd�r"|j||�n�|jd�rD|j||�nf|jd�rf|j||�nD|jd�r�|j|d�n"|jd�r�|j|d�ndS(NRKRYRxtmodule_starsCannot handle star imports.t	module_ass#This module is now multiple modules(RMRXRwRzRd(RJRRRS((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt	transform�s(t__name__t
__module__RFRXRwRzR}(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyRGHs
			L	N(t__doc__tlib2to3.fixes.fix_importsRRtlib2to3Rtlib2to3.fixer_utilRRRRRRR	R>RPRFRG(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt<module>sD4							PKJ/�\c�����fix_filter.pyonu�[����
{fc@sedZddlmZddlmZddlmZmZmZm	Z	dej
fd��YZdS(s�Fixer that changes filter(F, X) into list(filter(F, X)).

We avoid the transformation if the filter() call is directly contained
in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or
for V in <>:.

NOTE: This is still not correct if the original code was depending on
filter(F, X) to return a string if X is a string and a tuple if X is a
tuple.  That would require type inference, which we don't do.  Let
Python 2.6 figure it out.
i(ttoken(t
fixer_base(tNametCalltListComptin_special_contextt	FixFiltercBs#eZeZdZdZd�ZRS(s�
    filter_lambda=power<
        'filter'
        trailer<
            '('
            arglist<
                lambdef< 'lambda'
                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
                >
                ','
                it=any
            >
            ')'
        >
    >
    |
    power<
        'filter'
        trailer< '(' arglist< none='None' ',' seq=any > ')' >
    >
    |
    power<
        'filter'
        args=trailer< '(' [any] ')' >
    >
    sfuture_builtins.filtercCs|j|�rdSd|krst|jd�j�|jd�j�|jd�j�|jd�j��}n}d|kr�ttd�td�|dj�td��}n=t|�r�dS|j�}d|_ttd	�|g�}|j|_|S(
Nt
filter_lambdatfptittxptnoneu_ftsequulist(	tshould_skipRtgettcloneRRtNonetprefixR(tselftnodetresultstnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_filter.pyt	transform5s&	
	(t__name__t
__module__tTruet
BM_compatibletPATTERNtskip_onR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_filter.pyRsN(t__doc__tpgen2RtRt
fixer_utilRRRRtConditionalFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_filter.pyt<module>s"PKJ/�\ܬ'!!fix_imports2.pynu�[���"""Fix incompatible imports and module references that must be fixed after
fix_imports."""
from . import fix_imports


MAPPING = {
            'whichdb': 'dbm',
            'anydbm': 'dbm',
          }


class FixImports2(fix_imports.FixImports):

    run_order = 7

    mapping = MAPPING
PKJ/�\n����fix_paren.pynu�[���"""Fixer that addes parentheses where they are required

This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``."""

# By Taek Joo Kim and Benjamin Peterson

# Local imports
from .. import fixer_base
from ..fixer_util import LParen, RParen

# XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2]
class FixParen(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
        atom< ('[' | '(')
            (listmaker< any
                comp_for<
                    'for' NAME 'in'
                    target=testlist_safe< any (',' any)+ [',']
                     >
                    [any]
                >
            >
            |
            testlist_gexp< any
                comp_for<
                    'for' NAME 'in'
                    target=testlist_safe< any (',' any)+ [',']
                     >
                    [any]
                >
            >)
        (']' | ')') >
    """

    def transform(self, node, results):
        target = results["target"]

        lparen = LParen()
        lparen.prefix = target.prefix
        target.prefix = u"" # Make it hug the parentheses
        target.insert_child(0, lparen)
        target.append_child(RParen())
PKJ/�\�E[//__init__.pynu�[���# Dummy file to make this directory a package.
PKJ/�\���WWfix_long.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s/Fixer that turns 'long' into 'int' everywhere.
i����(t
fixer_base(tis_probably_builtintFixLongcBseZeZdZd�ZRS(s'long'cCs&t|�r"d|_|j�ndS(Nuint(Rtvaluetchanged(tselftnodetresults((s./usr/lib64/python2.7/lib2to3/fixes/fix_long.pyt	transforms	(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_long.pyRsN(t__doc__tlib2to3Rtlib2to3.fixer_utilRtBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_long.pyt<module>sPKJ/�\�tڢ��fix_buffer.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s4Fixer that changes buffer(...) into memoryview(...).i(t
fixer_base(tNamet	FixBuffercBs#eZeZeZdZd�ZRS(sR
              power< name='buffer' trailer< '(' [any] ')' > any* >
              cCs*|d}|jtdd|j��dS(Ntnameu
memoryviewtprefix(treplaceRR(tselftnodetresultsR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_buffer.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletexplicittPATTERNR	(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_buffer.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_buffer.pyt<module>sPKJ/�\p�V\�
�
fix_operator.pynu�[���"""Fixer for operator functions.

operator.isCallable(obj)       -> hasattr(obj, '__call__')
operator.sequenceIncludes(obj) -> operator.contains(obj)
operator.isSequenceType(obj)   -> isinstance(obj, collections.Sequence)
operator.isMappingType(obj)    -> isinstance(obj, collections.Mapping)
operator.isNumberType(obj)     -> isinstance(obj, numbers.Number)
operator.repeat(obj, n)        -> operator.mul(obj, n)
operator.irepeat(obj, n)       -> operator.imul(obj, n)
"""

# Local imports
from lib2to3 import fixer_base
from lib2to3.fixer_util import Call, Name, String, touch_import


def invocation(s):
    def dec(f):
        f.invocation = s
        return f
    return dec


class FixOperator(fixer_base.BaseFix):
    BM_compatible = True
    order = "pre"

    methods = """
              method=('isCallable'|'sequenceIncludes'
                     |'isSequenceType'|'isMappingType'|'isNumberType'
                     |'repeat'|'irepeat')
              """
    obj = "'(' obj=any ')'"
    PATTERN = """
              power< module='operator'
                trailer< '.' %(methods)s > trailer< %(obj)s > >
              |
              power< %(methods)s trailer< %(obj)s > >
              """ % dict(methods=methods, obj=obj)

    def transform(self, node, results):
        method = self._check_method(node, results)
        if method is not None:
            return method(node, results)

    @invocation("operator.contains(%s)")
    def _sequenceIncludes(self, node, results):
        return self._handle_rename(node, results, u"contains")

    @invocation("hasattr(%s, '__call__')")
    def _isCallable(self, node, results):
        obj = results["obj"]
        args = [obj.clone(), String(u", "), String(u"'__call__'")]
        return Call(Name(u"hasattr"), args, prefix=node.prefix)

    @invocation("operator.mul(%s)")
    def _repeat(self, node, results):
        return self._handle_rename(node, results, u"mul")

    @invocation("operator.imul(%s)")
    def _irepeat(self, node, results):
        return self._handle_rename(node, results, u"imul")

    @invocation("isinstance(%s, collections.Sequence)")
    def _isSequenceType(self, node, results):
        return self._handle_type2abc(node, results, u"collections", u"Sequence")

    @invocation("isinstance(%s, collections.Mapping)")
    def _isMappingType(self, node, results):
        return self._handle_type2abc(node, results, u"collections", u"Mapping")

    @invocation("isinstance(%s, numbers.Number)")
    def _isNumberType(self, node, results):
        return self._handle_type2abc(node, results, u"numbers", u"Number")

    def _handle_rename(self, node, results, name):
        method = results["method"][0]
        method.value = name
        method.changed()

    def _handle_type2abc(self, node, results, module, abc):
        touch_import(None, module, node)
        obj = results["obj"]
        args = [obj.clone(), String(u", " + u".".join([module, abc]))]
        return Call(Name(u"isinstance"), args, prefix=node.prefix)

    def _check_method(self, node, results):
        method = getattr(self, "_" + results["method"][0].value.encode("ascii"))
        if callable(method):
            if "module" in results:
                return method
            else:
                sub = (unicode(results["obj"]),)
                invocation_str = unicode(method.invocation) % sub
                self.warning(node, u"You should use '%s' here." % invocation_str)
        return None
PKJ/�\ܾ���fix_xreadlines.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(spFix "for x in f.xreadlines()" -> "for x in f".

This fixer will also convert g(f.xreadlines) into g(f.__iter__).i(t
fixer_base(tNamet
FixXreadlinescBseZeZdZd�ZRS(s�
    power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > >
    |
    power< any+ trailer< '.' no_call='xreadlines' > >
    cCsb|jd�}|r4|jtdd|j��n*|jg|dD]}|j�^qE�dS(Ntno_callu__iter__tprefixtcall(tgettreplaceRRtclone(tselftnodetresultsRtx((s4/usr/lib64/python2.7/lib2to3/fixes/fix_xreadlines.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR
(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_xreadlines.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_xreadlines.pyt<module>sPKJ/�\�xA�
�
fix_next.pyonu�[����
{fc@s�dZddlmZddlmZddlmZddlm	Z	m
Z
mZdZdej
fd��YZd	�Zd
�Zd�ZdS(
s.Fixer for it.next() -> next(it), per PEP 3114.i(ttoken(tpython_symbols(t
fixer_base(tNametCalltfind_bindings;Calls to builtin next() possibly shadowed by global bindingtFixNextcBs,eZeZdZdZd�Zd�ZRS(s�
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def'
                              name='next'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    tprecCsWtt|�j||�td|�}|rJ|j|t�t|_n	t|_dS(Nunext(	tsuperRt
start_treeRtwarningtbind_warningtTruet
shadowed_nexttFalse(tselfttreetfilenametn((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyR	$scCs�|jd�}|jd�}|jd�}|r�|jr[|jtdd|j��qg|D]}|j�^qb}d|d_|jttdd|j�|��n�|r�tdd|j�}|j|�n�|rWt|�rA|d	}d
jg|D]}t	|�^q�j
�dkr=|j|t�ndS|jtd��n(d|kr|j|t�t
|_ndS(
Ntbasetattrtnameu__next__tprefixuiunexttheadtu__builtin__tglobal(tgetR
treplaceRRtcloneRtis_assign_targettjointstrtstripR
RR(RtnodetresultsRRRRR((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyt	transform.s,	
(
4(t__name__t
__module__Rt
BM_compatibletPATTERNtorderR	R#(((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyRs
	
cCs]t|�}|dkrtSx:|jD]/}|jtjkrBtSt||�r&tSq&WtS(N(	tfind_assigntNoneRtchildrenttypeRtEQUALt
is_subtreeR(R!tassigntchild((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyRQscCsH|jtjkr|S|jtjks7|jdkr;dSt|j�S(N(R,tsymst	expr_stmttsimple_stmttparentR*R)(R!((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyR)]s
!cs-|�krtSt�fd�|jD��S(Nc3s|]}t|��VqdS(N(R.(t.0tc(R!(s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pys	<genexpr>gs(RtanyR+(trootR!((R!s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyR.dsN(t__doc__tpgen2RtpygramRR1RRt
fixer_utilRRRRtBaseFixRRR)R.(((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyt<module>s@		PKJ/�\R�R���fix_numliterals.pyonu�[����
{fc@sSdZddlmZddlmZddlmZdejfd��YZdS(s-Fixer that turns 1L into 1, 0755 into 0o755.
i(ttoken(t
fixer_base(tNumbertFixNumliteralscBs#eZejZd�Zd�ZRS(cCs#|jjd�p"|jddkS(Nu0i����uLl(tvaluet
startswith(tselftnode((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pytmatchscCs}|j}|ddkr&|d }nD|jd�rj|j�rjtt|��dkrjd|d}nt|d|j�S(Ni����uLlu0iu0otprefix(RRtisdigittlentsetRR	(RRtresultstval((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pyt	transforms	
3(t__name__t
__module__RtNUMBERt_accept_typeRR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pyRs		N(	t__doc__tpgen2RtRt
fixer_utilRtBaseFixR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_numliterals.pyt<module>sPKJ/�\��\���fix_unicode.pycnu�[����
{fc@sWdZddlmZddlmZidd6dd6Zdejfd	��YZd
S(s�Fixer for unicode.

* Changes unicode to str and unichr to chr.

* If "...\u..." is not unicode literal change it into "...\\u...".

* Change u"..." into "...".

i(ttoken(t
fixer_baseuchruunichrustruunicodet
FixUnicodecBs&eZeZdZd�Zd�ZRS(sSTRING | 'unicode' | 'unichr'cCs/tt|�j||�d|jk|_dS(Ntunicode_literals(tsuperRt
start_treetfuture_featuresR(tselfttreetfilename((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyRscCs|jtjkr2|j�}t|j|_|S|jtjkr|j}|jr�|ddkr�d|kr�djg|j	d�D]$}|j
dd�j
dd�^q��}n|dd	kr�|d
}n||jkr�|S|j�}||_|SdS(Niu'"u\u\\u\uu\\uu\Uu\\UuuUi(ttypeRtNAMEtclonet_mappingtvaluetSTRINGRtjointsplittreplace(Rtnodetresultstnewtvaltv((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyt	transforms"	&=
	(t__name__t
__module__tTruet
BM_compatibletPATTERNRR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyRs	N(t__doc__tpgen2RtRR
tBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyt<module>	sPKJ/�\��J���
fix_types.pyonu�[����
{fc@s	dZddlmZddlmZddlmZidd6dd6d	d
6dd6d
d6d
d6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6d	d'6d(d)6d*d+6ZgeD]Zd,e^q�Z	d-ej
fd.��YZd/S(0s�Fixer for removing uses of the types module.

These work for only the known names in the types module.  The forms above
can include types. or not.  ie, It is assumed the module is imported either as:

    import types
    from types import ... # either * or specific types

The import statements are not modified.

There should be another fixer that handles at least the following constants:

   type([]) -> list
   type(()) -> tuple
   type('') -> str

i(ttoken(t
fixer_base(tNametbooltBooleanTypet
memoryviewt
BufferTypettypet	ClassTypetcomplextComplexTypetdicttDictTypetDictionaryTypestype(Ellipsis)tEllipsisTypetfloatt	FloatTypetinttIntTypetlisttListTypetLongTypetobjectt
ObjectTypes
type(None)tNoneTypestype(NotImplemented)tNotImplementedTypetslicet	SliceTypetbytest
StringTypes(str,)tStringTypesttuplet	TupleTypetTypeTypetstrtUnicodeTypetranget
XRangeTypes)power< 'types' trailer< '.' name='%s' > >tFixTypescBs&eZeZdje�Zd�ZRS(t|cCs9ttj|dj��}|r5t|d|j�SdS(Ntnametprefix(tunicodet
_TYPE_MAPPINGtgettvalueRR)tNone(tselftnodetresultst	new_value((s//usr/lib64/python2.7/lib2to3/fixes/fix_types.pyt	transform:s(t__name__t
__module__tTruet
BM_compatibletjoint_patstPATTERNR3(((s//usr/lib64/python2.7/lib2to3/fixes/fix_types.pyR&6sN(t__doc__tpgen2RtRt
fixer_utilRR+ttR9tBaseFixR&(((s//usr/lib64/python2.7/lib2to3/fixes/fix_types.pyt<module>s6
PKJ/�\�P�r

fix_itertools.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sT Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and
    itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363)

    imports from itertools are fixed in fix_itertools_import.py

    If itertools is imported as something else (ie: import itertools as it;
    it.izip(spam, eggs)) method calls will not get fixed.
    i(t
fixer_base(tNametFixItertoolscBs0eZeZdZde�ZdZd�ZRS(s7('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')s�
              power< it='itertools'
                  trailer<
                     dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > >
              |
              power< func=%(it_funcs)s trailer< '(' [any] ')' > >
              icCs�d}|dd}d|krt|jd	krt|d|d}}|j}|j�|j�|jj|�n|p�|j}|jt|jdd|��dS(
Ntfuncitituifilterfalseuizip_longesttdotitprefix(uifilterfalseuizip_longest(tNonetvalueRtremovetparenttreplaceR(tselftnodetresultsRRRR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_itertools.pyt	transforms	

(	t__name__t
__module__tTruet
BM_compatibletit_funcstlocalstPATTERNt	run_orderR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_itertools.pyRs

N(t__doc__tRt
fixer_utilRtBaseFixR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_itertools.pyt<module>sPKJ/�\�tڢ��fix_buffer.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s4Fixer that changes buffer(...) into memoryview(...).i(t
fixer_base(tNamet	FixBuffercBs#eZeZeZdZd�ZRS(sR
              power< name='buffer' trailer< '(' [any] ')' > any* >
              cCs*|d}|jtdd|j��dS(Ntnameu
memoryviewtprefix(treplaceRR(tselftnodetresultsR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_buffer.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletexplicittPATTERNR	(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_buffer.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_buffer.pyt<module>sPKJ/�\�,�b�	�	
fix_raise.pycnu�[����
{fc@s{dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZdejfd��YZ
dS(	s[Fixer for 'raise E, V, T'

raise         -> raise
raise E       -> raise E
raise E, V    -> raise E(V)
raise E, V, T -> raise E(V).with_traceback(T)
raise E, None, T -> raise E.with_traceback(T)

raise (((E, E'), E''), E'''), V -> raise E(V)
raise "foo", V, T               -> warns about string exceptions


CAVEATS:
1) "raise E, V" will be incorrectly translated if V is an exception
   instance. The correct Python 3 idiom is

        raise E from V

   but since we can't detect instance-hood by syntax alone and since
   any client code would have to be changed as well, we don't automate
   this.
i(tpytree(ttoken(t
fixer_base(tNametCalltAttrtArgListtis_tupletFixRaisecBseZeZdZd�ZRS(sB
    raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] >
    c
Cs|j}|dj�}|jtjkrEd}|j||�dSt|�r�x*t|�r}|jdjdj�}qTWd|_nd|kr�t	j
|jtd�|g�}|j|_|S|dj�}t|�rg|jdd!D]}|j�^q�}	nd	|_|g}	d
|kr�|d
j�}
d	|
_|}|jtj
ksm|jdkrt||	�}nt|td��t|
g�g}t	j
|jtd�g|�}|j|_|St	j
|jtd�t||	�gd
|j�SdS(Ntexcs+Python 3 does not support string exceptionsiiu tvaluraisei����uttbuNoneuwith_tracebacktprefix(tsymstclonettypeRtSTRINGtcannot_convertRtchildrenRRtNodet
raise_stmtRtNAMEtvalueRRRtsimple_stmt(
tselftnodetresultsR
R	tmsgtnewR
tctargsRtetwith_tb((s//usr/lib64/python2.7/lib2to3/fixes/fix_raise.pyt	transform&s@	!,			!%"(t__name__t
__module__tTruet
BM_compatibletPATTERNR!(((s//usr/lib64/python2.7/lib2to3/fixes/fix_raise.pyRsN(t__doc__tRtpgen2RRt
fixer_utilRRRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_raise.pyt<module>s
(PKJ/�\}V�GG
fix_reduce.pynu�[���# Copyright 2008 Armin Ronacher.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for reduce().

Makes sure reduce() is imported from the functools module if reduce is
used in that module.
"""

from lib2to3 import fixer_base
from lib2to3.fixer_util import touch_import



class FixReduce(fixer_base.BaseFix):

    BM_compatible = True
    order = "pre"

    PATTERN = """
    power< 'reduce'
        trailer< '('
            arglist< (
                (not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any) |
                (not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any)
            ) >
        ')' >
    >
    """

    def transform(self, node, results):
        touch_import(u'functools', u'reduce', node)
PKJ/�\Tv˒RRfix_tuple_params.pycnu�[����
{fc@s�dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZd�Z
dejfd��YZd	�Zd
�Zgd
d�Zd�Zd
S(s:Fixer for function definitions with tuple parameters.

def func(((a, b), c), d):
    ...

    ->

def func(x, d):
    ((a, b), c) = x
    ...

It will also support lambdas:

    lambda (x, y): x + y -> lambda t: t[0] + t[1]

    # The parens are a syntax error in Python 3
    lambda (x): x + y -> lambda x: x + y
i(tpytree(ttoken(t
fixer_base(tAssigntNametNewlinetNumbert	SubscripttsymscCs)t|tj�o(|jdjtjkS(Ni(t
isinstanceRtNodetchildrenttypeRtSTRING(tstmt((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pytis_docstringstFixTupleParamscBs,eZdZeZdZd�Zd�ZRS(is
              funcdef< 'def' any parameters< '(' args=any ')' >
                       ['->' any] ':' suite=any+ >
              |
              lambda=
              lambdef< 'lambda' args=vfpdef< '(' inner=any ')' >
                       ':' body=any
              >
              cs0d|kr�j||�Sg�|d}|d}|djdjtjkryd}|djdj}t��n!d}d}tjtjd��t	���fd	�}|jt
jkr�||�n`|jt
jkr1xKt
|j�D]7\}}	|	jt
jkr�||	d
|dk�q�q�Wn�s;dSx�D]}
|d|
_qBW|}|dkr{d�d_n1t|dj|�r�|�d_|d}nx�D]}
|d|
_q�W�|dj||+x=t|d|t��d�D]}||dj|_qW|dj�dS(Ntlambdatsuitetargsiiiu; ucs�t�j��}|j�}d|_t||j��}|rNd|_n|j|��jtjt	j
|�j�g��dS(Nuu (Rtnew_nametclonetprefixRtreplacetappendRR
Rtsimple_stmt(t	tuple_argt
add_prefixtntargR(tendt	new_linestself(s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pythandle_tupleCs	
Ru (ttransform_lambdaRRRtINDENTtvalueRRtLeaftFalseRttfpdeft
typedargslistt	enumeratetparentRRtrangetlentchanged(R tnodetresultsRRtstarttindentR!tiRtlinetafter((RRR s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyt	transform.sF


 



(cCsN|d}|d}t|d�}|jtjkr\|j�}d|_|j|�dSt|�}t|�}|j	t
|��}t|dd�}	|j|	j��x�|j�D]�}
|
jtjkr�|
j
|kr�g||
j
D]}|j�^q�}tjtj|	j�g|�}
|
j|
_|
j|
�q�q�WdS(NRtbodytinneru R(t
simplify_argsRRtNAMERRRtfind_paramstmap_to_indexRt
tuple_nameRt
post_orderR$RR
Rtpower(R R.R/RR6R7tparamstto_indexttup_namet	new_paramRtct
subscriptstnew((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR"ns(

	
!&(t__name__t
__module__t	run_ordertTruet
BM_compatibletPATTERNR5R"(((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyRs

	@cCso|jtjtjfkr|S|jtjkr[x#|jtjkrV|jd}q4W|Std|��dS(NisReceived unexpected node %s(RRtvfplistRR9tvfpdefRtRuntimeError(R.((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR8�scCsn|jtjkr#t|jd�S|jtjkr<|jSg|jD]$}|jtjkrFt|�^qFS(Ni(	RRRMR:RRR9R$tCOMMA(R.RC((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR:�s
cCs�|dkri}nxht|�D]Z\}}ttt|���g}t|t�rnt||d|�q"||||<q"W|S(Ntd(tNoneR)RRtunicodeR	tlistR;(t
param_listRRPR2tobjttrailer((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR;�s	cCsVg}x@|D]8}t|t�r8|jt|��q
|j|�q
Wdj|�S(Nu_(R	RSRR<tjoin(RTtlRU((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR<�s
N(t__doc__tRtpgen2RRt
fixer_utilRRRRRRRtBaseFixRR8R:RQR;R<(((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyt<module>s.	l		PKJ/�\sGћ��fix_getcwdu.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s1
Fixer that changes os.getcwdu() to os.getcwd().
i(t
fixer_base(tNamet
FixGetcwducBseZeZdZd�ZRS(sR
              power< 'os' trailer< dot='.' name='getcwdu' > any* >
              cCs*|d}|jtdd|j��dS(Ntnameugetcwdtprefix(treplaceRR(tselftnodetresultsR((s1/usr/lib64/python2.7/lib2to3/fixes/fix_getcwdu.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletPATTERNR	(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_getcwdu.pyR
sN(t__doc__tRt
fixer_utilRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_getcwdu.pyt<module>sPKJ/�\Tv˒RRfix_tuple_params.pyonu�[����
{fc@s�dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZd�Z
dejfd��YZd	�Zd
�Zgd
d�Zd�Zd
S(s:Fixer for function definitions with tuple parameters.

def func(((a, b), c), d):
    ...

    ->

def func(x, d):
    ((a, b), c) = x
    ...

It will also support lambdas:

    lambda (x, y): x + y -> lambda t: t[0] + t[1]

    # The parens are a syntax error in Python 3
    lambda (x): x + y -> lambda x: x + y
i(tpytree(ttoken(t
fixer_base(tAssigntNametNewlinetNumbert	SubscripttsymscCs)t|tj�o(|jdjtjkS(Ni(t
isinstanceRtNodetchildrenttypeRtSTRING(tstmt((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pytis_docstringstFixTupleParamscBs,eZdZeZdZd�Zd�ZRS(is
              funcdef< 'def' any parameters< '(' args=any ')' >
                       ['->' any] ':' suite=any+ >
              |
              lambda=
              lambdef< 'lambda' args=vfpdef< '(' inner=any ')' >
                       ':' body=any
              >
              cs0d|kr�j||�Sg�|d}|d}|djdjtjkryd}|djdj}t��n!d}d}tjtjd��t	���fd	�}|jt
jkr�||�n`|jt
jkr1xKt
|j�D]7\}}	|	jt
jkr�||	d
|dk�q�q�Wn�s;dSx�D]}
|d|
_qBW|}|dkr{d�d_n1t|dj|�r�|�d_|d}nx�D]}
|d|
_q�W�|dj||+x=t|d|t��d�D]}||dj|_qW|dj�dS(Ntlambdatsuitetargsiiiu; ucs�t�j��}|j�}d|_t||j��}|rNd|_n|j|��jtjt	j
|�j�g��dS(Nuu (Rtnew_nametclonetprefixRtreplacetappendRR
Rtsimple_stmt(t	tuple_argt
add_prefixtntargR(tendt	new_linestself(s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pythandle_tupleCs	
Ru (ttransform_lambdaRRRtINDENTtvalueRRtLeaftFalseRttfpdeft
typedargslistt	enumeratetparentRRtrangetlentchanged(R tnodetresultsRRtstarttindentR!tiRtlinetafter((RRR s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyt	transform.sF


 



(cCsN|d}|d}t|d�}|jtjkr\|j�}d|_|j|�dSt|�}t|�}|j	t
|��}t|dd�}	|j|	j��x�|j�D]�}
|
jtjkr�|
j
|kr�g||
j
D]}|j�^q�}tjtj|	j�g|�}
|
j|
_|
j|
�q�q�WdS(NRtbodytinneru R(t
simplify_argsRRtNAMERRRtfind_paramstmap_to_indexRt
tuple_nameRt
post_orderR$RR
Rtpower(R R.R/RR6R7tparamstto_indexttup_namet	new_paramRtct
subscriptstnew((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR"ns(

	
!&(t__name__t
__module__t	run_ordertTruet
BM_compatibletPATTERNR5R"(((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyRs

	@cCso|jtjtjfkr|S|jtjkr[x#|jtjkrV|jd}q4W|Std|��dS(NisReceived unexpected node %s(RRtvfplistRR9tvfpdefRtRuntimeError(R.((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR8�scCsn|jtjkr#t|jd�S|jtjkr<|jSg|jD]$}|jtjkrFt|�^qFS(Ni(	RRRMR:RRR9R$tCOMMA(R.RC((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR:�s
cCs�|dkri}nxht|�D]Z\}}ttt|���g}t|t�rnt||d|�q"||||<q"W|S(Ntd(tNoneR)RRtunicodeR	tlistR;(t
param_listRRPR2tobjttrailer((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR;�s	cCsVg}x@|D]8}t|t�r8|jt|��q
|j|�q
Wdj|�S(Nu_(R	RSRR<tjoin(RTtlRU((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyR<�s
N(t__doc__tRtpgen2RRt
fixer_utilRRRRRRRtBaseFixRR8R:RQR;R<(((s6/usr/lib64/python2.7/lib2to3/fixes/fix_tuple_params.pyt<module>s.	l		PKJ/�\�V%e~~fix_has_key.pycnu�[����
{fc@sidZddlmZddlmZddlmZddlmZmZdej	fd��YZ
dS(	s&Fixer for has_key().

Calls to .has_key() methods are expressed in terms of the 'in'
operator:

    d.has_key(k) -> k in d

CAVEATS:
1) While the primary target of this fixer is dict.has_key(), the
   fixer will change any has_key() method call, regardless of its
   class.

2) Cases like this will not be converted:

    m = d.has_key
    if m(k):
        ...

   Only *calls* to has_key() are converted. While it is possible to
   convert the above to something like

    m = d.__contains__
    if m(k):
        ...

   this is currently not done.
i(tpytree(ttoken(t
fixer_base(tNametparenthesizet	FixHasKeycBseZeZdZd�ZRS(s�
    anchor=power<
        before=any+
        trailer< '.' 'has_key' >
        trailer<
            '('
            ( not(arglist | argument<any '=' any>) arg=any
            | arglist<(not argument<any '=' any>) arg=any ','>
            )
            ')'
        >
        after=any*
    >
    |
    negation=not_test<
        'not'
        anchor=power<
            before=any+
            trailer< '.' 'has_key' >
            trailer<
                '('
                ( not(arglist | argument<any '=' any>) arg=any
                | arglist<(not argument<any '=' any>) arg=any ','>
                )
                ')'
            >
        >
    >
    c
CsU|st�|j}|jj|jkrC|jj|j�rCdS|jd�}|d}|j	}g|dD]}|j
�^qp}|dj
�}	|jd�}
|
r�g|
D]}|j
�^q�}
n|	j|j|j|j|j
|j|j|jfkrt|	�}	nt|�dkr6|d}ntj|j|�}d|_	td	d
d�}|r�tdd
d�}tj|j||f�}ntj|j|	||f�}
|
r�t|
�}
tj|j|
ft|
��}
n|jj|j|j|j|j|j|j|j|j|jf	krHt|
�}
n||
_	|
S(Ntnegationtanchortbeforetargtafteriiu uintprefixunot( tAssertionErrortsymstparentttypetnot_testtpatterntmatchtNonetgetRtclonet
comparisontand_testtor_testttesttlambdeftargumentRtlenRtNodetpowerRtcomp_opttupletexprtxor_exprtand_exprt
shift_exprt
arith_exprttermtfactor(tselftnodetresultsR
RRRtnRR	R
tn_optn_nottnew((s1/usr/lib64/python2.7/lib2to3/fixes/fix_has_key.pyt	transformHsF	
	#"!
	%	(t__name__t
__module__tTruet
BM_compatibletPATTERNR/(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_has_key.pyR'sN(t__doc__tRtpgen2RRt
fixer_utilRRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_has_key.pyt<module>s
PKJ/�\��\��fix_standarderror.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for StandardError -> Exception."""

# Local imports
from .. import fixer_base
from ..fixer_util import Name


class FixStandarderror(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
              'StandardError'
              """

    def transform(self, node, results):
        return Name(u"Exception", prefix=node.prefix)
PKJ/�\�P��..fix_itertools_imports.pynu�[���""" Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) """

# Local imports
from lib2to3 import fixer_base
from lib2to3.fixer_util import BlankLine, syms, token


class FixItertoolsImports(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
              import_from< 'from' 'itertools' 'import' imports=any >
              """ %(locals())

    def transform(self, node, results):
        imports = results['imports']
        if imports.type == syms.import_as_name or not imports.children:
            children = [imports]
        else:
            children = imports.children
        for child in children[::2]:
            if child.type == token.NAME:
                member = child.value
                name_node = child
            elif child.type == token.STAR:
                # Just leave the import as is.
                return
            else:
                assert child.type == syms.import_as_name
                name_node = child.children[0]
            member_name = name_node.value
            if member_name in (u'imap', u'izip', u'ifilter'):
                child.value = None
                child.remove()
            elif member_name in (u'ifilterfalse', u'izip_longest'):
                node.changed()
                name_node.value = (u'filterfalse' if member_name[1] == u'f'
                                   else u'zip_longest')

        # Make sure the import statement is still sane
        children = imports.children[:] or [imports]
        remove_comma = True
        for child in children:
            if remove_comma and child.type == token.COMMA:
                child.remove()
            else:
                remove_comma ^= True

        while children and children[-1].type == token.COMMA:
            children.pop().remove()

        # If there are no imports left, just get rid of the entire statement
        if (not (imports.children or getattr(imports, 'value', None)) or
            imports.parent is None):
            p = node.prefix
            node = BlankLine()
            node.prefix = p
            return node
PKJ/�\� 
JJ
fix_intern.pynu�[���# Copyright 2006 Georg Brandl.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for intern().

intern(s) -> sys.intern(s)"""

# Local imports
from .. import pytree
from .. import fixer_base
from ..fixer_util import Name, Attr, touch_import


class FixIntern(fixer_base.BaseFix):
    BM_compatible = True
    order = "pre"

    PATTERN = """
    power< 'intern'
           trailer< lpar='('
                    ( not(arglist | argument<any '=' any>) obj=any
                      | obj=arglist<(not argument<any '=' any>) any ','> )
                    rpar=')' >
           after=any*
    >
    """

    def transform(self, node, results):
        if results:
            # I feel like we should be able to express this logic in the
            # PATTERN above but I don't know how to do it so...
            obj = results['obj']
            if obj:
                if obj.type == self.syms.star_expr:
                    return  # Make no change.
                if (obj.type == self.syms.argument and
                    obj.children[0].value == '**'):
                    return  # Make no change.
        syms = self.syms
        obj = results["obj"].clone()
        if obj.type == syms.arglist:
            newarglist = obj.clone()
        else:
            newarglist = pytree.Node(syms.arglist, [obj.clone()])
        after = results["after"]
        if after:
            after = [n.clone() for n in after]
        new = pytree.Node(syms.power,
                          Attr(Name(u"sys"), Name(u"intern")) +
                          [pytree.Node(syms.trailer,
                                       [results["lpar"].clone(),
                                        newarglist,
                                        results["rpar"].clone()])] + after)
        new.prefix = node.prefix
        touch_import(None, u'sys', node)
        return new
PKJ/�\ܾ���fix_xreadlines.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(spFix "for x in f.xreadlines()" -> "for x in f".

This fixer will also convert g(f.xreadlines) into g(f.__iter__).i(t
fixer_base(tNamet
FixXreadlinescBseZeZdZd�ZRS(s�
    power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > >
    |
    power< any+ trailer< '.' no_call='xreadlines' > >
    cCsb|jd�}|r4|jtdd|j��n*|jg|dD]}|j�^qE�dS(Ntno_callu__iter__tprefixtcall(tgettreplaceRRtclone(tselftnodetresultsRtx((s4/usr/lib64/python2.7/lib2to3/fixes/fix_xreadlines.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR
(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_xreadlines.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_xreadlines.pyt<module>sPKJ/�\��5��
�
fix_exitfunc.pyonu�[����
{fc@sgdZddlmZmZddlmZmZmZmZm	Z	m
Z
dejfd��YZdS(s7
Convert use of sys.exitfunc to use the atexit module.
i����(tpytreet
fixer_base(tNametAttrtCalltCommatNewlinetsymstFixExitfunccBs5eZeZeZdZd�Zd�Zd�ZRS(s�
              (
                  sys_import=import_name<'import'
                      ('sys'
                      |
                      dotted_as_names< (any ',')* 'sys' (',' any)* >
                      )
                  >
              |
                  expr_stmt<
                      power< 'sys' trailer< '.' 'exitfunc' > >
                  '=' func=any >
              )
              cGstt|�j|�dS(N(tsuperRt__init__(tselftargs((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyR
scCs&tt|�j||�d|_dS(N(R	Rt
start_treetNonet
sys_import(Rttreetfilename((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyR
!scCs�d|kr/|jdkr+|d|_ndS|dj�}d|_tjtjtt	d�t	d���}t
||g|j�}|j|�|jdkr�|j|d�dS|jj
d}|jtjkr|jt��|jt	dd��n�|jj}|j
j|j�}|j}	tjtjt	d	�t	dd�g�}
tjtj|
g�}|j|dt��|j|d
|�dS(NRtfuncuuatexituregistersKCan't find sys import; Please add an atexit import at the top of your file.iu uimporti(RRtclonetprefixRtNodeRtpowerRRRtreplacetwarningtchildrenttypetdotted_as_namestappend_childRtparenttindextimport_nametsimple_stmttinsert_childR(RtnodetresultsRtregistertcalltnamestcontaining_stmttpositiontstmt_containert
new_importtnew((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyt	transform%s2	
	(	t__name__t
__module__tTruetkeep_line_ordert
BM_compatibletPATTERNR
R
R,(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyRs		N(
t__doc__tlib2to3RRtlib2to3.fixer_utilRRRRRRtBaseFixR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyt<module>s.PKJ/�\�d�{��fix_raw_input.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s2Fixer that changes raw_input(...) into input(...).i(t
fixer_base(tNametFixRawInputcBseZeZdZd�ZRS(sU
              power< name='raw_input' trailer< '(' [any] ')' > any* >
              cCs*|d}|jtdd|j��dS(Ntnameuinputtprefix(treplaceRR(tselftnodetresultsR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_raw_input.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletPATTERNR	(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_raw_input.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_raw_input.pyt<module>sPKJ/�\��cۛ�fix_metaclass.pyonu�[����
{fc@s�dZddlmZddlmZddlmZmZmZm	Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zdejfd��YZd
S(s�Fixer for __metaclass__ = X -> (metaclass=X) methods.

   The various forms of classef (inherits nothing, inherits once, inherints
   many) don't parse the same in the CST so we look at ALL classes for
   a __metaclass__ and if we find one normalize the inherits to all be
   an arglist.

   For one-liner classes ('class X: pass') there is no indent/dedent so
   we normalize those into having a suite.

   Moving the __metaclass__ into the classdef can also cause the class
   body to be empty so there is some special casing for that as well.

   This fixer also tries very hard to keep original indenting and spacing
   in all those corner cases.

i(t
fixer_base(ttoken(tNametsymstNodetLeafcCs�x�|jD]�}|jtjkr,t|�S|jtjkr
|jr
|jd}|jtjkr�|jr�|jd}t|t�r�|j	dkr�t
Sq�q
q
WtS(s� we have to check the cls_node without changing it.
        There are two possibilities:
          1)  clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta')
          2)  clsdef => simple_stmt => expr_stmt => Leaf('__meta')
    it
__metaclass__(tchildrenttypeRtsuitet
has_metaclasstsimple_stmtt	expr_stmtt
isinstanceRtvaluetTruetFalse(tparenttnodet	expr_nodet	left_side((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyR
s


cCs�x'|jD]}|jtjkr
dSq
Wx?t|j�D]"\}}|jtjkr:Pq:q:Wtd��ttjg�}xC|j|dr�|j|d}|j	|j
��|j�q�W|j	|�|}dS(sf one-line classes don't get a suite in the parse tree so we add
        one to normalize the tree
    NsNo class suite and no ':'!i(RRRR	t	enumerateRtCOLONt
ValueErrorRtappend_childtclonetremove(tcls_nodeRtiR	t	move_node((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytfixup_parse_tree-s
c
Cs�x7t|j�D]"\}}|jtjkrPqqWdS|j�ttjg�}ttj	|g�}x;|j|r�|j|}|j
|j��|j�qnW|j||�|jdjd}|jdjd}	|	j
|_
dS(s� if there is a semi-colon all the parts count as part of the same
        simple_stmt.  We just want the __metaclass__ part so we move
        everything after the semi-colon into its own simple_stmt node
    Ni(RRRRtSEMIRRRRRRRtinsert_childtprefix(
RRt	stmt_nodetsemi_indRtnew_exprtnew_stmtRt	new_leaf1t	old_leaf1((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytfixup_simple_stmtGs

cCs:|jr6|jdjtjkr6|jdj�ndS(Ni����(RRRtNEWLINER(R((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytremove_trailing_newline_s"ccs�x3|jD]}|jtjkr
Pq
q
Wtd��x�tt|j��D]�\}}|jtjkrL|jrL|jd}|jtjkr�|jr�|jd}t	|t
�r�|jdkr�t|||�t
|�|||fVq�q�qLqLWdS(NsNo class suite!iu
__metaclass__(RRRR	RtlistRRRR
RRR(R*(RRRtsimple_nodeRt	left_node((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyt
find_metasds"


cCs�|jddd�}x,|rD|j�}|jtjkrPqqWxm|r�|j�}t|t�r�|jtjkr�|jr�d|_ndS|j	|jddd��qHWdS(s� If an INDENT is followed by a thing with a prefix then nuke the prefix
        Otherwise we get in trouble when removing __metaclass__ at suite start
    Ni����u(
RtpopRRtINDENTR
RtDEDENTR!textend(R	tkidsR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytfixup_indent{s		!	tFixMetaclasscBseZeZdZd�ZRS(s
    classdef<any*>
    cCst|�sdSt|�d}x-t|�D]\}}}|}|j�q-W|jdj}t|j�dkr�|jdjtj	kr�|jd}q�|jdj
�}	ttj	|	g�}|jd|�n�t|j�dkrttj	g�}|j
d|�n~t|j�dkr�ttj	g�}|j
dttjd��|j
d|�|j
dttjd��ntd	��|jdjd}
d
|
_|
j}|jr�|jttjd��d|
_n	d
|
_|jd}d
|jd_d
|jd_|j|�t|�|js�|j�t|d�}
||
_|j|
�|jttjd��n�t|j�dkr|jdjtjkr|jdjtjkrt|d�}
|j
d|
�|j
dttjd��ndS(Niiiiiiu)u(sUnexpected class definitiont	metaclassu,u uiupassu
i����i����(R
RtNoneR.RRRtlenRtarglistRRt	set_childR RRtRPARtLPARRRR!RtCOMMAR4R)R0R1(tselfRtresultstlast_metaclassR	Rtstmtt	text_typeR9Rtmeta_txttorig_meta_prefixRt	pass_leaf((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyt	transform�s^
				


	
	
(t__name__t
__module__Rt
BM_compatibletPATTERNRF(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyR5�sN(t__doc__tRtpygramRt
fixer_utilRRRRR
RR(R*R.R4tBaseFixR5(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyt<module>s"						PKJ/�\��fix_operator.pycnu�[����
{fc@s^dZddlmZddlmZmZmZmZd�Zdej	fd��YZ
dS(s�Fixer for operator functions.

operator.isCallable(obj)       -> hasattr(obj, '__call__')
operator.sequenceIncludes(obj) -> operator.contains(obj)
operator.isSequenceType(obj)   -> isinstance(obj, collections.Sequence)
operator.isMappingType(obj)    -> isinstance(obj, collections.Mapping)
operator.isNumberType(obj)     -> isinstance(obj, numbers.Number)
operator.repeat(obj, n)        -> operator.mul(obj, n)
operator.irepeat(obj, n)       -> operator.imul(obj, n)
i����(t
fixer_base(tCalltNametStringttouch_importcs�fd�}|S(Ncs
�|_|S(N(t
invocation(tf(ts(s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pytdecs	((RR((Rs2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyRstFixOperatorcBs�eZeZdZdZdZdedede�Zd�Z	e
d�d��Ze
d	�d
��Ze
d�d��Z
e
d
�d��Ze
d�d��Ze
d�d��Ze
d�d��Zd�Zd�Zd�ZRS(tpres�
              method=('isCallable'|'sequenceIncludes'
                     |'isSequenceType'|'isMappingType'|'isNumberType'
                     |'repeat'|'irepeat')
              s'(' obj=any ')'s�
              power< module='operator'
                trailer< '.' %(methods)s > trailer< %(obj)s > >
              |
              power< %(methods)s trailer< %(obj)s > >
              tmethodstobjcCs/|j||�}|dk	r+|||�SdS(N(t
_check_methodtNone(tselftnodetresultstmethod((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt	transform)ssoperator.contains(%s)cCs|j||d�S(Nucontains(t_handle_rename(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_sequenceIncludes.sshasattr(%s, '__call__')cCsG|d}|j�td�td�g}ttd�|d|j�S(NRu, u
'__call__'uhasattrtprefix(tcloneRRRR(RRRRtargs((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_isCallable2s
!soperator.mul(%s)cCs|j||d�S(Numul(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_repeat8ssoperator.imul(%s)cCs|j||d�S(Nuimul(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_irepeat<ss$isinstance(%s, collections.Sequence)cCs|j||dd�S(NucollectionsuSequence(t_handle_type2abc(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_isSequenceType@ss#isinstance(%s, collections.Mapping)cCs|j||dd�S(NucollectionsuMapping(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt_isMappingTypeDssisinstance(%s, numbers.Number)cCs|j||dd�S(NunumbersuNumber(R(RRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt
_isNumberTypeHscCs%|dd}||_|j�dS(NRi(tvaluetchanged(RRRtnameR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyRLs	cCsatd||�|d}|j�tddj||g��g}ttd�|d|j�S(NRu, u.u
isinstanceR(RRRRtjoinRRR(RRRtmoduletabcRR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyRQs
+cCs�t|d|ddjjd��}t|�r�d|krC|St|d�f}t|j�|}|j|d|�ndS(Nt_RitasciiR$RuYou should use '%s' here.(tgetattrR tencodetcallabletunicodeRtwarningR(RRRRtsubtinvocation_str((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyR
Ws'(t__name__t
__module__tTruet
BM_compatibletorderRRtdicttPATTERNRRRRRRRRRRRR
(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyR	s 			N(t__doc__tlib2to3Rtlib2to3.fixer_utilRRRRRtBaseFixR	(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_operator.pyt<module>
s"	PKJ/�\���WWfix_long.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s/Fixer that turns 'long' into 'int' everywhere.
i����(t
fixer_base(tis_probably_builtintFixLongcBseZeZdZd�ZRS(s'long'cCs&t|�r"d|_|j�ndS(Nuint(Rtvaluetchanged(tselftnodetresults((s./usr/lib64/python2.7/lib2to3/fixes/fix_long.pyt	transforms	(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_long.pyRsN(t__doc__tlib2to3Rtlib2to3.fixer_utilRtBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_long.pyt<module>sPKJ/�\mU�
fix_paren.pycnu�[����
{fc@sIdZddlmZddlmZmZdejfd��YZdS(suFixer that addes parentheses where they are required

This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``.i(t
fixer_base(tLParentRParentFixParencBseZeZdZd�ZRS(s
        atom< ('[' | '(')
            (listmaker< any
                comp_for<
                    'for' NAME 'in'
                    target=testlist_safe< any (',' any)+ [',']
                     >
                    [any]
                >
            >
            |
            testlist_gexp< any
                comp_for<
                    'for' NAME 'in'
                    target=testlist_safe< any (',' any)+ [',']
                     >
                    [any]
                >
            >)
        (']' | ')') >
    cCsL|d}t�}|j|_d|_|jd|�|jt��dS(Nttargetui(Rtprefixtinsert_childtappend_childR(tselftnodetresultsRtlparen((s//usr/lib64/python2.7/lib2to3/fixes/fix_paren.pyt	transform%s
		(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_paren.pyRsN(t__doc__tRt
fixer_utilRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_paren.pyt<module>sPKJ/�\t�fix_asserts.pycnu�[����
{fc@s�dZddlmZddlmZedddddd	d
ddd
dddddddd	dddd
dddddd�Zdefd��YZdS(s5Fixer that replaces deprecated unittest method names.i(tBaseFix(tNametassert_t
assertTruetassertEqualstassertEqualtassertNotEqualstassertNotEqualtassertAlmostEqualstassertAlmostEqualtassertNotAlmostEqualstassertNotAlmostEqualtassertRegexpMatchestassertRegextassertRaisesRegexptassertRaisesRegextfailUnlessEqualtfailIfEqualtfailUnlessAlmostEqualtfailIfAlmostEqualt
failUnlesstfailUnlessRaisestassertRaisestfailIftassertFalset
FixAssertscBs-eZddjeee��Zd�ZRS(sH
              power< any+ trailer< '.' meth=(%s)> any* >
              t|cCs8|dd}|jttt|�d|j��dS(Ntmethitprefix(treplaceRtNAMEStstrR(tselftnodetresultstname((s1/usr/lib64/python2.7/lib2to3/fixes/fix_asserts.pyt	transform s(t__name__t
__module__tjointmaptreprRtPATTERNR$(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_asserts.pyRsN(t__doc__t
fixer_baseRt
fixer_utilRtdictRR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_asserts.pyt<module>s$	PKJ/�\G~�Zfix_repr.pycnu�[����
{fc@sOdZddlmZddlmZmZmZdejfd��YZdS(s/Fixer that transforms `xyzzy` into repr(xyzzy).i(t
fixer_base(tCalltNametparenthesizetFixReprcBseZeZdZd�ZRS(s7
              atom < '`' expr=any '`' >
              cCsS|dj�}|j|jjkr4t|�}nttd�|gd|j�S(Ntexprureprtprefix(tclonettypetsymst	testlist1RRRR(tselftnodetresultsR((s./usr/lib64/python2.7/lib2to3/fixes/fix_repr.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_repr.pyRsN(	t__doc__tRt
fixer_utilRRRtBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_repr.pyt<module>sPKK/�\��]]fix_has_key.pyonu�[����
{fc@sidZddlmZddlmZddlmZddlmZmZdej	fd��YZ
dS(	s&Fixer for has_key().

Calls to .has_key() methods are expressed in terms of the 'in'
operator:

    d.has_key(k) -> k in d

CAVEATS:
1) While the primary target of this fixer is dict.has_key(), the
   fixer will change any has_key() method call, regardless of its
   class.

2) Cases like this will not be converted:

    m = d.has_key
    if m(k):
        ...

   Only *calls* to has_key() are converted. While it is possible to
   convert the above to something like

    m = d.__contains__
    if m(k):
        ...

   this is currently not done.
i(tpytree(ttoken(t
fixer_base(tNametparenthesizet	FixHasKeycBseZeZdZd�ZRS(s�
    anchor=power<
        before=any+
        trailer< '.' 'has_key' >
        trailer<
            '('
            ( not(arglist | argument<any '=' any>) arg=any
            | arglist<(not argument<any '=' any>) arg=any ','>
            )
            ')'
        >
        after=any*
    >
    |
    negation=not_test<
        'not'
        anchor=power<
            before=any+
            trailer< '.' 'has_key' >
            trailer<
                '('
                ( not(arglist | argument<any '=' any>) arg=any
                | arglist<(not argument<any '=' any>) arg=any ','>
                )
                ')'
            >
        >
    >
    c
CsI|j}|jj|jkr7|jj|j�r7dS|jd�}|d}|j}g|dD]}|j	�^qd}|dj	�}	|jd�}
|
r�g|
D]}|j	�^q�}
n|	j|j
|j|j|j|j
|j|jfkrt|	�}	nt|�dkr*|d}ntj|j|�}d|_td	d
d�}|r�tdd
d�}tj|j||f�}ntj|j
|	||f�}
|
r�t|
�}
tj|j|
ft|
��}
n|jj|j
|j|j|j|j|j|j|j|jf	kr<t|
�}
n||
_|
S(Ntnegationtanchortbeforetargtafteriiu uintprefixunot(tsymstparentttypetnot_testtpatterntmatchtNonetgetRtclonet
comparisontand_testtor_testttesttlambdeftargumentRtlenRtNodetpowerRtcomp_opttupletexprtxor_exprtand_exprt
shift_exprt
arith_exprttermtfactor(tselftnodetresultsRRRRtnRR	R
tn_optn_nottnew((s1/usr/lib64/python2.7/lib2to3/fixes/fix_has_key.pyt	transformHsD	
	#"!
	%	(t__name__t
__module__tTruet
BM_compatibletPATTERNR.(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_has_key.pyR'sN(t__doc__tRtpgen2RRt
fixer_utilRRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_has_key.pyt<module>s
PKK/�\mU�
fix_paren.pyonu�[����
{fc@sIdZddlmZddlmZmZdejfd��YZdS(suFixer that addes parentheses where they are required

This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``.i(t
fixer_base(tLParentRParentFixParencBseZeZdZd�ZRS(s
        atom< ('[' | '(')
            (listmaker< any
                comp_for<
                    'for' NAME 'in'
                    target=testlist_safe< any (',' any)+ [',']
                     >
                    [any]
                >
            >
            |
            testlist_gexp< any
                comp_for<
                    'for' NAME 'in'
                    target=testlist_safe< any (',' any)+ [',']
                     >
                    [any]
                >
            >)
        (']' | ')') >
    cCsL|d}t�}|j|_d|_|jd|�|jt��dS(Nttargetui(Rtprefixtinsert_childtappend_childR(tselftnodetresultsRtlparen((s//usr/lib64/python2.7/lib2to3/fixes/fix_paren.pyt	transform%s
		(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_paren.pyRsN(t__doc__tRt
fixer_utilRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_paren.pyt<module>sPKK/�\&�[�fix_xrange.pyonu�[����
{fc@s_dZddlmZddlmZmZmZddlmZdejfd��YZ	dS(s/Fixer that changes xrange(...) into range(...).i(t
fixer_base(tNametCalltconsuming_calls(tpatcompt	FixXrangecBsteZeZdZd�Zd�Zd�Zd�Zd�Z	dZ
eje
�Z
dZeje�Zd�ZRS(	s�
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              cCs)tt|�j||�t�|_dS(N(tsuperRt
start_treetsetttransformed_xranges(tselfttreetfilename((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyRscCs
d|_dS(N(tNoneR	(R
RR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pytfinish_treescCs^|d}|jdkr)|j||�S|jdkrH|j||�Stt|���dS(Ntnameuxrangeurange(tvaluettransform_xrangettransform_ranget
ValueErrortrepr(R
tnodetresultsR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyt	transforms
cCs@|d}|jtdd|j��|jjt|��dS(NRurangetprefix(treplaceRRR	taddtid(R
RRR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyR$s
cCs�t|�|jkr�|j|�r�ttd�|dj�g�}ttd�|gd|j�}x|dD]}|j|�qsW|SdS(NurangetargsulistRtrest(RR	tin_special_contextRRtcloneRtappend_child(R
RRt
range_callt	list_calltn((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyR*s"s3power< func=NAME trailer< '(' node=any ')' > any* >s�for_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
            | comparison< any 'in' node=any any*>
         cCs�|jdkrtSi}|jjdk	rg|jj|jj|�rg|d|krg|djtkS|jj|j|�o�|d|kS(NRtfunc(tparentR
tFalsetp1tmatchRRtp2(R
RR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyR?s(t__name__t
__module__tTruet
BM_compatibletPATTERNRRRRRtP1Rtcompile_patternR'tP2R)R(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyRs						N(
t__doc__tRt
fixer_utilRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyt<module>sPKK/�\_}�<<fix_dict.pyonu�[����
{fc@s�dZddlmZddlmZddlmZddlmZddlmZm	Z	m
Z
mZmZm
Z
ddlmZejedg�BZd	ejfd
��YZdS(sjFixer for dict methods.

d.keys() -> list(d.keys())
d.items() -> list(d.items())
d.values() -> list(d.values())

d.iterkeys() -> iter(d.keys())
d.iteritems() -> iter(d.items())
d.itervalues() -> iter(d.values())

d.viewkeys() -> d.keys()
d.viewitems() -> d.items()
d.viewvalues() -> d.values()

Except in certain very specific contexts: the iter() can be dropped
when the context is list(), sorted(), iter() or for...in; the list()
can be dropped when the context is list() or sorted() (but not iter()
or for...in!). Special contexts that apply to both: list(), sorted(), tuple()
set(), any(), all(), sum().

Note: iter(d.keys()) could be written as iter(d) but since the
original d.iterkeys() was also redundant we don't fix this.  And there
are (rare) contexts where it makes a difference (e.g. when passing it
as an argument to a function that introspects the argument).
i(tpytree(tpatcomp(ttoken(t
fixer_base(tNametCalltLParentRParentArgListtDot(t
fixer_utiltitertFixDictcBsPeZeZdZd�ZdZeje�Z	dZ
eje
�Zd�ZRS(s
    power< head=any+
         trailer< '.' method=('keys'|'items'|'values'|
                              'iterkeys'|'iteritems'|'itervalues'|
                              'viewkeys'|'viewitems'|'viewvalues') >
         parens=trailer< '(' ')' >
         tail=any*
    >
    cCs�|d}|dd}|d}|j}|j}|jd�}|jd�}	|s^|	rk|d}ng|D]}
|
j�^qr}g|D]}
|
j�^q�}|o�|j||�}|tj|jt�t	|d|j
�g�|d	j�g}tj|j|�}
|p!|	sTd
|
_
tt	|r?dnd�|
g�}
n|rytj|j|
g|�}
n|j
|
_
|
S(Ntheadtmethodittailuiteruviewitprefixtparensuulist(
tsymstvaluet
startswithtclonetin_special_contextRtNodettrailerR	RRtpowerR(tselftnodetresultsR
RRRtmethod_nametisitertisviewtntspecialtargstnew((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyt	transform7s2

		
		's3power< func=NAME trailer< '(' node=any ')' > any* >smfor_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
         cCs�|jdkrtSi}|jjdk	r�|jj|jj|�r�|d|kr�|rm|djtkS|djtjkSn|s�tS|j	j|j|�o�|d|kS(NRtfunc(
tparenttNonetFalsetp1tmatchRtiter_exemptR
tconsuming_callstp2(RRRR((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyR[s(
t__name__t
__module__tTruet
BM_compatibletPATTERNR$tP1Rtcompile_patternR)tP2R-R(((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyR*s
	N(t__doc__tRRtpgen2RRR
RRRRRR	R,tsetR+tBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyt<module>s.PKK/�\��H|�
�

fix_xrange.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that changes xrange(...) into range(...)."""

# Local imports
from .. import fixer_base
from ..fixer_util import Name, Call, consuming_calls
from .. import patcomp


class FixXrange(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              """

    def start_tree(self, tree, filename):
        super(FixXrange, self).start_tree(tree, filename)
        self.transformed_xranges = set()

    def finish_tree(self, tree, filename):
        self.transformed_xranges = None

    def transform(self, node, results):
        name = results["name"]
        if name.value == u"xrange":
            return self.transform_xrange(node, results)
        elif name.value == u"range":
            return self.transform_range(node, results)
        else:
            raise ValueError(repr(name))

    def transform_xrange(self, node, results):
        name = results["name"]
        name.replace(Name(u"range", prefix=name.prefix))
        # This prevents the new range call from being wrapped in a list later.
        self.transformed_xranges.add(id(node))

    def transform_range(self, node, results):
        if (id(node) not in self.transformed_xranges and
            not self.in_special_context(node)):
            range_call = Call(Name(u"range"), [results["args"].clone()])
            # Encase the range call in list().
            list_call = Call(Name(u"list"), [range_call],
                             prefix=node.prefix)
            # Put things that were after the range() call after the list call.
            for n in results["rest"]:
                list_call.append_child(n)
            return list_call

    P1 = "power< func=NAME trailer< '(' node=any ')' > any* >"
    p1 = patcomp.compile_pattern(P1)

    P2 = """for_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
            | comparison< any 'in' node=any any*>
         """
    p2 = patcomp.compile_pattern(P2)

    def in_special_context(self, node):
        if node.parent is None:
            return False
        results = {}
        if (node.parent.parent is not None and
               self.p1.match(node.parent.parent, results) and
               results["node"] is node):
            # list(d.keys()) -> list(d.keys()), etc.
            return results["func"].value in consuming_calls
        # for ... in d.iterkeys() -> for ... in d.keys(), etc.
        return self.p2.match(node.parent, results) and results["node"] is node
PKK/�\D�Y��
fix_map.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that changes map(F, ...) into list(map(F, ...)) unless there
exists a 'from future_builtins import map' statement in the top-level
namespace.

As a special case, map(None, X) is changed into list(X).  (This is
necessary because the semantics are changed in this case -- the new
map(None, X) is equivalent to [(x,) for x in X].)

We avoid the transformation (except for the special case mentioned
above) if the map() call is directly contained in iter(<>), list(<>),
tuple(<>), sorted(<>), ...join(<>), or for V in <>:.

NOTE: This is still not correct if the original code was depending on
map(F, X, Y, ...) to go on until the longest argument is exhausted,
substituting None for missing values -- like zip(), it now stops as
soon as the shortest argument is exhausted.
"""

# Local imports
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, Call, ListComp, in_special_context
from ..pygram import python_symbols as syms

class FixMap(fixer_base.ConditionalFix):
    BM_compatible = True

    PATTERN = """
    map_none=power<
        'map'
        trailer< '(' arglist< 'None' ',' arg=any [','] > ')' >
    >
    |
    map_lambda=power<
        'map'
        trailer<
            '('
            arglist<
                lambdef< 'lambda'
                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
                >
                ','
                it=any
            >
            ')'
        >
    >
    |
    power<
        'map' trailer< '(' [arglist=any] ')' >
    >
    """

    skip_on = 'future_builtins.map'

    def transform(self, node, results):
        if self.should_skip(node):
            return

        if node.parent.type == syms.simple_stmt:
            self.warning(node, "You should use a for loop here")
            new = node.clone()
            new.prefix = u""
            new = Call(Name(u"list"), [new])
        elif "map_lambda" in results:
            new = ListComp(results["xp"].clone(),
                           results["fp"].clone(),
                           results["it"].clone())
        else:
            if "map_none" in results:
                new = results["arg"].clone()
            else:
                if "arglist" in results:
                    args = results["arglist"]
                    if args.type == syms.arglist and \
                       args.children[0].type == token.NAME and \
                       args.children[0].value == "None":
                        self.warning(node, "cannot convert map(None, ...) "
                                     "with multiple arguments because map() "
                                     "now truncates to the shortest sequence")
                        return
                if in_special_context(node):
                    return None
                new = node.clone()
            new.prefix = u""
            new = Call(Name(u"list"), [new])
        new.prefix = node.prefix
        return new
PKK/�\l�SOO
fix_buffer.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that changes buffer(...) into memoryview(...)."""

# Local imports
from .. import fixer_base
from ..fixer_util import Name


class FixBuffer(fixer_base.BaseFix):
    BM_compatible = True

    explicit = True # The user must ask for this fixer

    PATTERN = """
              power< name='buffer' trailer< '(' [any] ')' > any* >
              """

    def transform(self, node, results):
        name = results["name"]
        name.replace(Name(u"memoryview", prefix=name.prefix))
PKK/�\���fix_itertools.pynu�[���""" Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and
    itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363)

    imports from itertools are fixed in fix_itertools_import.py

    If itertools is imported as something else (ie: import itertools as it;
    it.izip(spam, eggs)) method calls will not get fixed.
    """

# Local imports
from .. import fixer_base
from ..fixer_util import Name

class FixItertools(fixer_base.BaseFix):
    BM_compatible = True
    it_funcs = "('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')"
    PATTERN = """
              power< it='itertools'
                  trailer<
                     dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > >
              |
              power< func=%(it_funcs)s trailer< '(' [any] ')' > >
              """ %(locals())

    # Needs to be run after fix_(map|zip|filter)
    run_order = 6

    def transform(self, node, results):
        prefix = None
        func = results['func'][0]
        if ('it' in results and
            func.value not in (u'ifilterfalse', u'izip_longest')):
            dot, it = (results['dot'], results['it'])
            # Remove the 'itertools'
            prefix = it.prefix
            it.remove()
            # Replace the node which contains ('.', 'function') with the
            # function (to be consistent with the second part of the pattern)
            dot.remove()
            func.parent.replace(func)

        prefix = prefix or func.prefix
        func.replace(Name(func.value[1:], prefix=prefix))
PKK/�\�@`�;;
fix_filter.pynu�[���# Copyright 2007 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that changes filter(F, X) into list(filter(F, X)).

We avoid the transformation if the filter() call is directly contained
in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or
for V in <>:.

NOTE: This is still not correct if the original code was depending on
filter(F, X) to return a string if X is a string and a tuple if X is a
tuple.  That would require type inference, which we don't do.  Let
Python 2.6 figure it out.
"""

# Local imports
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, Call, ListComp, in_special_context

class FixFilter(fixer_base.ConditionalFix):
    BM_compatible = True

    PATTERN = """
    filter_lambda=power<
        'filter'
        trailer<
            '('
            arglist<
                lambdef< 'lambda'
                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
                >
                ','
                it=any
            >
            ')'
        >
    >
    |
    power<
        'filter'
        trailer< '(' arglist< none='None' ',' seq=any > ')' >
    >
    |
    power<
        'filter'
        args=trailer< '(' [any] ')' >
    >
    """

    skip_on = "future_builtins.filter"

    def transform(self, node, results):
        if self.should_skip(node):
            return

        if "filter_lambda" in results:
            new = ListComp(results.get("fp").clone(),
                           results.get("fp").clone(),
                           results.get("it").clone(),
                           results.get("xp").clone())

        elif "none" in results:
            new = ListComp(Name(u"_f"),
                           Name(u"_f"),
                           results["seq"].clone(),
                           Name(u"_f"))

        else:
            if in_special_context(node):
                return None
            new = node.clone()
            new.prefix = u""
            new = Call(Name(u"list"), [new])
        new.prefix = node.prefix
        return new
PKK/�\�6����
fix_ne.pycnu�[����
{fc@sSdZddlmZddlmZddlmZdejfd��YZdS(sFixer that turns <> into !=.i(tpytree(ttoken(t
fixer_basetFixNecBs#eZejZd�Zd�ZRS(cCs
|jdkS(Nu<>(tvalue(tselftnode((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pytmatchscCs"tjtjdd|j�}|S(Nu!=tprefix(RtLeafRtNOTEQUALR(RRtresultstnew((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pyt	transforms(t__name__t
__module__RR
t_accept_typeRR
(((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pyRs		N(t__doc__tRtpgen2RRtBaseFixR(((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pyt<module>sPKK/�\^ K�mmfix_next.pynu�[���"""Fixer for it.next() -> next(it), per PEP 3114."""
# Author: Collin Winter

# Things that currently aren't covered:
#   - listcomp "next" names aren't warned
#   - "with" statement targets aren't checked

# Local imports
from ..pgen2 import token
from ..pygram import python_symbols as syms
from .. import fixer_base
from ..fixer_util import Name, Call, find_binding

bind_warning = "Calls to builtin next() possibly shadowed by global binding"


class FixNext(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def'
                              name='next'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    """

    order = "pre" # Pre-order tree traversal

    def start_tree(self, tree, filename):
        super(FixNext, self).start_tree(tree, filename)

        n = find_binding(u'next', tree)
        if n:
            self.warning(n, bind_warning)
            self.shadowed_next = True
        else:
            self.shadowed_next = False

    def transform(self, node, results):
        assert results

        base = results.get("base")
        attr = results.get("attr")
        name = results.get("name")

        if base:
            if self.shadowed_next:
                attr.replace(Name(u"__next__", prefix=attr.prefix))
            else:
                base = [n.clone() for n in base]
                base[0].prefix = u""
                node.replace(Call(Name(u"next", prefix=node.prefix), base))
        elif name:
            n = Name(u"__next__", prefix=name.prefix)
            name.replace(n)
        elif attr:
            # We don't do this transformation if we're assigning to "x.next".
            # Unfortunately, it doesn't seem possible to do this in PATTERN,
            #  so it's being done here.
            if is_assign_target(node):
                head = results["head"]
                if "".join([str(n) for n in head]).strip() == u'__builtin__':
                    self.warning(node, bind_warning)
                return
            attr.replace(Name(u"__next__"))
        elif "global" in results:
            self.warning(node, bind_warning)
            self.shadowed_next = True


### The following functions help test if node is part of an assignment
###  target.

def is_assign_target(node):
    assign = find_assign(node)
    if assign is None:
        return False

    for child in assign.children:
        if child.type == token.EQUAL:
            return False
        elif is_subtree(child, node):
            return True
    return False

def find_assign(node):
    if node.type == syms.expr_stmt:
        return node
    if node.type == syms.simple_stmt or node.parent is None:
        return None
    return find_assign(node.parent)

def is_subtree(root, node):
    if root == node:
        return True
    return any(is_subtree(c, node) for c in root.children)
PKK/�\\g7�''fix_basestring.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sFixer for basestring -> str.i(t
fixer_base(tNamet
FixBasestringcBseZeZdZd�ZRS(s'basestring'cCstdd|j�S(Nustrtprefix(RR(tselftnodetresults((s4/usr/lib64/python2.7/lib2to3/fixes/fix_basestring.pyt	transform
s(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_basestring.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_basestring.pyt<module>sPKK/�\�:?PVVfix_nonzero.pynu�[���"""Fixer for __nonzero__ -> __bool__ methods."""
# Author: Collin Winter

# Local imports
from .. import fixer_base
from ..fixer_util import Name, syms

class FixNonzero(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def' name='__nonzero__'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    """

    def transform(self, node, results):
        name = results["name"]
        new = Name(u"__bool__", prefix=name.prefix)
        name.replace(new)
PKK/�\�ĸ&��fix_methodattrs.pyonu�[����
{fc@s^dZddlmZddlmZidd6dd6dd	6Zd
ejfd��YZdS(
s;Fix bound method attributes (method.im_? -> method.__?__).
i(t
fixer_base(tNamet__func__tim_funct__self__tim_selfs__self__.__class__tim_classtFixMethodattrscBseZeZdZd�ZRS(sU
    power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* >
    cCsA|dd}tt|j�}|jt|d|j��dS(Ntattritprefix(tunicodetMAPtvaluetreplaceRR	(tselftnodetresultsRtnew((s5/usr/lib64/python2.7/lib2to3/fixes/fix_methodattrs.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_methodattrs.pyRsN(t__doc__tRt
fixer_utilRRtBaseFixR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_methodattrs.pyt<module>s
PKK/�\6��zhhfix_funcattrs.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s3Fix function attribute names (f.func_x -> f.__x__).i(t
fixer_base(tNametFixFuncattrscBseZeZdZd�ZRS(s�
    power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals'
                                  | 'func_name' | 'func_defaults' | 'func_code'
                                  | 'func_dict') > any* >
    cCs9|dd}|jtd|jdd|j��dS(Ntattriu__%s__itprefix(treplaceRtvalueR(tselftnodetresultsR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_funcattrs.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR
(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_funcattrs.pyR	sN(t__doc__tRt
fixer_utilRtBaseFixR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_funcattrs.pyt<module>sPKK/�\�0�||
fix_input.pycnu�[����
{fc@shdZddlmZddlmZmZddlmZejd�Zdej	fd��YZ
dS(	s4Fixer that changes input(...) into eval(input(...)).i(t
fixer_base(tCalltName(tpatcomps&power< 'eval' trailer< '(' any ')' > >tFixInputcBseZeZdZd�ZRS(sL
              power< 'input' args=trailer< '(' [any] ')' > >
              cCsMtj|jj�rdS|j�}d|_ttd�|gd|j�S(Nuuevaltprefix(tcontexttmatchtparenttcloneRRR(tselftnodetresultstnew((s//usr/lib64/python2.7/lib2to3/fixes/fix_input.pyt	transforms
	(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_input.pyR
sN(t__doc__tRt
fixer_utilRRRtcompile_patternRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_input.pyt<module>s
PKK/�\��锪�fix_renames.pynu�[���"""Fix incompatible renames

Fixes:
  * sys.maxint -> sys.maxsize
"""
# Author: Christian Heimes
# based on Collin Winter's fix_import

# Local imports
from .. import fixer_base
from ..fixer_util import Name, attr_chain

MAPPING = {"sys":  {"maxint" : "maxsize"},
          }
LOOKUP = {}

def alternates(members):
    return "(" + "|".join(map(repr, members)) + ")"


def build_pattern():
    #bare = set()
    for module, replace in MAPPING.items():
        for old_attr, new_attr in replace.items():
            LOOKUP[(module, old_attr)] = new_attr
            #bare.add(module)
            #bare.add(old_attr)
            #yield """
            #      import_name< 'import' (module=%r
            #          | dotted_as_names< any* module=%r any* >) >
            #      """ % (module, module)
            yield """
                  import_from< 'from' module_name=%r 'import'
                      ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) >
                  """ % (module, old_attr, old_attr)
            yield """
                  power< module_name=%r trailer< '.' attr_name=%r > any* >
                  """ % (module, old_attr)
    #yield """bare_name=%s""" % alternates(bare)


class FixRenames(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = "|".join(build_pattern())

    order = "pre" # Pre-order tree traversal

    # Don't match the node if it's within another match
    def match(self, node):
        match = super(FixRenames, self).match
        results = match(node)
        if results:
            if any(match(obj) for obj in attr_chain(node, "parent")):
                return False
            return results
        return False

    #def start_tree(self, tree, filename):
    #    super(FixRenames, self).start_tree(tree, filename)
    #    self.replace = {}

    def transform(self, node, results):
        mod_name = results.get("module_name")
        attr_name = results.get("attr_name")
        #bare_name = results.get("bare_name")
        #import_mod = results.get("module")

        if mod_name and attr_name:
            new_attr = unicode(LOOKUP[(mod_name.value, attr_name.value)])
            attr_name.replace(Name(new_attr, prefix=attr_name.prefix))
PKK/�\�{�Ffix_numliterals.pynu�[���"""Fixer that turns 1L into 1, 0755 into 0o755.
"""
# Copyright 2007 Georg Brandl.
# Licensed to PSF under a Contributor Agreement.

# Local imports
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Number


class FixNumliterals(fixer_base.BaseFix):
    # This is so simple that we don't need the pattern compiler.

    _accept_type = token.NUMBER

    def match(self, node):
        # Override
        return (node.value.startswith(u"0") or node.value[-1] in u"Ll")

    def transform(self, node, results):
        val = node.value
        if val[-1] in u'Ll':
            val = val[:-1]
        elif val.startswith(u'0') and val.isdigit() and len(set(val)) > 1:
            val = u"0o" + val[1:]

        return Number(val, prefix=node.prefix)
PKK/�\�xWfix_intern.pyonu�[����
{fc@s_dZddlmZddlmZddlmZmZmZdejfd��YZ	dS(s/Fixer for intern().

intern(s) -> sys.intern(s)i(tpytree(t
fixer_base(tNametAttrttouch_importt	FixInterncBs#eZeZdZdZd�ZRS(tpres�
    power< 'intern'
           trailer< lpar='('
                    ( not(arglist | argument<any '=' any>) obj=any
                      | obj=arglist<(not argument<any '=' any>) any ','> )
                    rpar=')' >
           after=any*
    >
    c		Cso|rd|d}|rd|j|jjkr/dS|j|jjkra|jdjdkradSqdn|j}|dj�}|j|jkr�|j�}ntj	|j|j�g�}|d}|r�g|D]}|j�^q�}ntj	|j
ttd�td��tj	|j
|dj�||dj�g�g|�}|j|_tdd|�|S(	Ntobjis**tafterusysuinterntlpartrpar(ttypetsymst	star_exprtargumenttchildrentvaluetclonetarglistRtNodetpowerRRttrailertprefixRtNone(	tselftnodetresultsRRt
newarglistRtntnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_intern.pyt	transforms*

	
"U(t__name__t
__module__tTruet
BM_compatibletordertPATTERNR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_intern.pyRs
N(
t__doc__tRRt
fixer_utilRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_intern.pyt<module>sPKK/�\6��zhhfix_funcattrs.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s3Fix function attribute names (f.func_x -> f.__x__).i(t
fixer_base(tNametFixFuncattrscBseZeZdZd�ZRS(s�
    power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals'
                                  | 'func_name' | 'func_defaults' | 'func_code'
                                  | 'func_dict') > any* >
    cCs9|dd}|jtd|jdd|j��dS(Ntattriu__%s__itprefix(treplaceRtvalueR(tselftnodetresultsR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_funcattrs.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR
(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_funcattrs.pyR	sN(t__doc__tRt
fixer_utilRtBaseFixR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_funcattrs.pyt<module>sPKK/�\�4�'fix_execfile.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for execfile.

This converts usages of the execfile function into calls to the built-in
exec() function.
"""

from .. import fixer_base
from ..fixer_util import (Comma, Name, Call, LParen, RParen, Dot, Node,
                          ArgList, String, syms)


class FixExecfile(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > >
    |
    power< 'execfile' trailer< '(' filename=any ')' > >
    """

    def transform(self, node, results):
        assert results
        filename = results["filename"]
        globals = results.get("globals")
        locals = results.get("locals")

        # Copy over the prefix from the right parentheses end of the execfile
        # call.
        execfile_paren = node.children[-1].children[-1].clone()
        # Construct open().read().
        open_args = ArgList([filename.clone(), Comma(), String('"rb"', ' ')],
                            rparen=execfile_paren)
        open_call = Node(syms.power, [Name(u"open"), open_args])
        read = [Node(syms.trailer, [Dot(), Name(u'read')]),
                Node(syms.trailer, [LParen(), RParen()])]
        open_expr = [open_call] + read
        # Wrap the open call in a compile call. This is so the filename will be
        # preserved in the execed code.
        filename_arg = filename.clone()
        filename_arg.prefix = u" "
        exec_str = String(u"'exec'", u" ")
        compile_args = open_expr + [Comma(), filename_arg, Comma(), exec_str]
        compile_call = Call(Name(u"compile"), compile_args, u"")
        # Finally, replace the execfile call with an exec call.
        args = [compile_call]
        if globals is not None:
            args.extend([Comma(), globals.clone()])
        if locals is not None:
            args.extend([Comma(), locals.clone()])
        return Call(Name(u"exec"), args, prefix=node.prefix)
PKK/�\�Yω��fix_has_key.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for has_key().

Calls to .has_key() methods are expressed in terms of the 'in'
operator:

    d.has_key(k) -> k in d

CAVEATS:
1) While the primary target of this fixer is dict.has_key(), the
   fixer will change any has_key() method call, regardless of its
   class.

2) Cases like this will not be converted:

    m = d.has_key
    if m(k):
        ...

   Only *calls* to has_key() are converted. While it is possible to
   convert the above to something like

    m = d.__contains__
    if m(k):
        ...

   this is currently not done.
"""

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, parenthesize


class FixHasKey(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    anchor=power<
        before=any+
        trailer< '.' 'has_key' >
        trailer<
            '('
            ( not(arglist | argument<any '=' any>) arg=any
            | arglist<(not argument<any '=' any>) arg=any ','>
            )
            ')'
        >
        after=any*
    >
    |
    negation=not_test<
        'not'
        anchor=power<
            before=any+
            trailer< '.' 'has_key' >
            trailer<
                '('
                ( not(arglist | argument<any '=' any>) arg=any
                | arglist<(not argument<any '=' any>) arg=any ','>
                )
                ')'
            >
        >
    >
    """

    def transform(self, node, results):
        assert results
        syms = self.syms
        if (node.parent.type == syms.not_test and
            self.pattern.match(node.parent)):
            # Don't transform a node matching the first alternative of the
            # pattern when its parent matches the second alternative
            return None
        negation = results.get("negation")
        anchor = results["anchor"]
        prefix = node.prefix
        before = [n.clone() for n in results["before"]]
        arg = results["arg"].clone()
        after = results.get("after")
        if after:
            after = [n.clone() for n in after]
        if arg.type in (syms.comparison, syms.not_test, syms.and_test,
                        syms.or_test, syms.test, syms.lambdef, syms.argument):
            arg = parenthesize(arg)
        if len(before) == 1:
            before = before[0]
        else:
            before = pytree.Node(syms.power, before)
        before.prefix = u" "
        n_op = Name(u"in", prefix=u" ")
        if negation:
            n_not = Name(u"not", prefix=u" ")
            n_op = pytree.Node(syms.comp_op, (n_not, n_op))
        new = pytree.Node(syms.comparison, (arg, n_op, before))
        if after:
            new = parenthesize(new)
            new = pytree.Node(syms.power, (new,) + tuple(after))
        if node.parent.type in (syms.comparison, syms.expr, syms.xor_expr,
                                syms.and_expr, syms.shift_expr,
                                syms.arith_expr, syms.term,
                                syms.factor, syms.power):
            new = parenthesize(new)
        new.prefix = prefix
        return new
PKK/�\�����fix_future.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sVRemove __future__ imports

from __future__ import foo is replaced with an empty line.
i(t
fixer_base(t	BlankLinet	FixFuturecBs#eZeZdZdZd�ZRS(s;import_from< 'from' module_name="__future__" 'import' any >i
cCst�}|j|_|S(N(Rtprefix(tselftnodetresultstnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_future.pyt	transforms	(t__name__t
__module__tTruet
BM_compatibletPATTERNt	run_orderR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_future.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_future.pyt<module>sPKK/�\m)ĥ��fix_reduce.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sqFixer for reduce().

Makes sure reduce() is imported from the functools module if reduce is
used in that module.
i����(t
fixer_base(ttouch_importt	FixReducecBs#eZeZdZdZd�ZRS(tpresi
    power< 'reduce'
        trailer< '('
            arglist< (
                (not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any) |
                (not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any)
            ) >
        ')' >
    >
    cCstdd|�dS(Nu	functoolsureduce(R(tselftnodetresults((s0/usr/lib64/python2.7/lib2to3/fixes/fix_reduce.pyt	transform"s(t__name__t
__module__tTruet
BM_compatibletordertPATTERNR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_reduce.pyRsN(t__doc__tlib2to3Rtlib2to3.fixer_utilRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_reduce.pyt<module>sPKK/�\�?�յ�fix_import.pyonu�[����
{fc@szdZddlmZddlmZmZmZmZddlm	Z	m
Z
mZd�Zdej
fd��YZd	S(
s�Fixer for import statements.
If spam is being imported from the local directory, this import:
    from spam import eggs
Becomes:
    from .spam import eggs

And this import:
    import spam
Becomes:
    from . import spam
i(t
fixer_basei����(tdirnametjointexiststsep(t
FromImporttsymsttokenccs�|g}x�|r�|j�}|jtjkr;|jVq|jtjkrwdjg|jD]}|j^q]�Vq|jtj	kr�|j
|jd�q|jtjkr�|j|jddd��qt
d��qWdS(sF
    Walks over all the names imported in a dotted_as_names node.
    tiNi����sunknown node type(tpopttypeRtNAMEtvalueRtdotted_nameRtchildrentdotted_as_nametappendtdotted_as_namestextendtAssertionError(tnamestpendingtnodetch((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyttraverse_importss		* t	FixImportcBs/eZeZdZd�Zd�Zd�ZRS(sj
    import_from< 'from' imp=any 'import' ['('] any [')'] >
    |
    import_name< 'import' imp=any >
    cCs/tt|�j||�d|jk|_dS(Ntabsolute_import(tsuperRt
start_treetfuture_featurestskip(tselfttreetname((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR/scCs|jr
dS|d}|jtjkr~x t|d�sK|jd}q,W|j|j�rd|j|_|j�qn�t	}t	}x2t
|�D]$}|j|�r�t}q�t}q�W|r�|r�|j|d�ndSt
d|g�}|j|_|SdS(NtimpRiu.s#absolute and local imports together(RR
Rtimport_fromthasattrRtprobably_a_local_importRtchangedtFalseRtTruetwarningRtprefix(RRtresultsR"t
have_localt
have_absolutetmod_nametnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyt	transform3s,	
	
cCs�|jd�rtS|jdd�d}t|j�}t||�}ttt|�d��sftSx4dtdddd	gD]}t||�rtSqWtS(
Nu.iis__init__.pys.pys.pycs.sos.sls.pyd(	t
startswithR'tsplitRtfilenameRRRR((Rtimp_namet	base_pathtext((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR%Us(t__name__t
__module__R(t
BM_compatibletPATTERNRR0R%(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR&s
		"N(t__doc__RRtos.pathRRRRt
fixer_utilRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyt<module>s
"	PKK/�\��J���
fix_types.pycnu�[����
{fc@s	dZddlmZddlmZddlmZidd6dd6d	d
6dd6d
d6d
d6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6d	d'6d(d)6d*d+6ZgeD]Zd,e^q�Z	d-ej
fd.��YZd/S(0s�Fixer for removing uses of the types module.

These work for only the known names in the types module.  The forms above
can include types. or not.  ie, It is assumed the module is imported either as:

    import types
    from types import ... # either * or specific types

The import statements are not modified.

There should be another fixer that handles at least the following constants:

   type([]) -> list
   type(()) -> tuple
   type('') -> str

i(ttoken(t
fixer_base(tNametbooltBooleanTypet
memoryviewt
BufferTypettypet	ClassTypetcomplextComplexTypetdicttDictTypetDictionaryTypestype(Ellipsis)tEllipsisTypetfloatt	FloatTypetinttIntTypetlisttListTypetLongTypetobjectt
ObjectTypes
type(None)tNoneTypestype(NotImplemented)tNotImplementedTypetslicet	SliceTypetbytest
StringTypes(str,)tStringTypesttuplet	TupleTypetTypeTypetstrtUnicodeTypetranget
XRangeTypes)power< 'types' trailer< '.' name='%s' > >tFixTypescBs&eZeZdje�Zd�ZRS(t|cCs9ttj|dj��}|r5t|d|j�SdS(Ntnametprefix(tunicodet
_TYPE_MAPPINGtgettvalueRR)tNone(tselftnodetresultst	new_value((s//usr/lib64/python2.7/lib2to3/fixes/fix_types.pyt	transform:s(t__name__t
__module__tTruet
BM_compatibletjoint_patstPATTERNR3(((s//usr/lib64/python2.7/lib2to3/fixes/fix_types.pyR&6sN(t__doc__tpgen2RtRt
fixer_utilRR+ttR9tBaseFixR&(((s//usr/lib64/python2.7/lib2to3/fixes/fix_types.pyt<module>s6
PKK/�\�7h##
fix_future.pynu�[���"""Remove __future__ imports

from __future__ import foo is replaced with an empty line.
"""
# Author: Christian Heimes

# Local imports
from .. import fixer_base
from ..fixer_util import BlankLine

class FixFuture(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """import_from< 'from' module_name="__future__" 'import' any >"""

    # This should be run last -- some things check for the import
    run_order = 10

    def transform(self, node, results):
        new = BlankLine()
        new.prefix = node.prefix
        return new
PKK/�\�����fix_except.pycnu�[����
{fc@s�dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZd�Z
dejfd��YZd	S(
s�Fixer for except statements with named exceptions.

The following cases will be converted:

- "except E, T:" where T is a name:

    except E as T:

- "except E, T:" where T is not a name, tuple or list:

        except E as t:
            T = t

    This is done because the target of an "except" clause must be a
    name.

- "except E, T:" where T is a tuple or list literal:

        except E as t:
            T = t.args
i(tpytree(ttoken(t
fixer_base(tAssigntAttrtNametis_tupletis_listtsymsccsbx[t|�D]M\}}|jtjkr
|jdjdkrZ|||dfVqZq
q
WdS(Niuexcepti(t	enumeratettypeRt
except_clausetchildrentvalue(tnodestitn((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pytfind_exceptsst	FixExceptcBseZeZdZd�ZRS(s1
    try_stmt< 'try' ':' (simple_stmt | suite)
                  cleanup=(except_clause ':' (simple_stmt | suite))+
                  tail=(['except' ':' (simple_stmt | suite)]
                        ['else' ':' (simple_stmt | suite)]
                        ['finally' ':' (simple_stmt | suite)]) >
    cCs,|j}g|dD]}|j�^q}g|dD]}|j�^q7}x�t|�D]�\}}	t|j�dkr\|jdd!\}
}}|jtddd��|jtj	kr�t|j
�dd�}
|j�}d|_|j|
�|
j�}
|	j}x0t|�D]"\}}t
|tj�rPqqWt|�s[t|�r|t|t|
td	���}nt||
�}x(t|| �D]}|	jd
|�q�W|	j||�q�|jdkr�d|_q�q\q\Wg|jd D]}|j�^q�||}tj|j|�S(Nttailtcleanupiiuastprefixu uuargsii(RtcloneRtlenRtreplaceRR
RtNAMEtnew_nameRR	t
isinstanceRtNodeRRRRtreversedtinsert_child(tselftnodetresultsRRRtchttry_cleanupRte_suitetEtcommatNtnew_Nttargettsuite_stmtsRtstmttassigntchildtcR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyt	transform/s6	##	
	!.(t__name__t
__module__tTruet
BM_compatibletPATTERNR/(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyR$sN(t__doc__tRtpgen2RRt
fixer_utilRRRRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_except.pyt<module>s.	PKK/�\�:C
ttfix_ws_comma.pycnu�[����
{fc@sSdZddlmZddlmZddlmZdejfd��YZdS(s�Fixer that changes 'a ,b' into 'a, b'.

This also changes '{a :b}' into '{a: b}', but does not touch other
uses of colons.  It does not touch other uses of whitespace.

i(tpytree(ttoken(t
fixer_baset
FixWsCommacBsSeZeZdZejejd�Zejej	d�Z	ee	fZ
d�ZRS(sH
    any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]>
    u,u:cCs�|j�}t}x�|jD]u}||jkrg|j}|j�r^d|kr^d|_nt}q|r�|j}|s�d|_q�nt}qW|S(Nu
uu (tclonetFalsetchildrentSEPStprefixtisspacetTrue(tselftnodetresultstnewtcommatchildR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_ws_comma.pyt	transforms			
(t__name__t
__module__R
texplicittPATTERNRtLeafRtCOMMAtCOLONRR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_ws_comma.pyRsN(t__doc__tRtpgen2RRtBaseFixR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_ws_comma.pyt<module>sPKK/�\�:C
ttfix_ws_comma.pyonu�[����
{fc@sSdZddlmZddlmZddlmZdejfd��YZdS(s�Fixer that changes 'a ,b' into 'a, b'.

This also changes '{a :b}' into '{a: b}', but does not touch other
uses of colons.  It does not touch other uses of whitespace.

i(tpytree(ttoken(t
fixer_baset
FixWsCommacBsSeZeZdZejejd�Zejej	d�Z	ee	fZ
d�ZRS(sH
    any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]>
    u,u:cCs�|j�}t}x�|jD]u}||jkrg|j}|j�r^d|kr^d|_nt}q|r�|j}|s�d|_q�nt}qW|S(Nu
uu (tclonetFalsetchildrentSEPStprefixtisspacetTrue(tselftnodetresultstnewtcommatchildR((s2/usr/lib64/python2.7/lib2to3/fixes/fix_ws_comma.pyt	transforms			
(t__name__t
__module__R
texplicittPATTERNRtLeafRtCOMMAtCOLONRR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_ws_comma.pyRsN(t__doc__tRtpgen2RRtBaseFixR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_ws_comma.pyt<module>sPKK/�\��B��fix_funcattrs.pynu�[���"""Fix function attribute names (f.func_x -> f.__x__)."""
# Author: Collin Winter

# Local imports
from .. import fixer_base
from ..fixer_util import Name


class FixFuncattrs(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals'
                                  | 'func_name' | 'func_defaults' | 'func_code'
                                  | 'func_dict') > any* >
    """

    def transform(self, node, results):
        attr = results["attr"][0]
        attr.replace(Name((u"__%s__" % attr.value[5:]),
                          prefix=attr.prefix))
PKK/�\���� � 
fix_urllib.pynu�[���"""Fix changes imports of urllib which are now incompatible.
   This is rather similar to fix_imports, but because of the more
   complex nature of the fixing for urllib, it has its own fixer.
"""
# Author: Nick Edds

# Local imports
from lib2to3.fixes.fix_imports import alternates, FixImports
from lib2to3 import fixer_base
from lib2to3.fixer_util import (Name, Comma, FromImport, Newline,
                                find_indentation, Node, syms)

MAPPING = {"urllib":  [
                ("urllib.request",
                    ["URLopener", "FancyURLopener", "urlretrieve",
                     "_urlopener", "urlopen", "urlcleanup",
                     "pathname2url", "url2pathname"]),
                ("urllib.parse",
                    ["quote", "quote_plus", "unquote", "unquote_plus",
                     "urlencode", "splitattr", "splithost", "splitnport",
                     "splitpasswd", "splitport", "splitquery", "splittag",
                     "splittype", "splituser", "splitvalue", ]),
                ("urllib.error",
                    ["ContentTooShortError"])],
           "urllib2" : [
                ("urllib.request",
                    ["urlopen", "install_opener", "build_opener",
                     "Request", "OpenerDirector", "BaseHandler",
                     "HTTPDefaultErrorHandler", "HTTPRedirectHandler",
                     "HTTPCookieProcessor", "ProxyHandler",
                     "HTTPPasswordMgr",
                     "HTTPPasswordMgrWithDefaultRealm",
                     "AbstractBasicAuthHandler",
                     "HTTPBasicAuthHandler", "ProxyBasicAuthHandler",
                     "AbstractDigestAuthHandler",
                     "HTTPDigestAuthHandler", "ProxyDigestAuthHandler",
                     "HTTPHandler", "HTTPSHandler", "FileHandler",
                     "FTPHandler", "CacheFTPHandler",
                     "UnknownHandler"]),
                ("urllib.error",
                    ["URLError", "HTTPError"]),
           ]
}

# Duplicate the url parsing functions for urllib2.
MAPPING["urllib2"].append(MAPPING["urllib"][1])


def build_pattern():
    bare = set()
    for old_module, changes in MAPPING.items():
        for change in changes:
            new_module, members = change
            members = alternates(members)
            yield """import_name< 'import' (module=%r
                                  | dotted_as_names< any* module=%r any* >) >
                  """ % (old_module, old_module)
            yield """import_from< 'from' mod_member=%r 'import'
                       ( member=%s | import_as_name< member=%s 'as' any > |
                         import_as_names< members=any*  >) >
                  """ % (old_module, members, members)
            yield """import_from< 'from' module_star=%r 'import' star='*' >
                  """ % old_module
            yield """import_name< 'import'
                                  dotted_as_name< module_as=%r 'as' any > >
                  """ % old_module
            # bare_with_attr has a special significance for FixImports.match().
            yield """power< bare_with_attr=%r trailer< '.' member=%s > any* >
                  """ % (old_module, members)


class FixUrllib(FixImports):

    def build_pattern(self):
        return "|".join(build_pattern())

    def transform_import(self, node, results):
        """Transform for the basic import case. Replaces the old
           import name with a comma separated list of its
           replacements.
        """
        import_mod = results.get("module")
        pref = import_mod.prefix

        names = []

        # create a Node list of the replacement modules
        for name in MAPPING[import_mod.value][:-1]:
            names.extend([Name(name[0], prefix=pref), Comma()])
        names.append(Name(MAPPING[import_mod.value][-1][0], prefix=pref))
        import_mod.replace(names)

    def transform_member(self, node, results):
        """Transform for imports of specific module elements. Replaces
           the module to be imported from with the appropriate new
           module.
        """
        mod_member = results.get("mod_member")
        pref = mod_member.prefix
        member = results.get("member")

        # Simple case with only a single member being imported
        if member:
            # this may be a list of length one, or just a node
            if isinstance(member, list):
                member = member[0]
            new_name = None
            for change in MAPPING[mod_member.value]:
                if member.value in change[1]:
                    new_name = change[0]
                    break
            if new_name:
                mod_member.replace(Name(new_name, prefix=pref))
            else:
                self.cannot_convert(node, "This is an invalid module element")

        # Multiple members being imported
        else:
            # a dictionary for replacements, order matters
            modules = []
            mod_dict = {}
            members = results["members"]
            for member in members:
                # we only care about the actual members
                if member.type == syms.import_as_name:
                    as_name = member.children[2].value
                    member_name = member.children[0].value
                else:
                    member_name = member.value
                    as_name = None
                if member_name != u",":
                    for change in MAPPING[mod_member.value]:
                        if member_name in change[1]:
                            if change[0] not in mod_dict:
                                modules.append(change[0])
                            mod_dict.setdefault(change[0], []).append(member)

            new_nodes = []
            indentation = find_indentation(node)
            first = True
            def handle_name(name, prefix):
                if name.type == syms.import_as_name:
                    kids = [Name(name.children[0].value, prefix=prefix),
                            name.children[1].clone(),
                            name.children[2].clone()]
                    return [Node(syms.import_as_name, kids)]
                return [Name(name.value, prefix=prefix)]
            for module in modules:
                elts = mod_dict[module]
                names = []
                for elt in elts[:-1]:
                    names.extend(handle_name(elt, pref))
                    names.append(Comma())
                names.extend(handle_name(elts[-1], pref))
                new = FromImport(module, names)
                if not first or node.parent.prefix.endswith(indentation):
                    new.prefix = indentation
                new_nodes.append(new)
                first = False
            if new_nodes:
                nodes = []
                for new_node in new_nodes[:-1]:
                    nodes.extend([new_node, Newline()])
                nodes.append(new_nodes[-1])
                node.replace(nodes)
            else:
                self.cannot_convert(node, "All module elements are invalid")

    def transform_dot(self, node, results):
        """Transform for calls to module members in code."""
        module_dot = results.get("bare_with_attr")
        member = results.get("member")
        new_name = None
        if isinstance(member, list):
            member = member[0]
        for change in MAPPING[module_dot.value]:
            if member.value in change[1]:
                new_name = change[0]
                break
        if new_name:
            module_dot.replace(Name(new_name,
                                    prefix=module_dot.prefix))
        else:
            self.cannot_convert(node, "This is an invalid module element")

    def transform(self, node, results):
        if results.get("module"):
            self.transform_import(node, results)
        elif results.get("mod_member"):
            self.transform_member(node, results)
        elif results.get("bare_with_attr"):
            self.transform_dot(node, results)
        # Renaming and star imports are not supported for these modules.
        elif results.get("module_star"):
            self.cannot_convert(node, "Cannot handle star imports.")
        elif results.get("module_as"):
            self.cannot_convert(node, "This module is now multiple modules")
PKK/�\o �^vvfix_raise.pynu�[���"""Fixer for 'raise E, V, T'

raise         -> raise
raise E       -> raise E
raise E, V    -> raise E(V)
raise E, V, T -> raise E(V).with_traceback(T)
raise E, None, T -> raise E.with_traceback(T)

raise (((E, E'), E''), E'''), V -> raise E(V)
raise "foo", V, T               -> warns about string exceptions


CAVEATS:
1) "raise E, V" will be incorrectly translated if V is an exception
   instance. The correct Python 3 idiom is

        raise E from V

   but since we can't detect instance-hood by syntax alone and since
   any client code would have to be changed as well, we don't automate
   this.
"""
# Author: Collin Winter

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, Call, Attr, ArgList, is_tuple

class FixRaise(fixer_base.BaseFix):

    BM_compatible = True
    PATTERN = """
    raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] >
    """

    def transform(self, node, results):
        syms = self.syms

        exc = results["exc"].clone()
        if exc.type == token.STRING:
            msg = "Python 3 does not support string exceptions"
            self.cannot_convert(node, msg)
            return

        # Python 2 supports
        #  raise ((((E1, E2), E3), E4), E5), V
        # as a synonym for
        #  raise E1, V
        # Since Python 3 will not support this, we recurse down any tuple
        # literals, always taking the first element.
        if is_tuple(exc):
            while is_tuple(exc):
                # exc.children[1:-1] is the unparenthesized tuple
                # exc.children[1].children[0] is the first element of the tuple
                exc = exc.children[1].children[0].clone()
            exc.prefix = u" "

        if "val" not in results:
            # One-argument raise
            new = pytree.Node(syms.raise_stmt, [Name(u"raise"), exc])
            new.prefix = node.prefix
            return new

        val = results["val"].clone()
        if is_tuple(val):
            args = [c.clone() for c in val.children[1:-1]]
        else:
            val.prefix = u""
            args = [val]

        if "tb" in results:
            tb = results["tb"].clone()
            tb.prefix = u""

            e = exc
            # If there's a traceback and None is passed as the value, then don't
            # add a call, since the user probably just wants to add a
            # traceback. See issue #9661.
            if val.type != token.NAME or val.value != u"None":
                e = Call(exc, args)
            with_tb = Attr(e, Name(u'with_traceback')) + [ArgList([tb])]
            new = pytree.Node(syms.simple_stmt, [Name(u"raise")] + with_tb)
            new.prefix = node.prefix
            return new
        else:
            return pytree.Node(syms.raise_stmt,
                               [Name(u"raise"), Call(exc, args)],
                               prefix=node.prefix)
PKK/�\�1Wl��fix_sys_exc.pyonu�[����
{fc@sgdZddlmZddlmZmZmZmZmZm	Z	m
Z
dejfd��YZdS(s�Fixer for sys.exc_{type, value, traceback}

sys.exc_type -> sys.exc_info()[0]
sys.exc_value -> sys.exc_info()[1]
sys.exc_traceback -> sys.exc_info()[2]
i(t
fixer_base(tAttrtCalltNametNumbert	SubscripttNodetsymst	FixSysExccBsCeZdddgZeZddjd�eD��Zd�ZRS(uexc_typeu	exc_valueu
exc_tracebacksN
              power< 'sys' trailer< dot='.' attribute=(%s) > >
              t|ccs|]}d|VqdS(s'%s'N((t.0te((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pys	<genexpr>scCs�|dd}t|jj|j��}ttd�d|j�}ttd�|�}|dj|djd_|j	t
|��ttj
|d|j�S(Nt	attributeiuexc_infotprefixusystdoti(Rtexc_infotindextvalueRRR
RtchildrentappendRRRtpower(tselftnodetresultstsys_attrRtcalltattr((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pyt	transforms(t__name__t
__module__RtTruet
BM_compatibletjointPATTERNR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pyRsN(
t__doc__tRt
fixer_utilRRRRRRRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_sys_exc.pyt<module>s4PKK/�\ݔ�N��fix_long.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that turns 'long' into 'int' everywhere.
"""

# Local imports
from lib2to3 import fixer_base
from lib2to3.fixer_util import is_probably_builtin


class FixLong(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = "'long'"

    def transform(self, node, results):
        if is_probably_builtin(node):
            node.value = u"int"
            node.changed()
PKK/�\�u��ccfix_standarderror.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s%Fixer for StandardError -> Exception.i(t
fixer_base(tNametFixStandarderrorcBseZeZdZd�ZRS(s-
              'StandardError'
              cCstdd|j�S(Nu	Exceptiontprefix(RR(tselftnodetresults((s7/usr/lib64/python2.7/lib2to3/fixes/fix_standarderror.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s7/usr/lib64/python2.7/lib2to3/fixes/fix_standarderror.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s7/usr/lib64/python2.7/lib2to3/fixes/fix_standarderror.pyt<module>sPKK/�\e�˺��fix_dict.pycnu�[����
{fc@s�dZddlmZddlmZddlmZddlmZddlmZm	Z	m
Z
mZmZm
Z
ddlmZejedg�BZd	ejfd
��YZdS(sjFixer for dict methods.

d.keys() -> list(d.keys())
d.items() -> list(d.items())
d.values() -> list(d.values())

d.iterkeys() -> iter(d.keys())
d.iteritems() -> iter(d.items())
d.itervalues() -> iter(d.values())

d.viewkeys() -> d.keys()
d.viewitems() -> d.items()
d.viewvalues() -> d.values()

Except in certain very specific contexts: the iter() can be dropped
when the context is list(), sorted(), iter() or for...in; the list()
can be dropped when the context is list() or sorted() (but not iter()
or for...in!). Special contexts that apply to both: list(), sorted(), tuple()
set(), any(), all(), sum().

Note: iter(d.keys()) could be written as iter(d) but since the
original d.iterkeys() was also redundant we don't fix this.  And there
are (rare) contexts where it makes a difference (e.g. when passing it
as an argument to a function that introspects the argument).
i(tpytree(tpatcomp(ttoken(t
fixer_base(tNametCalltLParentRParentArgListtDot(t
fixer_utiltitertFixDictcBsPeZeZdZd�ZdZeje�Z	dZ
eje
�Zd�ZRS(s
    power< head=any+
         trailer< '.' method=('keys'|'items'|'values'|
                              'iterkeys'|'iteritems'|'itervalues'|
                              'viewkeys'|'viewitems'|'viewvalues') >
         parens=trailer< '(' ')' >
         tail=any*
    >
    cCs�|d}|dd}|d}|j}|j}|jd�}|jd�}	|s^|	rk|d}n|dks�tt|���g|D]}
|
j�^q�}g|D]}
|
j�^q�}|o�|j||�}|tj|j	t
�t|d|j�g�|dj�g}tj|j
|�}
|p?|	srd
|
_tt|r]dnd�|
g�}
n|r�tj|j
|
g|�}
n|j|
_|
S(Ntheadtmethodittailuiteruviewiukeysuitemsuvaluestprefixtparensuulist(ukeysuitemsuvalues(tsymstvaluet
startswithtAssertionErrortreprtclonetin_special_contextRtNodettrailerR	RRtpowerR(tselftnodetresultsR
RRRtmethod_nametisitertisviewtntspecialtargstnew((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyt	transform7s4

		
		's3power< func=NAME trailer< '(' node=any ')' > any* >smfor_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
         cCs�|jdkrtSi}|jjdk	r�|jj|jj|�r�|d|kr�|rm|djtkS|djtjkSn|s�tS|j	j|j|�o�|d|kS(NRtfunc(
tparenttNonetFalsetp1tmatchRtiter_exemptR
tconsuming_callstp2(RRR R((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyR[s(
t__name__t
__module__tTruet
BM_compatibletPATTERNR&tP1Rtcompile_patternR+tP2R/R(((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyR*s
	N(t__doc__tRRtpgen2RRR
RRRRRR	R.tsetR-tBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_dict.pyt<module>s.PKK/�\,���V
V

fix_print.pyonu�[����
{fc@s�dZddlmZddlmZddlmZddlmZddlmZm	Z	m
Z
mZmZej
d�Zdejfd	��YZd
S(sFixer for print.

Change:
    'print'          into 'print()'
    'print ...'      into 'print(...)'
    'print ... ,'    into 'print(..., end=" ")'
    'print >>x, ...' into 'print(..., file=x)'

No changes are applied if print_function is imported from __future__

i(tpatcomp(tpytree(ttoken(t
fixer_base(tNametCalltCommatStringtis_tuples"atom< '(' [atom|STRING|NAME] ')' >tFixPrintcBs&eZeZdZd�Zd�ZRS(sP
              simple_stmt< any* bare='print' any* > | print_stmt
              cCs�|jd�}|r>|jttd�gd|j��dS|jd}t|�dkrttj|d�rtdSd}}}|r�|dt
�kr�|d }d}n|r�|dtjt
jd�kr�|dj�}|d	}ng|D]}|j�^q�}	|	r%d
|	d_n|dk	sI|dk	sI|dk	r�|dk	rw|j|	dtt|���n|dk	r�|j|	dtt|���n|dk	r�|j|	d
|�q�nttd�|	�}
|j|
_|
S(Ntbareuprinttprefixiii����t u>>iuusepuendufile(tgettreplaceRRRtchildrentlentparend_exprtmatchtNoneRRtLeafRt
RIGHTSHIFTtclonet	add_kwargRtrepr(tselftnodetresultst
bare_printtargstseptendtfiletargtl_argstn_stmt((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyt	transform%s8

%
	%
$""cCsrd|_tj|jjt|�tjtjd�|f�}|ra|j	t
��d|_n|j	|�dS(Nuu=u (RRtNodetsymstargumentRRRtEQUALtappendR(Rtl_nodests_kwdtn_exprt
n_argument((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyRMs		(t__name__t
__module__tTruet
BM_compatibletPATTERNR$R(((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyR	s	(N(t__doc__tRRtpgen2RRt
fixer_utilRRRRRtcompile_patternRtBaseFixR	(((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyt<module>s(	PKK/�\�ؒ��__init__.pyonu�[����
{fc@sdS(N((((s./usr/lib64/python2.7/lib2to3/fixes/__init__.pyt<module>tPKK/�\8r�==	fix_ne.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that turns <> into !=."""

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base


class FixNe(fixer_base.BaseFix):
    # This is so simple that we don't need the pattern compiler.

    _accept_type = token.NOTEQUAL

    def match(self, node):
        # Override
        return node.value == u"<>"

    def transform(self, node, results):
        new = pytree.Leaf(token.NOTEQUAL, u"!=", prefix=node.prefix)
        return new
PKK/�\Hm��fix_itertools_imports.pycnu�[����
{fc@sOdZddlmZddlmZmZmZdejfd��YZdS(sA Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) i����(t
fixer_base(t	BlankLinetsymsttokentFixItertoolsImportscBs$eZeZde�Zd�ZRS(sT
              import_from< 'from' 'itertools' 'import' imports=any >
              cCs�|d}|jtjks&|jr2|g}n	|j}x�|ddd�D]�}|jtjkry|j}|}n;|jtjkr�dS|jtjks�t�|jd}|j}|dkr�d|_|j
�qO|dkrO|j�|d	d
krdnd|_qOqOW|jp+|g}t}	x=|D]5}|	rf|jtj
krf|j
�q;|	tN}	q;Wx0|r�|d
jtj
kr�|j�j
�qwW|jp�t|dd�s�|jdkr�|j}
t�}|
|_|SdS(Ntimportsiiuimapuizipuifilteruifilterfalseuizip_longestiufufilterfalseuzip_longesti����tvalue(uimapuizipuifilter(uifilterfalseuizip_longest(ttypeRtimport_as_nametchildrenRtNAMERtSTARtAssertionErrortNonetremovetchangedtTruetCOMMAtpoptgetattrtparenttprefixR(tselftnodetresultsRR	tchildtmembert	name_nodetmember_nametremove_commatp((s;/usr/lib64/python2.7/lib2to3/fixes/fix_itertools_imports.pyt	transformsD
			
		



			(t__name__t
__module__Rt
BM_compatibletlocalstPATTERNR(((s;/usr/lib64/python2.7/lib2to3/fixes/fix_itertools_imports.pyRs
N(	t__doc__tlib2to3Rtlib2to3.fixer_utilRRRtBaseFixR(((s;/usr/lib64/python2.7/lib2to3/fixes/fix_itertools_imports.pyt<module>sPKK/�\+�E�22fix_throw.pynu�[���"""Fixer for generator.throw(E, V, T).

g.throw(E)       -> g.throw(E)
g.throw(E, V)    -> g.throw(E(V))
g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))

g.throw("foo"[, V[, T]]) will warn about string exceptions."""
# Author: Collin Winter

# Local imports
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, Call, ArgList, Attr, is_tuple

class FixThrow(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    power< any trailer< '.' 'throw' >
           trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' >
    >
    |
    power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > >
    """

    def transform(self, node, results):
        syms = self.syms

        exc = results["exc"].clone()
        if exc.type is token.STRING:
            self.cannot_convert(node, "Python 3 does not support string exceptions")
            return

        # Leave "g.throw(E)" alone
        val = results.get(u"val")
        if val is None:
            return

        val = val.clone()
        if is_tuple(val):
            args = [c.clone() for c in val.children[1:-1]]
        else:
            val.prefix = u""
            args = [val]

        throw_args = results["args"]

        if "tb" in results:
            tb = results["tb"].clone()
            tb.prefix = u""

            e = Call(exc, args)
            with_tb = Attr(e, Name(u'with_traceback')) + [ArgList([tb])]
            throw_args.replace(pytree.Node(syms.power, with_tb))
        else:
            throw_args.replace(Call(exc, args))
PKK/�\I�4�  fix_metaclass.pynu�[���"""Fixer for __metaclass__ = X -> (metaclass=X) methods.

   The various forms of classef (inherits nothing, inherits once, inherints
   many) don't parse the same in the CST so we look at ALL classes for
   a __metaclass__ and if we find one normalize the inherits to all be
   an arglist.

   For one-liner classes ('class X: pass') there is no indent/dedent so
   we normalize those into having a suite.

   Moving the __metaclass__ into the classdef can also cause the class
   body to be empty so there is some special casing for that as well.

   This fixer also tries very hard to keep original indenting and spacing
   in all those corner cases.

"""
# Author: Jack Diederich

# Local imports
from .. import fixer_base
from ..pygram import token
from ..fixer_util import Name, syms, Node, Leaf


def has_metaclass(parent):
    """ we have to check the cls_node without changing it.
        There are two possibilities:
          1)  clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta')
          2)  clsdef => simple_stmt => expr_stmt => Leaf('__meta')
    """
    for node in parent.children:
        if node.type == syms.suite:
            return has_metaclass(node)
        elif node.type == syms.simple_stmt and node.children:
            expr_node = node.children[0]
            if expr_node.type == syms.expr_stmt and expr_node.children:
                left_side = expr_node.children[0]
                if isinstance(left_side, Leaf) and \
                        left_side.value == '__metaclass__':
                    return True
    return False


def fixup_parse_tree(cls_node):
    """ one-line classes don't get a suite in the parse tree so we add
        one to normalize the tree
    """
    for node in cls_node.children:
        if node.type == syms.suite:
            # already in the preferred format, do nothing
            return

    # !%@#! oneliners have no suite node, we have to fake one up
    for i, node in enumerate(cls_node.children):
        if node.type == token.COLON:
            break
    else:
        raise ValueError("No class suite and no ':'!")

    # move everything into a suite node
    suite = Node(syms.suite, [])
    while cls_node.children[i+1:]:
        move_node = cls_node.children[i+1]
        suite.append_child(move_node.clone())
        move_node.remove()
    cls_node.append_child(suite)
    node = suite


def fixup_simple_stmt(parent, i, stmt_node):
    """ if there is a semi-colon all the parts count as part of the same
        simple_stmt.  We just want the __metaclass__ part so we move
        everything after the semi-colon into its own simple_stmt node
    """
    for semi_ind, node in enumerate(stmt_node.children):
        if node.type == token.SEMI: # *sigh*
            break
    else:
        return

    node.remove() # kill the semicolon
    new_expr = Node(syms.expr_stmt, [])
    new_stmt = Node(syms.simple_stmt, [new_expr])
    while stmt_node.children[semi_ind:]:
        move_node = stmt_node.children[semi_ind]
        new_expr.append_child(move_node.clone())
        move_node.remove()
    parent.insert_child(i, new_stmt)
    new_leaf1 = new_stmt.children[0].children[0]
    old_leaf1 = stmt_node.children[0].children[0]
    new_leaf1.prefix = old_leaf1.prefix


def remove_trailing_newline(node):
    if node.children and node.children[-1].type == token.NEWLINE:
        node.children[-1].remove()


def find_metas(cls_node):
    # find the suite node (Mmm, sweet nodes)
    for node in cls_node.children:
        if node.type == syms.suite:
            break
    else:
        raise ValueError("No class suite!")

    # look for simple_stmt[ expr_stmt[ Leaf('__metaclass__') ] ]
    for i, simple_node in list(enumerate(node.children)):
        if simple_node.type == syms.simple_stmt and simple_node.children:
            expr_node = simple_node.children[0]
            if expr_node.type == syms.expr_stmt and expr_node.children:
                # Check if the expr_node is a simple assignment.
                left_node = expr_node.children[0]
                if isinstance(left_node, Leaf) and \
                        left_node.value == u'__metaclass__':
                    # We found an assignment to __metaclass__.
                    fixup_simple_stmt(node, i, simple_node)
                    remove_trailing_newline(simple_node)
                    yield (node, i, simple_node)


def fixup_indent(suite):
    """ If an INDENT is followed by a thing with a prefix then nuke the prefix
        Otherwise we get in trouble when removing __metaclass__ at suite start
    """
    kids = suite.children[::-1]
    # find the first indent
    while kids:
        node = kids.pop()
        if node.type == token.INDENT:
            break

    # find the first Leaf
    while kids:
        node = kids.pop()
        if isinstance(node, Leaf) and node.type != token.DEDENT:
            if node.prefix:
                node.prefix = u''
            return
        else:
            kids.extend(node.children[::-1])


class FixMetaclass(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    classdef<any*>
    """

    def transform(self, node, results):
        if not has_metaclass(node):
            return

        fixup_parse_tree(node)

        # find metaclasses, keep the last one
        last_metaclass = None
        for suite, i, stmt in find_metas(node):
            last_metaclass = stmt
            stmt.remove()

        text_type = node.children[0].type # always Leaf(nnn, 'class')

        # figure out what kind of classdef we have
        if len(node.children) == 7:
            # Node(classdef, ['class', 'name', '(', arglist, ')', ':', suite])
            #                 0        1       2    3        4    5    6
            if node.children[3].type == syms.arglist:
                arglist = node.children[3]
            # Node(classdef, ['class', 'name', '(', 'Parent', ')', ':', suite])
            else:
                parent = node.children[3].clone()
                arglist = Node(syms.arglist, [parent])
                node.set_child(3, arglist)
        elif len(node.children) == 6:
            # Node(classdef, ['class', 'name', '(',  ')', ':', suite])
            #                 0        1       2     3    4    5
            arglist = Node(syms.arglist, [])
            node.insert_child(3, arglist)
        elif len(node.children) == 4:
            # Node(classdef, ['class', 'name', ':', suite])
            #                 0        1       2    3
            arglist = Node(syms.arglist, [])
            node.insert_child(2, Leaf(token.RPAR, u')'))
            node.insert_child(2, arglist)
            node.insert_child(2, Leaf(token.LPAR, u'('))
        else:
            raise ValueError("Unexpected class definition")

        # now stick the metaclass in the arglist
        meta_txt = last_metaclass.children[0].children[0]
        meta_txt.value = 'metaclass'
        orig_meta_prefix = meta_txt.prefix

        if arglist.children:
            arglist.append_child(Leaf(token.COMMA, u','))
            meta_txt.prefix = u' '
        else:
            meta_txt.prefix = u''

        # compact the expression "metaclass = Meta" -> "metaclass=Meta"
        expr_stmt = last_metaclass.children[0]
        assert expr_stmt.type == syms.expr_stmt
        expr_stmt.children[1].prefix = u''
        expr_stmt.children[2].prefix = u''

        arglist.append_child(last_metaclass)

        fixup_indent(suite)

        # check for empty suite
        if not suite.children:
            # one-liner that was just __metaclass_
            suite.remove()
            pass_leaf = Leaf(text_type, u'pass')
            pass_leaf.prefix = orig_meta_prefix
            node.append_child(pass_leaf)
            node.append_child(Leaf(token.NEWLINE, u'\n'))

        elif len(suite.children) > 1 and \
                 (suite.children[-2].type == token.INDENT and
                  suite.children[-1].type == token.DEDENT):
            # there was only one line in the class body and it was __metaclass__
            pass_leaf = Leaf(text_type, u'pass')
            suite.insert_child(-1, pass_leaf)
            suite.insert_child(-1, Leaf(token.NEWLINE, u'\n'))
PKK/�\�d�{��fix_raw_input.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s2Fixer that changes raw_input(...) into input(...).i(t
fixer_base(tNametFixRawInputcBseZeZdZd�ZRS(sU
              power< name='raw_input' trailer< '(' [any] ')' > any* >
              cCs*|d}|jtdd|j��dS(Ntnameuinputtprefix(treplaceRR(tselftnodetresultsR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_raw_input.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletPATTERNR	(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_raw_input.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_raw_input.pyt<module>sPKK/�\~&���fix_urllib.pycnu�[����
{fc@ssdZddlmZmZddlmZddlmZmZm	Z	m
Z
mZmZm
Z
iddddd	d
ddd
gfddddddddddddddddgfddgfgd 6dd
d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7gfdd8d9gfgd:6Zed:jed d;�d<�Zd=efd>��YZd?S(@s�Fix changes imports of urllib which are now incompatible.
   This is rather similar to fix_imports, but because of the more
   complex nature of the fixing for urllib, it has its own fixer.
i����(t
alternatest
FixImports(t
fixer_base(tNametCommat
FromImporttNewlinetfind_indentationtNodetsymssurllib.requestt	URLopenertFancyURLopenerturlretrievet
_urlopenerturlopent
urlcleanuptpathname2urlturl2pathnamesurllib.parsetquotet
quote_plustunquotetunquote_plust	urlencodet	splitattrt	splithostt
splitnporttsplitpasswdt	splitportt
splitquerytsplittagt	splittypet	splitusert
splitvaluesurllib.errortContentTooShortErrorturllibtinstall_openertbuild_openertRequesttOpenerDirectortBaseHandlertHTTPDefaultErrorHandlertHTTPRedirectHandlertHTTPCookieProcessortProxyHandlertHTTPPasswordMgrtHTTPPasswordMgrWithDefaultRealmtAbstractBasicAuthHandlertHTTPBasicAuthHandlertProxyBasicAuthHandlertAbstractDigestAuthHandlertHTTPDigestAuthHandlertProxyDigestAuthHandlertHTTPHandlertHTTPSHandlertFileHandlert
FTPHandlertCacheFTPHandlertUnknownHandlertURLErrort	HTTPErrorturllib2iccs�t�}x�tj�D]w\}}xh|D]`}|\}}t|�}d||fVd|||fVd|Vd|Vd||fVq)WqWdS(Ns�import_name< 'import' (module=%r
                                  | dotted_as_names< any* module=%r any* >) >
                  s�import_from< 'from' mod_member=%r 'import'
                       ( member=%s | import_as_name< member=%s 'as' any > |
                         import_as_names< members=any*  >) >
                  sIimport_from< 'from' module_star=%r 'import' star='*' >
                  stimport_name< 'import'
                                  dotted_as_name< module_as=%r 'as' any > >
                  sKpower< bare_with_attr=%r trailer< '.' member=%s > any* >
                  (tsettMAPPINGtitemsR(tbaret
old_moduletchangestchanget
new_moduletmembers((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt
build_pattern1s	
		t	FixUrllibcBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCsdjt��S(Nt|(tjoinRF(tself((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyRFJscCs�|jd�}|j}g}x?t|jd D],}|jt|dd|�t�g�q0W|jtt|jddd|��|j|�dS(s�Transform for the basic import case. Replaces the old
           import name with a comma separated list of its
           replacements.
        tmodulei����itprefixN(	tgetRLR>tvaluetextendRRtappendtreplace(RJtnodetresultst
import_modtpreftnamestname((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyttransform_importMs	*(cCs�|jd�}|j}|jd�}|r�t|t�rI|d}nd
}x6t|jD]'}|j|dkr]|d}Pq]q]W|r�|jt|d|��q�|j	|d�n/g}i}	|d}
x�|
D]�}|j
tjkr|j
dj}|j
dj}n|j}d
}|d	kr�xlt|jD]Z}||dkr>|d|	krx|j|d�n|	j|dg�j|�q>q>Wq�q�Wg}
t|�}t}d
�}x�|D]�}|	|}g}x8|d D],}|j|||��|jt��q�W|j||d|��t||�}|sa|jjj|�rm||_n|
j|�t}q�W|
r�g}x(|
d D]}|j|t�g�q�W|j|
d�|j|�n|j	|d�d
S(s�Transform for imports of specific module elements. Replaces
           the module to be imported from with the appropriate new
           module.
        t
mod_membertmemberiiRLs!This is an invalid module elementREiu,cSsz|jtjkrdt|jdjd|�|jdj�|jdj�g}ttj|�gSt|jd|�gS(NiRLii(ttypeR	timport_as_nameRtchildrenRNtcloneR(RWRLtkids((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pythandle_name�si����sAll module elements are invalidN(RMRLt
isinstancetlisttNoneR>RNRQRtcannot_convertR[R	R\R]RPt
setdefaultRtTrueRORRtparenttendswithtFalseR(RJRRRSRYRURZtnew_nameRCtmodulestmod_dictREtas_nametmember_namet	new_nodestindentationtfirstR`RKteltsRVtelttnewtnodestnew_node((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyttransform_member]sh	



	+	



cCs�|jd�}|jd�}d}t|t�r@|d}nx6t|jD]'}|j|dkrN|d}PqNqNW|r�|jt|d|j��n|j	|d�dS(s.Transform for calls to module members in code.tbare_with_attrRZiiRLs!This is an invalid module elementN(
RMRcRaRbR>RNRQRRLRd(RJRRRSt
module_dotRZRjRC((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt
transform_dot�s

cCs�|jd�r"|j||�n�|jd�rD|j||�nf|jd�rf|j||�nD|jd�r�|j|d�n"|jd�r�|j|d�ndS(NRKRYRxtmodule_starsCannot handle star imports.t	module_ass#This module is now multiple modules(RMRXRwRzRd(RJRRRS((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt	transform�s(t__name__t
__module__RFRXRwRzR}(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyRGHs
			L	N(t__doc__tlib2to3.fixes.fix_importsRRtlib2to3Rtlib2to3.fixer_utilRRRRRRR	R>RPRFRG(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_urllib.pyt<module>sD4							PKK/�\sGћ��fix_getcwdu.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s1
Fixer that changes os.getcwdu() to os.getcwd().
i(t
fixer_base(tNamet
FixGetcwducBseZeZdZd�ZRS(sR
              power< 'os' trailer< dot='.' name='getcwdu' > any* >
              cCs*|d}|jtdd|j��dS(Ntnameugetcwdtprefix(treplaceRR(tselftnodetresultsR((s1/usr/lib64/python2.7/lib2to3/fixes/fix_getcwdu.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletPATTERNR	(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_getcwdu.pyR
sN(t__doc__tRt
fixer_utilRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_getcwdu.pyt<module>sPKK/�\&�[�fix_xrange.pycnu�[����
{fc@s_dZddlmZddlmZmZmZddlmZdejfd��YZ	dS(s/Fixer that changes xrange(...) into range(...).i(t
fixer_base(tNametCalltconsuming_calls(tpatcompt	FixXrangecBsteZeZdZd�Zd�Zd�Zd�Zd�Z	dZ
eje
�Z
dZeje�Zd�ZRS(	s�
              power<
                 (name='range'|name='xrange') trailer< '(' args=any ')' >
              rest=any* >
              cCs)tt|�j||�t�|_dS(N(tsuperRt
start_treetsetttransformed_xranges(tselfttreetfilename((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyRscCs
d|_dS(N(tNoneR	(R
RR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pytfinish_treescCs^|d}|jdkr)|j||�S|jdkrH|j||�Stt|���dS(Ntnameuxrangeurange(tvaluettransform_xrangettransform_ranget
ValueErrortrepr(R
tnodetresultsR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyt	transforms
cCs@|d}|jtdd|j��|jjt|��dS(NRurangetprefix(treplaceRRR	taddtid(R
RRR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyR$s
cCs�t|�|jkr�|j|�r�ttd�|dj�g�}ttd�|gd|j�}x|dD]}|j|�qsW|SdS(NurangetargsulistRtrest(RR	tin_special_contextRRtcloneRtappend_child(R
RRt
range_callt	list_calltn((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyR*s"s3power< func=NAME trailer< '(' node=any ')' > any* >s�for_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
            | comparison< any 'in' node=any any*>
         cCs�|jdkrtSi}|jjdk	rg|jj|jj|�rg|d|krg|djtkS|jj|j|�o�|d|kS(NRtfunc(tparentR
tFalsetp1tmatchRRtp2(R
RR((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyR?s(t__name__t
__module__tTruet
BM_compatibletPATTERNRRRRRtP1Rtcompile_patternR'tP2R)R(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyRs						N(
t__doc__tRt
fixer_utilRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_xrange.pyt<module>sPKK/�\��s<<fix_isinstance.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(s,Fixer that cleans up a tuple argument to isinstance after the tokens
in it were fixed.  This is mainly used to remove double occurrences of
tokens as a leftover of the long -> int / unicode -> str conversion.

eg.  isinstance(x, (int, long)) -> isinstance(x, (int, int))
       -> isinstance(x, int)
i(t
fixer_base(ttokent
FixIsinstancecBs#eZeZdZdZd�ZRS(s�
    power<
        'isinstance'
        trailer< '(' arglist< any ',' atom< '('
            args=testlist_gexp< any+ >
        ')' > > ')' >
    >
    icCsUt�}|d}|j}g}t|�}x�|D]�\}}	|	jtjkr�|	j|kr�|t|�dkr�||djtjkr�|j	�q5q�q5|j
|	�|	jtjkr5|j|	j�q5q5W|r|djtjkr|d=nt|�dkr@|j}
|
j
|d_
|
j|d�n||(|j�dS(Ntargsii����i(tsettchildrent	enumeratettypeRtNAMEtvaluetlentCOMMAtnexttappendtaddtparenttprefixtreplacetchanged(tselftnodetresultstnames_insertedttestlistRtnew_argstiteratortidxtargtatom((s4/usr/lib64/python2.7/lib2to3/fixes/fix_isinstance.pyt	transforms*	
	!0
	

	(t__name__t
__module__tTruet
BM_compatibletPATTERNt	run_orderR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_isinstance.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_isinstance.pyt<module>
sPKK/�\��QQfix_idioms.pyonu�[����
{fc@smdZddlmZddlmZmZmZmZmZm	Z	dZ
dZdejfd��YZ
dS(	s�Adjust some old Python 2 idioms to their modern counterparts.

* Change some type comparisons to isinstance() calls:
    type(x) == T -> isinstance(x, T)
    type(x) is T -> isinstance(x, T)
    type(x) != T -> not isinstance(x, T)
    type(x) is not T -> not isinstance(x, T)

* Change "while 1:" into "while True:".

* Change both

    v = list(EXPR)
    v.sort()
    foo(v)

and the more general

    v = EXPR
    v.sort()
    foo(v)

into

    v = sorted(EXPR)
    foo(v)
i(t
fixer_base(tCalltCommatNametNodet	BlankLinetsymss0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)s(power< 'type' trailer< '(' x=any ')' > >t	FixIdiomscBsQeZeZdeeeefZd�Zd�Zd�Z	d�Z
d�ZRS(s�
        isinstance=comparison< %s %s T=any >
        |
        isinstance=comparison< T=any %s %s >
        |
        while_stmt< 'while' while='1' ':' any+ >
        |
        sorted=any<
            any*
            simple_stmt<
              expr_stmt< id1=any '='
                         power< list='list' trailer< '(' (not arglist<any+>) any ')' > >
              >
              '\n'
            >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
        |
        sorted=any<
            any*
            simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
    cCsJtt|�j|�}|rFd|krF|d|dkrB|SdS|S(Ntsortedtid1tid2(tsuperRtmatchtNone(tselftnodetr((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyROscCsdd|kr|j||�Sd|kr8|j||�Sd|krT|j||�Std��dS(Nt
isinstancetwhileRs
Invalid match(ttransform_isinstancettransform_whilettransform_sorttRuntimeError(RRtresults((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyt	transformZscCs�|dj�}|dj�}d|_d|_ttd�|t�|g�}d|kr�d|_ttjtd�|g�}n|j|_|S(NtxtTuu u
isinstancetnunot(tclonetprefixRRRRRtnot_test(RRRRRttest((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRds		!	!cCs*|d}|jtdd|j��dS(NRuTrueR(treplaceRR(RRRtone((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRps
cCs=|d}|d}|jd�}|jd�}|rW|jtdd|j��nR|r�|j�}d|_|jttd�|gd|j��ntd��|j�|j}d	|kr9|r|jd	�d
|d
jf}	d	j	|	�|d
_q9t
�}
|jj|
�|jd	�d
|
_ndS(NtsorttnexttlisttexprusortedRusshould not have reached hereu
i(
tgetR RRRRRtremovet
rpartitiontjoinRtparenttappend_child(RRRt	sort_stmtt	next_stmtt	list_calltsimple_exprtnewtbtwntprefix_linestend_line((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRts*

	
	 	(t__name__t
__module__tTruetexplicittTYPEtCMPtPATTERNRRRRR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyR%s'		
		N(t__doc__tRt
fixer_utilRRRRRRR9R8tBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyt<module>s
.PKK/�\�s����fix_input.pynu�[���"""Fixer that changes input(...) into eval(input(...))."""
# Author: Andre Roberge

# Local imports
from .. import fixer_base
from ..fixer_util import Call, Name
from .. import patcomp


context = patcomp.compile_pattern("power< 'eval' trailer< '(' any ')' > >")


class FixInput(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
              power< 'input' args=trailer< '(' [any] ')' > >
              """

    def transform(self, node, results):
        # If we're already wrapped in an eval() call, we're done.
        if context.match(node.parent.parent):
            return

        new = node.clone()
        new.prefix = u""
        return Call(Name(u"eval"), [new], prefix=node.prefix)
PKK/�\v���fix_map.pycnu�[����
{fc@sudZddlmZddlmZddlmZmZmZm	Z	ddl
mZdej
fd��YZdS(	sFixer that changes map(F, ...) into list(map(F, ...)) unless there
exists a 'from future_builtins import map' statement in the top-level
namespace.

As a special case, map(None, X) is changed into list(X).  (This is
necessary because the semantics are changed in this case -- the new
map(None, X) is equivalent to [(x,) for x in X].)

We avoid the transformation (except for the special case mentioned
above) if the map() call is directly contained in iter(<>), list(<>),
tuple(<>), sorted(<>), ...join(<>), or for V in <>:.

NOTE: This is still not correct if the original code was depending on
map(F, X, Y, ...) to go on until the longest argument is exhausted,
substituting None for missing values -- like zip(), it now stops as
soon as the shortest argument is exhausted.
i(ttoken(t
fixer_base(tNametCalltListComptin_special_context(tpython_symbolstFixMapcBs#eZeZdZdZd�ZRS(s�
    map_none=power<
        'map'
        trailer< '(' arglist< 'None' ',' arg=any [','] > ')' >
    >
    |
    map_lambda=power<
        'map'
        trailer<
            '('
            arglist<
                lambdef< 'lambda'
                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
                >
                ','
                it=any
            >
            ')'
        >
    >
    |
    power<
        'map' trailer< '(' [arglist=any] ')' >
    >
    sfuture_builtins.mapcCs�|j|�rdS|jjtjkrh|j|d�|j�}d|_tt	d�|g�}n	d|kr�t
|dj�|dj�|dj��}n�d|kr�|d	j�}n�d
|kr4|d
}|jtjkr4|jdjt
jkr4|jdjdkr4|j|d
�dSnt|�rDdS|j�}d|_tt	d�|g�}|j|_|S(NsYou should use a for loop hereuulistt
map_lambdatxptfptittmap_nonetargtarglistitNonesjcannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequence(tshould_skiptparentttypetsymstsimple_stmttwarningtclonetprefixRRRRtchildrenRtNAMEtvalueRR(tselftnodetresultstnewtargs((s-/usr/lib64/python2.7/lib2to3/fixes/fix_map.pyt	transform;s6	

	(t__name__t
__module__tTruet
BM_compatibletPATTERNtskip_onR (((s-/usr/lib64/python2.7/lib2to3/fixes/fix_map.pyRsN(t__doc__tpgen2RtRt
fixer_utilRRRRtpygramRRtConditionalFixR(((s-/usr/lib64/python2.7/lib2to3/fixes/fix_map.pyt<module>s
"PKK/�\CTw�	�	fix_renames.pycnu�[����
{fc@sudZddlmZddlmZmZiidd6d6ZiZd�Zd�Z	d	ej
fd
��YZdS(s?Fix incompatible renames

Fixes:
  * sys.maxint -> sys.maxsize
i(t
fixer_base(tNamet
attr_chaintmaxsizetmaxinttsyscCsddjtt|��dS(Nt(t|t)(tjointmaptrepr(tmembers((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt
alternatessccsoxhtj�D]Z\}}xK|j�D]=\}}|t||f<d|||fVd||fVq&Wq
WdS(Ns�
                  import_from< 'from' module_name=%r 'import'
                      ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) >
                  s^
                  power< module_name=%r trailer< '.' attr_name=%r > any* >
                  (tMAPPINGtitemstLOOKUP(tmoduletreplacetold_attrtnew_attr((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt
build_patterns

t
FixRenamescBs8eZeZdje��ZdZd�Zd�Z	RS(RtprecsUtt|�j��|�}|rQt�fd�t|d�D��rMtS|StS(Nc3s|]}�|�VqdS(N((t.0tobj(tmatch(s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pys	<genexpr>5stparent(tsuperRRtanyRtFalse(tselftnodetresults((Rs1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyR1s%cCsi|jd�}|jd�}|re|rett|j|jf�}|jt|d|j��ndS(Ntmodule_namet	attr_nametprefix(tgettunicodeRtvalueRRR$(RR R!tmod_nameR#R((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt	transform>s
(
t__name__t
__module__tTruet
BM_compatibleR	RtPATTERNtorderRR)(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyR*s
	
N(t__doc__tRt
fixer_utilRRRRR
RtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt<module>s		PKK/�\m)ĥ��fix_reduce.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sqFixer for reduce().

Makes sure reduce() is imported from the functools module if reduce is
used in that module.
i����(t
fixer_base(ttouch_importt	FixReducecBs#eZeZdZdZd�ZRS(tpresi
    power< 'reduce'
        trailer< '('
            arglist< (
                (not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any) |
                (not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any ','
                 not(argument<any '=' any>) any)
            ) >
        ')' >
    >
    cCstdd|�dS(Nu	functoolsureduce(R(tselftnodetresults((s0/usr/lib64/python2.7/lib2to3/fixes/fix_reduce.pyt	transform"s(t__name__t
__module__tTruet
BM_compatibletordertPATTERNR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_reduce.pyRsN(t__doc__tlib2to3Rtlib2to3.fixer_utilRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_reduce.pyt<module>sPKK/�\���Z��fix_itertools_imports.pyonu�[����
{fc@sOdZddlmZddlmZmZmZdejfd��YZdS(sA Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) i����(t
fixer_base(t	BlankLinetsymsttokentFixItertoolsImportscBs$eZeZde�Zd�ZRS(sT
              import_from< 'from' 'itertools' 'import' imports=any >
              cCs�|d}|jtjks&|jr2|g}n	|j}x�|ddd�D]�}|jtjkry|j}|}n#|jtjkr�dS|jd}|j}|dkr�d|_|j	�qO|dkrO|j
�|d	d
kr�dnd|_qOqOW|jp|g}t}	x=|D]5}|	rN|jtjkrN|j	�q#|	tN}	q#Wx0|r�|d
jtjkr�|j
�j	�q_W|jp�t|dd�s�|jdkr�|j}
t�}|
|_|SdS(Ntimportsiiuimapuizipuifilteruifilterfalseuizip_longestiufufilterfalseuzip_longesti����tvalue(uimapuizipuifilter(uifilterfalseuizip_longest(ttypeRtimport_as_nametchildrenRtNAMERtSTARtNonetremovetchangedtTruetCOMMAtpoptgetattrtparenttprefixR(tselftnodetresultsRR	tchildtmembert	name_nodetmember_nametremove_commatp((s;/usr/lib64/python2.7/lib2to3/fixes/fix_itertools_imports.pyt	transformsB
			
		



			(t__name__t
__module__Rt
BM_compatibletlocalstPATTERNR(((s;/usr/lib64/python2.7/lib2to3/fixes/fix_itertools_imports.pyRs
N(	t__doc__tlib2to3Rtlib2to3.fixer_utilRRRtBaseFixR(((s;/usr/lib64/python2.7/lib2to3/fixes/fix_itertools_imports.pyt<module>sPKK/�\CTw�	�	fix_renames.pyonu�[����
{fc@sudZddlmZddlmZmZiidd6d6ZiZd�Zd�Z	d	ej
fd
��YZdS(s?Fix incompatible renames

Fixes:
  * sys.maxint -> sys.maxsize
i(t
fixer_base(tNamet
attr_chaintmaxsizetmaxinttsyscCsddjtt|��dS(Nt(t|t)(tjointmaptrepr(tmembers((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt
alternatessccsoxhtj�D]Z\}}xK|j�D]=\}}|t||f<d|||fVd||fVq&Wq
WdS(Ns�
                  import_from< 'from' module_name=%r 'import'
                      ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) >
                  s^
                  power< module_name=%r trailer< '.' attr_name=%r > any* >
                  (tMAPPINGtitemstLOOKUP(tmoduletreplacetold_attrtnew_attr((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt
build_patterns

t
FixRenamescBs8eZeZdje��ZdZd�Zd�Z	RS(RtprecsUtt|�j��|�}|rQt�fd�t|d�D��rMtS|StS(Nc3s|]}�|�VqdS(N((t.0tobj(tmatch(s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pys	<genexpr>5stparent(tsuperRRtanyRtFalse(tselftnodetresults((Rs1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyR1s%cCsi|jd�}|jd�}|re|rett|j|jf�}|jt|d|j��ndS(Ntmodule_namet	attr_nametprefix(tgettunicodeRtvalueRRR$(RR R!tmod_nameR#R((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt	transform>s
(
t__name__t
__module__tTruet
BM_compatibleR	RtPATTERNtorderRR)(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyR*s
	
N(t__doc__tRt
fixer_utilRRRRR
RtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_renames.pyt<module>s		PKK/�\Н
�==fix_imports.pynu�[���"""Fix incompatible imports and module references."""
# Authors: Collin Winter, Nick Edds

# Local imports
from .. import fixer_base
from ..fixer_util import Name, attr_chain

MAPPING = {'StringIO':  'io',
           'cStringIO': 'io',
           'cPickle': 'pickle',
           '__builtin__' : 'builtins',
           'copy_reg': 'copyreg',
           'Queue': 'queue',
           'SocketServer': 'socketserver',
           'ConfigParser': 'configparser',
           'repr': 'reprlib',
           'FileDialog': 'tkinter.filedialog',
           'tkFileDialog': 'tkinter.filedialog',
           'SimpleDialog': 'tkinter.simpledialog',
           'tkSimpleDialog': 'tkinter.simpledialog',
           'tkColorChooser': 'tkinter.colorchooser',
           'tkCommonDialog': 'tkinter.commondialog',
           'Dialog': 'tkinter.dialog',
           'Tkdnd': 'tkinter.dnd',
           'tkFont': 'tkinter.font',
           'tkMessageBox': 'tkinter.messagebox',
           'ScrolledText': 'tkinter.scrolledtext',
           'Tkconstants': 'tkinter.constants',
           'Tix': 'tkinter.tix',
           'ttk': 'tkinter.ttk',
           'Tkinter': 'tkinter',
           'markupbase': '_markupbase',
           '_winreg': 'winreg',
           'thread': '_thread',
           'dummy_thread': '_dummy_thread',
           # anydbm and whichdb are handled by fix_imports2
           'dbhash': 'dbm.bsd',
           'dumbdbm': 'dbm.dumb',
           'dbm': 'dbm.ndbm',
           'gdbm': 'dbm.gnu',
           'xmlrpclib': 'xmlrpc.client',
           'DocXMLRPCServer': 'xmlrpc.server',
           'SimpleXMLRPCServer': 'xmlrpc.server',
           'httplib': 'http.client',
           'htmlentitydefs' : 'html.entities',
           'HTMLParser' : 'html.parser',
           'Cookie': 'http.cookies',
           'cookielib': 'http.cookiejar',
           'BaseHTTPServer': 'http.server',
           'SimpleHTTPServer': 'http.server',
           'CGIHTTPServer': 'http.server',
           #'test.test_support': 'test.support',
           'commands': 'subprocess',
           'UserString' : 'collections',
           'UserList' : 'collections',
           'urlparse' : 'urllib.parse',
           'robotparser' : 'urllib.robotparser',
}


def alternates(members):
    return "(" + "|".join(map(repr, members)) + ")"


def build_pattern(mapping=MAPPING):
    mod_list = ' | '.join(["module_name='%s'" % key for key in mapping])
    bare_names = alternates(mapping.keys())

    yield """name_import=import_name< 'import' ((%s) |
               multiple_imports=dotted_as_names< any* (%s) any* >) >
          """ % (mod_list, mod_list)
    yield """import_from< 'from' (%s) 'import' ['(']
              ( any | import_as_name< any 'as' any > |
                import_as_names< any* >)  [')'] >
          """ % mod_list
    yield """import_name< 'import' (dotted_as_name< (%s) 'as' any > |
               multiple_imports=dotted_as_names<
                 any* dotted_as_name< (%s) 'as' any > any* >) >
          """ % (mod_list, mod_list)

    # Find usages of module members in code e.g. thread.foo(bar)
    yield "power< bare_with_attr=(%s) trailer<'.' any > any* >" % bare_names


class FixImports(fixer_base.BaseFix):

    BM_compatible = True
    keep_line_order = True
    # This is overridden in fix_imports2.
    mapping = MAPPING

    # We want to run this fixer late, so fix_import doesn't try to make stdlib
    # renames into relative imports.
    run_order = 6

    def build_pattern(self):
        return "|".join(build_pattern(self.mapping))

    def compile_pattern(self):
        # We override this, so MAPPING can be pragmatically altered and the
        # changes will be reflected in PATTERN.
        self.PATTERN = self.build_pattern()
        super(FixImports, self).compile_pattern()

    # Don't match the node if it's within another match.
    def match(self, node):
        match = super(FixImports, self).match
        results = match(node)
        if results:
            # Module usage could be in the trailer of an attribute lookup, so we
            # might have nested matches when "bare_with_attr" is present.
            if "bare_with_attr" not in results and \
                    any(match(obj) for obj in attr_chain(node, "parent")):
                return False
            return results
        return False

    def start_tree(self, tree, filename):
        super(FixImports, self).start_tree(tree, filename)
        self.replace = {}

    def transform(self, node, results):
        import_mod = results.get("module_name")
        if import_mod:
            mod_name = import_mod.value
            new_name = unicode(self.mapping[mod_name])
            import_mod.replace(Name(new_name, prefix=import_mod.prefix))
            if "name_import" in results:
                # If it's not a "from x import x, y" or "import x as y" import,
                # marked its usage to be replaced.
                self.replace[mod_name] = new_name
            if "multiple_imports" in results:
                # This is a nasty hack to fix multiple imports on a line (e.g.,
                # "import StringIO, urlparse"). The problem is that I can't
                # figure out an easy way to make a pattern recognize the keys of
                # MAPPING randomly sprinkled in an import statement.
                results = self.match(node)
                if results:
                    self.transform(node, results)
        else:
            # Replace usage of the module.
            bare_name = results["bare_with_attr"][0]
            new_name = self.replace.get(bare_name.value)
            if new_name:
                bare_name.replace(Name(new_name, prefix=bare_name.prefix))
PKK/�\�c�^GGfix_ws_comma.pynu�[���"""Fixer that changes 'a ,b' into 'a, b'.

This also changes '{a :b}' into '{a: b}', but does not touch other
uses of colons.  It does not touch other uses of whitespace.

"""

from .. import pytree
from ..pgen2 import token
from .. import fixer_base

class FixWsComma(fixer_base.BaseFix):

    explicit = True # The user must ask for this fixers

    PATTERN = """
    any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]>
    """

    COMMA = pytree.Leaf(token.COMMA, u",")
    COLON = pytree.Leaf(token.COLON, u":")
    SEPS = (COMMA, COLON)

    def transform(self, node, results):
        new = node.clone()
        comma = False
        for child in new.children:
            if child in self.SEPS:
                prefix = child.prefix
                if prefix.isspace() and u"\n" not in prefix:
                    child.prefix = u""
                comma = True
            else:
                if comma:
                    prefix = child.prefix
                    if not prefix:
                        child.prefix = u" "
                comma = False
        return new
PKK/�\}ׄLLfix_nonzero.pycnu�[����
{fc@sIdZddlmZddlmZmZdejfd��YZdS(s*Fixer for __nonzero__ -> __bool__ methods.i(t
fixer_base(tNametsymst
FixNonzerocBseZeZdZd�ZRS(s�
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def' name='__nonzero__'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    cCs0|d}tdd|j�}|j|�dS(Ntnameu__bool__tprefix(RRtreplace(tselftnodetresultsRtnew((s1/usr/lib64/python2.7/lib2to3/fixes/fix_nonzero.pyt	transforms
(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_nonzero.pyRsN(t__doc__tRt
fixer_utilRRtBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_nonzero.pyt<module>sPKK/�\�Y�11fix_print.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for print.

Change:
    'print'          into 'print()'
    'print ...'      into 'print(...)'
    'print ... ,'    into 'print(..., end=" ")'
    'print >>x, ...' into 'print(..., file=x)'

No changes are applied if print_function is imported from __future__

"""

# Local imports
from .. import patcomp
from .. import pytree
from ..pgen2 import token
from .. import fixer_base
from ..fixer_util import Name, Call, Comma, String, is_tuple


parend_expr = patcomp.compile_pattern(
              """atom< '(' [atom|STRING|NAME] ')' >"""
              )


class FixPrint(fixer_base.BaseFix):

    BM_compatible = True

    PATTERN = """
              simple_stmt< any* bare='print' any* > | print_stmt
              """

    def transform(self, node, results):
        assert results

        bare_print = results.get("bare")

        if bare_print:
            # Special-case print all by itself
            bare_print.replace(Call(Name(u"print"), [],
                               prefix=bare_print.prefix))
            return
        assert node.children[0] == Name(u"print")
        args = node.children[1:]
        if len(args) == 1 and parend_expr.match(args[0]):
            # We don't want to keep sticking parens around an
            # already-parenthesised expression.
            return

        sep = end = file = None
        if args and args[-1] == Comma():
            args = args[:-1]
            end = " "
        if args and args[0] == pytree.Leaf(token.RIGHTSHIFT, u">>"):
            assert len(args) >= 2
            file = args[1].clone()
            args = args[3:] # Strip a possible comma after the file expression
        # Now synthesize a print(args, sep=..., end=..., file=...) node.
        l_args = [arg.clone() for arg in args]
        if l_args:
            l_args[0].prefix = u""
        if sep is not None or end is not None or file is not None:
            if sep is not None:
                self.add_kwarg(l_args, u"sep", String(repr(sep)))
            if end is not None:
                self.add_kwarg(l_args, u"end", String(repr(end)))
            if file is not None:
                self.add_kwarg(l_args, u"file", file)
        n_stmt = Call(Name(u"print"), l_args)
        n_stmt.prefix = node.prefix
        return n_stmt

    def add_kwarg(self, l_nodes, s_kwd, n_expr):
        # XXX All this prefix-setting may lose comments (though rarely)
        n_expr.prefix = u""
        n_argument = pytree.Node(self.syms.argument,
                                 (Name(s_kwd),
                                  pytree.Leaf(token.EQUAL, u"="),
                                  n_expr))
        if l_nodes:
            l_nodes.append(Comma())
            n_argument.prefix = u" "
        l_nodes.append(n_argument)
PKK/�\g�M��fix_xreadlines.pynu�[���"""Fix "for x in f.xreadlines()" -> "for x in f".

This fixer will also convert g(f.xreadlines) into g(f.__iter__)."""
# Author: Collin Winter

# Local imports
from .. import fixer_base
from ..fixer_util import Name


class FixXreadlines(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > >
    |
    power< any+ trailer< '.' no_call='xreadlines' > >
    """

    def transform(self, node, results):
        no_call = results.get("no_call")

        if no_call:
            no_call.replace(Name(u"__iter__", prefix=no_call.prefix))
        else:
            node.replace([x.clone() for x in results["call"]])
PKK/�\�,�b�	�	
fix_raise.pyonu�[����
{fc@s{dZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZdejfd��YZ
dS(	s[Fixer for 'raise E, V, T'

raise         -> raise
raise E       -> raise E
raise E, V    -> raise E(V)
raise E, V, T -> raise E(V).with_traceback(T)
raise E, None, T -> raise E.with_traceback(T)

raise (((E, E'), E''), E'''), V -> raise E(V)
raise "foo", V, T               -> warns about string exceptions


CAVEATS:
1) "raise E, V" will be incorrectly translated if V is an exception
   instance. The correct Python 3 idiom is

        raise E from V

   but since we can't detect instance-hood by syntax alone and since
   any client code would have to be changed as well, we don't automate
   this.
i(tpytree(ttoken(t
fixer_base(tNametCalltAttrtArgListtis_tupletFixRaisecBseZeZdZd�ZRS(sB
    raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] >
    c
Cs|j}|dj�}|jtjkrEd}|j||�dSt|�r�x*t|�r}|jdjdj�}qTWd|_nd|kr�t	j
|jtd�|g�}|j|_|S|dj�}t|�rg|jdd!D]}|j�^q�}	nd	|_|g}	d
|kr�|d
j�}
d	|
_|}|jtj
ksm|jdkrt||	�}nt|td��t|
g�g}t	j
|jtd�g|�}|j|_|St	j
|jtd�t||	�gd
|j�SdS(Ntexcs+Python 3 does not support string exceptionsiiu tvaluraisei����uttbuNoneuwith_tracebacktprefix(tsymstclonettypeRtSTRINGtcannot_convertRtchildrenRRtNodet
raise_stmtRtNAMEtvalueRRRtsimple_stmt(
tselftnodetresultsR
R	tmsgtnewR
tctargsRtetwith_tb((s//usr/lib64/python2.7/lib2to3/fixes/fix_raise.pyt	transform&s@	!,			!%"(t__name__t
__module__tTruet
BM_compatibletPATTERNR!(((s//usr/lib64/python2.7/lib2to3/fixes/fix_raise.pyRsN(t__doc__tRtpgen2RRt
fixer_utilRRRRRtBaseFixR(((s//usr/lib64/python2.7/lib2to3/fixes/fix_raise.pyt<module>s
(PKK/�\t�fix_asserts.pyonu�[����
{fc@s�dZddlmZddlmZedddddd	d
ddd
dddddddd	dddd
dddddd�Zdefd��YZdS(s5Fixer that replaces deprecated unittest method names.i(tBaseFix(tNametassert_t
assertTruetassertEqualstassertEqualtassertNotEqualstassertNotEqualtassertAlmostEqualstassertAlmostEqualtassertNotAlmostEqualstassertNotAlmostEqualtassertRegexpMatchestassertRegextassertRaisesRegexptassertRaisesRegextfailUnlessEqualtfailIfEqualtfailUnlessAlmostEqualtfailIfAlmostEqualt
failUnlesstfailUnlessRaisestassertRaisestfailIftassertFalset
FixAssertscBs-eZddjeee��Zd�ZRS(sH
              power< any+ trailer< '.' meth=(%s)> any* >
              t|cCs8|dd}|jttt|�d|j��dS(Ntmethitprefix(treplaceRtNAMEStstrR(tselftnodetresultstname((s1/usr/lib64/python2.7/lib2to3/fixes/fix_asserts.pyt	transform s(t__name__t
__module__tjointmaptreprRtPATTERNR$(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_asserts.pyRsN(t__doc__t
fixer_baseRt
fixer_utilRtdictRR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_asserts.pyt<module>s$	PKK/�\u���
�
fix_next.pycnu�[����
{fc@s�dZddlmZddlmZddlmZddlm	Z	m
Z
mZdZdej
fd��YZd	�Zd
�Zd�ZdS(
s.Fixer for it.next() -> next(it), per PEP 3114.i(ttoken(tpython_symbols(t
fixer_base(tNametCalltfind_bindings;Calls to builtin next() possibly shadowed by global bindingtFixNextcBs,eZeZdZdZd�Zd�ZRS(s�
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def'
                              name='next'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    tprecCsWtt|�j||�td|�}|rJ|j|t�t|_n	t|_dS(Nunext(	tsuperRt
start_treeRtwarningtbind_warningtTruet
shadowed_nexttFalse(tselfttreetfilenametn((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyR	$scCs�|st�|jd�}|jd�}|jd�}|r�|jrg|jtdd|j��q�g|D]}|j�^qn}d|d_|jttdd|j�|��n�|r�tdd|j�}|j|�n�|rct|�rM|d	}d
j	g|D]}t
|�^q�j�dkrI|j|t
�ndS|jtd��n(d|kr�|j|t
�t|_ndS(
Ntbasetattrtnameu__next__tprefixuiunexttheadtu__builtin__tglobal(tAssertionErrortgetR
treplaceRRtcloneRtis_assign_targettjointstrtstripR
RR(RtnodetresultsRRRRR((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyt	transform.s.	
(
4(t__name__t
__module__Rt
BM_compatibletPATTERNtorderR	R$(((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyRs
	
cCs]t|�}|dkrtSx:|jD]/}|jtjkrBtSt||�r&tSq&WtS(N(	tfind_assigntNoneRtchildrenttypeRtEQUALt
is_subtreeR(R"tassigntchild((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyRQscCsH|jtjkr|S|jtjks7|jdkr;dSt|j�S(N(R-tsymst	expr_stmttsimple_stmttparentR+R*(R"((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyR*]s
!cs-|�krtSt�fd�|jD��S(Nc3s|]}t|��VqdS(N(R/(t.0tc(R"(s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pys	<genexpr>gs(RtanyR,(trootR"((R"s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyR/dsN(t__doc__tpgen2RtpygramRR2RRt
fixer_utilRRRRtBaseFixRRR*R/(((s./usr/lib64/python2.7/lib2to3/fixes/fix_next.pyt<module>s@		PKK/�\RJ,���fix_raw_input.pynu�[���"""Fixer that changes raw_input(...) into input(...)."""
# Author: Andre Roberge

# Local imports
from .. import fixer_base
from ..fixer_util import Name

class FixRawInput(fixer_base.BaseFix):

    BM_compatible = True
    PATTERN = """
              power< name='raw_input' trailer< '(' [any] ')' > any* >
              """

    def transform(self, node, results):
        name = results["name"]
        name.replace(Name(u"input", prefix=name.prefix))
PKK/�\\g7�''fix_basestring.pyonu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sFixer for basestring -> str.i(t
fixer_base(tNamet
FixBasestringcBseZeZdZd�ZRS(s'basestring'cCstdd|j�S(Nustrtprefix(RR(tselftnodetresults((s4/usr/lib64/python2.7/lib2to3/fixes/fix_basestring.pyt	transform
s(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_basestring.pyRsN(t__doc__tRt
fixer_utilRtBaseFixR(((s4/usr/lib64/python2.7/lib2to3/fixes/fix_basestring.pyt<module>sPKK/�\:^S�fix_sys_exc.pynu�[���"""Fixer for sys.exc_{type, value, traceback}

sys.exc_type -> sys.exc_info()[0]
sys.exc_value -> sys.exc_info()[1]
sys.exc_traceback -> sys.exc_info()[2]
"""

# By Jeff Balogh and Benjamin Peterson

# Local imports
from .. import fixer_base
from ..fixer_util import Attr, Call, Name, Number, Subscript, Node, syms

class FixSysExc(fixer_base.BaseFix):
    # This order matches the ordering of sys.exc_info().
    exc_info = [u"exc_type", u"exc_value", u"exc_traceback"]
    BM_compatible = True
    PATTERN = """
              power< 'sys' trailer< dot='.' attribute=(%s) > >
              """ % '|'.join("'%s'" % e for e in exc_info)

    def transform(self, node, results):
        sys_attr = results["attribute"][0]
        index = Number(self.exc_info.index(sys_attr.value))

        call = Call(Name(u"exc_info"), prefix=sys_attr.prefix)
        attr = Attr(Name(u"sys"), call)
        attr[1].children[0].prefix = results["dot"].prefix
        attr.append(Subscript(index))
        return Node(syms.power, attr, prefix=node.prefix)
PKK/�\i��fix_idioms.pycnu�[����
{fc@smdZddlmZddlmZmZmZmZmZm	Z	dZ
dZdejfd��YZ
dS(	s�Adjust some old Python 2 idioms to their modern counterparts.

* Change some type comparisons to isinstance() calls:
    type(x) == T -> isinstance(x, T)
    type(x) is T -> isinstance(x, T)
    type(x) != T -> not isinstance(x, T)
    type(x) is not T -> not isinstance(x, T)

* Change "while 1:" into "while True:".

* Change both

    v = list(EXPR)
    v.sort()
    foo(v)

and the more general

    v = EXPR
    v.sort()
    foo(v)

into

    v = sorted(EXPR)
    foo(v)
i(t
fixer_base(tCalltCommatNametNodet	BlankLinetsymss0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)s(power< 'type' trailer< '(' x=any ')' > >t	FixIdiomscBsQeZeZdeeeefZd�Zd�Zd�Z	d�Z
d�ZRS(s�
        isinstance=comparison< %s %s T=any >
        |
        isinstance=comparison< T=any %s %s >
        |
        while_stmt< 'while' while='1' ':' any+ >
        |
        sorted=any<
            any*
            simple_stmt<
              expr_stmt< id1=any '='
                         power< list='list' trailer< '(' (not arglist<any+>) any ')' > >
              >
              '\n'
            >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
        |
        sorted=any<
            any*
            simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
    cCsJtt|�j|�}|rFd|krF|d|dkrB|SdS|S(Ntsortedtid1tid2(tsuperRtmatchtNone(tselftnodetr((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyROscCsdd|kr|j||�Sd|kr8|j||�Sd|krT|j||�Std��dS(Nt
isinstancetwhileRs
Invalid match(ttransform_isinstancettransform_whilettransform_sorttRuntimeError(RRtresults((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyt	transformZscCs�|dj�}|dj�}d|_d|_ttd�|t�|g�}d|kr�d|_ttjtd�|g�}n|j|_|S(NtxtTuu u
isinstancetnunot(tclonetprefixRRRRRtnot_test(RRRRRttest((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRds		!	!cCs*|d}|jtdd|j��dS(NRuTrueR(treplaceRR(RRRtone((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRps
cCsv|d}|d}|jd�}|jd�}|rW|jtdd|j��nR|r�|j�}d|_|jttd�|gd|j��ntd��|j�|j}d	|krr|r|jd	�d
|d
jf}	d	j	|	�|d
_qr|j
st�|jdks+t�t�}
|j
j|
�|j|
ksYt�|jd	�d
|
_ndS(NtsorttnexttlisttexprusortedRusshould not have reached hereu
i(tgetR RRRRRtremovet
rpartitiontjointparenttAssertionErrortnext_siblingR
Rtappend_child(RRRt	sort_stmtt	next_stmtt	list_calltsimple_exprtnewtbtwntprefix_linestend_line((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyRts0

	
	 	(t__name__t
__module__tTruetexplicittTYPEtCMPtPATTERNRRRRR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyR%s'		
		N(t__doc__tRt
fixer_utilRRRRRRR;R:tBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_idioms.pyt<module>s
.PKK/�\��ˈ�
fix_zip.pynu�[���"""
Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...)
unless there exists a 'from future_builtins import zip' statement in the
top-level namespace.

We avoid the transformation if the zip() call is directly contained in
iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:.
"""

# Local imports
from .. import fixer_base
from ..fixer_util import Name, Call, in_special_context

class FixZip(fixer_base.ConditionalFix):

    BM_compatible = True
    PATTERN = """
    power< 'zip' args=trailer< '(' [any] ')' >
    >
    """

    skip_on = "future_builtins.zip"

    def transform(self, node, results):
        if self.should_skip(node):
            return

        if in_special_context(node):
            return None

        new = node.clone()
        new.prefix = u""
        new = Call(Name(u"list"), [new])
        new.prefix = node.prefix
        return new
PKK/�\�xWfix_intern.pycnu�[����
{fc@s_dZddlmZddlmZddlmZmZmZdejfd��YZ	dS(s/Fixer for intern().

intern(s) -> sys.intern(s)i(tpytree(t
fixer_base(tNametAttrttouch_importt	FixInterncBs#eZeZdZdZd�ZRS(tpres�
    power< 'intern'
           trailer< lpar='('
                    ( not(arglist | argument<any '=' any>) obj=any
                      | obj=arglist<(not argument<any '=' any>) any ','> )
                    rpar=')' >
           after=any*
    >
    c		Cso|rd|d}|rd|j|jjkr/dS|j|jjkra|jdjdkradSqdn|j}|dj�}|j|jkr�|j�}ntj	|j|j�g�}|d}|r�g|D]}|j�^q�}ntj	|j
ttd�td��tj	|j
|dj�||dj�g�g|�}|j|_tdd|�|S(	Ntobjis**tafterusysuinterntlpartrpar(ttypetsymst	star_exprtargumenttchildrentvaluetclonetarglistRtNodetpowerRRttrailertprefixRtNone(	tselftnodetresultsRRt
newarglistRtntnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_intern.pyt	transforms*

	
"U(t__name__t
__module__tTruet
BM_compatibletordertPATTERNR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_intern.pyRs
N(
t__doc__tRRt
fixer_utilRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_intern.pyt<module>sPKK/�\�҇��
�

fix_print.pycnu�[����
{fc@s�dZddlmZddlmZddlmZddlmZddlmZm	Z	m
Z
mZmZej
d�Zdejfd	��YZd
S(sFixer for print.

Change:
    'print'          into 'print()'
    'print ...'      into 'print(...)'
    'print ... ,'    into 'print(..., end=" ")'
    'print >>x, ...' into 'print(..., file=x)'

No changes are applied if print_function is imported from __future__

i(tpatcomp(tpytree(ttoken(t
fixer_base(tNametCalltCommatStringtis_tuples"atom< '(' [atom|STRING|NAME] ')' >tFixPrintcBs&eZeZdZd�Zd�ZRS(sP
              simple_stmt< any* bare='print' any* > | print_stmt
              cCs2|st�|jd�}|rJ|jttd�gd|j��dS|jdtd�ksit�|jd}t|�dkr�tj	|d�r�dSd}}}|r�|dt�kr�|d }d}n|r3|dtj
tjd�kr3t|�d	kst�|dj�}|d
}ng|D]}|j�^q:}	|	rhd|	d_n|dk	s�|dk	s�|dk	r
|dk	r�|j|	dtt|���n|dk	r�|j|	d
tt|���n|dk	r
|j|	d|�q
nttd�|	�}
|j|
_|
S(Ntbareuprinttprefixiii����t u>>iiuusepuendufile(tAssertionErrortgettreplaceRRRtchildrentlentparend_exprtmatchtNoneRRtLeafRt
RIGHTSHIFTtclonet	add_kwargRtrepr(tselftnodetresultst
bare_printtargstseptendtfiletargtl_argstn_stmt((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyt	transform%s>

%
	%
$""cCsrd|_tj|jjt|�tjtjd�|f�}|ra|j	t
��d|_n|j	|�dS(Nuu=u (RRtNodetsymstargumentRRRtEQUALtappendR(Rtl_nodests_kwdtn_exprt
n_argument((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyRMs		(t__name__t
__module__tTruet
BM_compatibletPATTERNR%R(((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyR	s	(N(t__doc__tRRtpgen2RRt
fixer_utilRRRRRtcompile_patternRtBaseFixR	(((s//usr/lib64/python2.7/lib2to3/fixes/fix_print.pyt<module>s(	PKK/�\�ؒ��__init__.pycnu�[����
{fc@sdS(N((((s./usr/lib64/python2.7/lib2to3/fixes/__init__.pyt<module>tPKK/�\��5��
�
fix_exitfunc.pycnu�[����
{fc@sgdZddlmZmZddlmZmZmZmZm	Z	m
Z
dejfd��YZdS(s7
Convert use of sys.exitfunc to use the atexit module.
i����(tpytreet
fixer_base(tNametAttrtCalltCommatNewlinetsymstFixExitfunccBs5eZeZeZdZd�Zd�Zd�ZRS(s�
              (
                  sys_import=import_name<'import'
                      ('sys'
                      |
                      dotted_as_names< (any ',')* 'sys' (',' any)* >
                      )
                  >
              |
                  expr_stmt<
                      power< 'sys' trailer< '.' 'exitfunc' > >
                  '=' func=any >
              )
              cGstt|�j|�dS(N(tsuperRt__init__(tselftargs((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyR
scCs&tt|�j||�d|_dS(N(R	Rt
start_treetNonet
sys_import(Rttreetfilename((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyR
!scCs�d|kr/|jdkr+|d|_ndS|dj�}d|_tjtjtt	d�t	d���}t
||g|j�}|j|�|jdkr�|j|d�dS|jj
d}|jtjkr|jt��|jt	dd��n�|jj}|j
j|j�}|j}	tjtjt	d	�t	dd�g�}
tjtj|
g�}|j|dt��|j|d
|�dS(NRtfuncuuatexituregistersKCan't find sys import; Please add an atexit import at the top of your file.iu uimporti(RRtclonetprefixRtNodeRtpowerRRRtreplacetwarningtchildrenttypetdotted_as_namestappend_childRtparenttindextimport_nametsimple_stmttinsert_childR(RtnodetresultsRtregistertcalltnamestcontaining_stmttpositiontstmt_containert
new_importtnew((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyt	transform%s2	
	(	t__name__t
__module__tTruetkeep_line_ordert
BM_compatibletPATTERNR
R
R,(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyRs		N(
t__doc__tlib2to3RRtlib2to3.fixer_utilRRRRRRtBaseFixR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_exitfunc.pyt<module>s.PKK/�\�]����fix_metaclass.pycnu�[����
{fc@s�dZddlmZddlmZddlmZmZmZm	Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zdejfd��YZd
S(s�Fixer for __metaclass__ = X -> (metaclass=X) methods.

   The various forms of classef (inherits nothing, inherits once, inherints
   many) don't parse the same in the CST so we look at ALL classes for
   a __metaclass__ and if we find one normalize the inherits to all be
   an arglist.

   For one-liner classes ('class X: pass') there is no indent/dedent so
   we normalize those into having a suite.

   Moving the __metaclass__ into the classdef can also cause the class
   body to be empty so there is some special casing for that as well.

   This fixer also tries very hard to keep original indenting and spacing
   in all those corner cases.

i(t
fixer_base(ttoken(tNametsymstNodetLeafcCs�x�|jD]�}|jtjkr,t|�S|jtjkr
|jr
|jd}|jtjkr�|jr�|jd}t|t�r�|j	dkr�t
Sq�q
q
WtS(s� we have to check the cls_node without changing it.
        There are two possibilities:
          1)  clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta')
          2)  clsdef => simple_stmt => expr_stmt => Leaf('__meta')
    it
__metaclass__(tchildrenttypeRtsuitet
has_metaclasstsimple_stmtt	expr_stmtt
isinstanceRtvaluetTruetFalse(tparenttnodet	expr_nodet	left_side((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyR
s


cCs�x'|jD]}|jtjkr
dSq
Wx?t|j�D]"\}}|jtjkr:Pq:q:Wtd��ttjg�}xC|j|dr�|j|d}|j	|j
��|j�q�W|j	|�|}dS(sf one-line classes don't get a suite in the parse tree so we add
        one to normalize the tree
    NsNo class suite and no ':'!i(RRRR	t	enumerateRtCOLONt
ValueErrorRtappend_childtclonetremove(tcls_nodeRtiR	t	move_node((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytfixup_parse_tree-s
c
Cs�x7t|j�D]"\}}|jtjkrPqqWdS|j�ttjg�}ttj	|g�}x;|j|r�|j|}|j
|j��|j�qnW|j||�|jdjd}|jdjd}	|	j
|_
dS(s� if there is a semi-colon all the parts count as part of the same
        simple_stmt.  We just want the __metaclass__ part so we move
        everything after the semi-colon into its own simple_stmt node
    Ni(RRRRtSEMIRRRRRRRtinsert_childtprefix(
RRt	stmt_nodetsemi_indRtnew_exprtnew_stmtRt	new_leaf1t	old_leaf1((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytfixup_simple_stmtGs

cCs:|jr6|jdjtjkr6|jdj�ndS(Ni����(RRRtNEWLINER(R((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytremove_trailing_newline_s"ccs�x3|jD]}|jtjkr
Pq
q
Wtd��x�tt|j��D]�\}}|jtjkrL|jrL|jd}|jtjkr�|jr�|jd}t	|t
�r�|jdkr�t|||�t
|�|||fVq�q�qLqLWdS(NsNo class suite!iu
__metaclass__(RRRR	RtlistRRRR
RRR(R*(RRRtsimple_nodeRt	left_node((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyt
find_metasds"


cCs�|jddd�}x,|rD|j�}|jtjkrPqqWxm|r�|j�}t|t�r�|jtjkr�|jr�d|_ndS|j	|jddd��qHWdS(s� If an INDENT is followed by a thing with a prefix then nuke the prefix
        Otherwise we get in trouble when removing __metaclass__ at suite start
    Ni����u(
RtpopRRtINDENTR
RtDEDENTR!textend(R	tkidsR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pytfixup_indent{s		!	tFixMetaclasscBseZeZdZd�ZRS(s
    classdef<any*>
    cCs't|�sdSt|�d}x-t|�D]\}}}|}|j�q-W|jdj}t|j�dkr�|jdjtj	kr�|jd}q�|jdj
�}	ttj	|	g�}|jd|�n�t|j�dkrttj	g�}|j
d|�n~t|j�dkr�ttj	g�}|j
dttjd��|j
d|�|j
dttjd��ntd	��|jdjd}
d
|
_|
j}|jr�|jttjd��d|
_n	d
|
_|jd}|jtjkst�d
|jd_d
|jd_|j|�t|�|js�|j�t|d�}
||
_|j|
�|jttjd��n�t|j�dkr#|jdjtjkr#|jdjtjkr#t|d�}
|j
d|
�|j
dttjd��ndS(Niiiiiiu)u(sUnexpected class definitiont	metaclassu,u uiupassu
i����i����(R
RtNoneR.RRRtlenRtarglistRRt	set_childR RRtRPARtLPARRRR!RtCOMMARtAssertionErrorR4R)R0R1(tselfRtresultstlast_metaclassR	Rtstmtt	text_typeR9Rtmeta_txttorig_meta_prefixRt	pass_leaf((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyt	transform�s`
				


	
	
(t__name__t
__module__Rt
BM_compatibletPATTERNRG(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyR5�sN(t__doc__tRtpygramRt
fixer_utilRRRRR
RR(R*R.R4tBaseFixR5(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_metaclass.pyt<module>s"						PKK/�\_;�>��fix_set_literal.pyonu�[����
{fc@sOdZddlmZmZddlmZmZdejfd��YZdS(s:
Optional fixer to transform set() calls to set literals.
i����(t
fixer_basetpytree(ttokentsymst
FixSetLiteralcBs#eZeZeZdZd�ZRS(sjpower< 'set' trailer< '('
                     (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) >
                                |
                                single=any) ']' >
                     |
                     atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' >
                     )
                     ')' > >
              c	Cs|jd�}|rItjtj|j�g�}|j|�|}n
|d}tjtj	d�g}|j
d�|jD��|jtjtj
d��|jj|d_tjtj|�}|j|_t|j�dkr|jd}|j�|j|jd_n|S(	Ntsingletitemsu{css|]}|j�VqdS(N(tclone(t.0tn((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pys	<genexpr>'su}i����ii(tgetRtNodeRt	listmakerRtreplacetLeafRtLBRACEtextendtchildrentappendtRBRACEtnext_siblingtprefixtdictsetmakertlentremove(	tselftnodetresultsRtfakeRtliteraltmakerR	((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pyt	transforms"
	


(t__name__t
__module__tTruet
BM_compatibletexplicittPATTERNR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pyRs
N(	t__doc__tlib2to3RRtlib2to3.fixer_utilRRtBaseFixR(((s5/usr/lib64/python2.7/lib2to3/fixes/fix_set_literal.pyt<module>sPKK/�\�?�յ�fix_import.pycnu�[����
{fc@szdZddlmZddlmZmZmZmZddlm	Z	m
Z
mZd�Zdej
fd��YZd	S(
s�Fixer for import statements.
If spam is being imported from the local directory, this import:
    from spam import eggs
Becomes:
    from .spam import eggs

And this import:
    import spam
Becomes:
    from . import spam
i(t
fixer_basei����(tdirnametjointexiststsep(t
FromImporttsymsttokenccs�|g}x�|r�|j�}|jtjkr;|jVq|jtjkrwdjg|jD]}|j^q]�Vq|jtj	kr�|j
|jd�q|jtjkr�|j|jddd��qt
d��qWdS(sF
    Walks over all the names imported in a dotted_as_names node.
    tiNi����sunknown node type(tpopttypeRtNAMEtvalueRtdotted_nameRtchildrentdotted_as_nametappendtdotted_as_namestextendtAssertionError(tnamestpendingtnodetch((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyttraverse_importss		* t	FixImportcBs/eZeZdZd�Zd�Zd�ZRS(sj
    import_from< 'from' imp=any 'import' ['('] any [')'] >
    |
    import_name< 'import' imp=any >
    cCs/tt|�j||�d|jk|_dS(Ntabsolute_import(tsuperRt
start_treetfuture_featurestskip(tselfttreetname((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR/scCs|jr
dS|d}|jtjkr~x t|d�sK|jd}q,W|j|j�rd|j|_|j�qn�t	}t	}x2t
|�D]$}|j|�r�t}q�t}q�W|r�|r�|j|d�ndSt
d|g�}|j|_|SdS(NtimpRiu.s#absolute and local imports together(RR
Rtimport_fromthasattrRtprobably_a_local_importRtchangedtFalseRtTruetwarningRtprefix(RRtresultsR"t
have_localt
have_absolutetmod_nametnew((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyt	transform3s,	
	
cCs�|jd�rtS|jdd�d}t|j�}t||�}ttt|�d��sftSx4dtdddd	gD]}t||�rtSqWtS(
Nu.iis__init__.pys.pys.pycs.sos.sls.pyd(	t
startswithR'tsplitRtfilenameRRRR((Rtimp_namet	base_pathtext((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR%Us(t__name__t
__module__R(t
BM_compatibletPATTERNRR0R%(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyR&s
		"N(t__doc__RRtos.pathRRRRt
fixer_utilRRRRtBaseFixR(((s0/usr/lib64/python2.7/lib2to3/fixes/fix_import.pyt<module>s
"	PKK/�\Ҋ��<<fix_execfile.pycnu�[����
{fc@sydZddlmZddlmZmZmZmZmZm	Z	m
Z
mZmZm
Z
dejfd��YZdS(soFixer for execfile.

This converts usages of the execfile function into calls to the built-in
exec() function.
i(t
fixer_base(
tCommatNametCalltLParentRParentDottNodetArgListtStringtsymstFixExecfilecBseZeZdZd�ZRS(s�
    power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > >
    |
    power< 'execfile' trailer< '(' filename=any ')' > >
    cCs�|st�|d}|jd�}|jd�}|jdjdj�}t|j�t�tdd�gd|�}ttj	t
d�|g�}ttjt�t
d	�g�ttjt
�t�g�g}	|g|	}
|j�}d
|_tdd
�}|
t�|t�|g}
tt
d�|
d
�}|g}|dk	rq|jt�|j�g�n|dk	r�|jt�|j�g�ntt
d�|d|j�S(Ntfilenametglobalstlocalsi����s"rb"t trparenuopenureadu u'exec'ucompileuuexectprefix(tAssertionErrortgettchildrentcloneRRR	RR
tpowerRttrailerRRRRRtNonetextend(tselftnodetresultsRR
Rtexecfile_parent	open_argst	open_calltreadt	open_exprtfilename_argtexec_strtcompile_argstcompile_calltargs((s2/usr/lib64/python2.7/lib2to3/fixes/fix_execfile.pyt	transforms,
$	!
		(t__name__t
__module__tTruet
BM_compatibletPATTERNR'(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_execfile.pyRsN(t__doc__tRt
fixer_utilRRRRRRRRR	R
tBaseFixR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_execfile.pyt<module>sFPKK/�\��\���fix_unicode.pyonu�[����
{fc@sWdZddlmZddlmZidd6dd6Zdejfd	��YZd
S(s�Fixer for unicode.

* Changes unicode to str and unichr to chr.

* If "...\u..." is not unicode literal change it into "...\\u...".

* Change u"..." into "...".

i(ttoken(t
fixer_baseuchruunichrustruunicodet
FixUnicodecBs&eZeZdZd�Zd�ZRS(sSTRING | 'unicode' | 'unichr'cCs/tt|�j||�d|jk|_dS(Ntunicode_literals(tsuperRt
start_treetfuture_featuresR(tselfttreetfilename((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyRscCs|jtjkr2|j�}t|j|_|S|jtjkr|j}|jr�|ddkr�d|kr�djg|j	d�D]$}|j
dd�j
dd�^q��}n|dd	kr�|d
}n||jkr�|S|j�}||_|SdS(Niu'"u\u\\u\uu\\uu\Uu\\UuuUi(ttypeRtNAMEtclonet_mappingtvaluetSTRINGRtjointsplittreplace(Rtnodetresultstnewtvaltv((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyt	transforms"	&=
	(t__name__t
__module__tTruet
BM_compatibletPATTERNRR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyRs	N(t__doc__tpgen2RtRR
tBaseFixR(((s1/usr/lib64/python2.7/lib2to3/fixes/fix_unicode.pyt<module>	sPKK/�\ɣ�9ggfix_methodattrs.pynu�[���"""Fix bound method attributes (method.im_? -> method.__?__).
"""
# Author: Christian Heimes

# Local imports
from .. import fixer_base
from ..fixer_util import Name

MAP = {
    "im_func" : "__func__",
    "im_self" : "__self__",
    "im_class" : "__self__.__class__"
    }

class FixMethodattrs(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* >
    """

    def transform(self, node, results):
        attr = results["attr"][0]
        new = unicode(MAP[attr.value])
        attr.replace(Name(new, prefix=attr.prefix))
PKK/�\G~�Zfix_repr.pyonu�[����
{fc@sOdZddlmZddlmZmZmZdejfd��YZdS(s/Fixer that transforms `xyzzy` into repr(xyzzy).i(t
fixer_base(tCalltNametparenthesizetFixReprcBseZeZdZd�ZRS(s7
              atom < '`' expr=any '`' >
              cCsS|dj�}|j|jjkr4t|�}nttd�|gd|j�S(Ntexprureprtprefix(tclonettypetsymst	testlist1RRRR(tselftnodetresultsR((s./usr/lib64/python2.7/lib2to3/fixes/fix_repr.pyt	transforms(t__name__t
__module__tTruet
BM_compatibletPATTERNR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_repr.pyRsN(	t__doc__tRt
fixer_utilRRRtBaseFixR(((s./usr/lib64/python2.7/lib2to3/fixes/fix_repr.pyt<module>sPKK/�\�=���fix_asserts.pynu�[���"""Fixer that replaces deprecated unittest method names."""

# Author: Ezio Melotti

from ..fixer_base import BaseFix
from ..fixer_util import Name

NAMES = dict(
    assert_="assertTrue",
    assertEquals="assertEqual",
    assertNotEquals="assertNotEqual",
    assertAlmostEquals="assertAlmostEqual",
    assertNotAlmostEquals="assertNotAlmostEqual",
    assertRegexpMatches="assertRegex",
    assertRaisesRegexp="assertRaisesRegex",
    failUnlessEqual="assertEqual",
    failIfEqual="assertNotEqual",
    failUnlessAlmostEqual="assertAlmostEqual",
    failIfAlmostEqual="assertNotAlmostEqual",
    failUnless="assertTrue",
    failUnlessRaises="assertRaises",
    failIf="assertFalse",
)


class FixAsserts(BaseFix):

    PATTERN = """
              power< any+ trailer< '.' meth=(%s)> any* >
              """ % '|'.join(map(repr, NAMES))

    def transform(self, node, results):
        name = results["meth"][0]
        name.replace(Name(NAMES[str(name)], prefix=name.prefix))
PKK/�\QA��fffix_repr.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer that transforms `xyzzy` into repr(xyzzy)."""

# Local imports
from .. import fixer_base
from ..fixer_util import Call, Name, parenthesize


class FixRepr(fixer_base.BaseFix):

    BM_compatible = True
    PATTERN = """
              atom < '`' expr=any '`' >
              """

    def transform(self, node, results):
        expr = results["expr"].clone()

        if expr.type == self.syms.testlist1:
            expr = parenthesize(expr)
        return Call(Name(u"repr"), [expr], prefix=node.prefix)
PKK/�\�i(��fix_exec.pynu�[���# Copyright 2006 Google, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement.

"""Fixer for exec.

This converts usages of the exec statement into calls to a built-in
exec() function.

exec code in ns1, ns2 -> exec(code, ns1, ns2)
"""

# Local imports
from .. import pytree
from .. import fixer_base
from ..fixer_util import Comma, Name, Call


class FixExec(fixer_base.BaseFix):
    BM_compatible = True

    PATTERN = """
    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
    |
    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
    """

    def transform(self, node, results):
        assert results
        syms = self.syms
        a = results["a"]
        b = results.get("b")
        c = results.get("c")
        args = [a.clone()]
        args[0].prefix = ""
        if b is not None:
            args.extend([Comma(), b.clone()])
        if c is not None:
            args.extend([Comma(), c.clone()])

        return Call(Name(u"exec"), args, prefix=node.prefix)
PKK/�\��	��fix_unicode.pynu�[���r"""Fixer for unicode.

* Changes unicode to str and unichr to chr.

* If "...\u..." is not unicode literal change it into "...\\u...".

* Change u"..." into "...".

"""

from ..pgen2 import token
from .. import fixer_base

_mapping = {u"unichr" : u"chr", u"unicode" : u"str"}

class FixUnicode(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = "STRING | 'unicode' | 'unichr'"

    def start_tree(self, tree, filename):
        super(FixUnicode, self).start_tree(tree, filename)
        self.unicode_literals = 'unicode_literals' in tree.future_features

    def transform(self, node, results):
        if node.type == token.NAME:
            new = node.clone()
            new.value = _mapping[node.value]
            return new
        elif node.type == token.STRING:
            val = node.value
            if not self.unicode_literals and val[0] in u'\'"' and u'\\' in val:
                val = ur'\\'.join([
                    v.replace(u'\\u', ur'\\u').replace(u'\\U', ur'\\U')
                    for v in val.split(ur'\\')
                ])
            if val[0] in u'uU':
                val = val[1:]
            if val == node.value:
                return node
            new = node.clone()
            new.value = val
            return new
PKK/�\�P�r

fix_itertools.pycnu�[����
{fc@sCdZddlmZddlmZdejfd��YZdS(sT Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and
    itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363)

    imports from itertools are fixed in fix_itertools_import.py

    If itertools is imported as something else (ie: import itertools as it;
    it.izip(spam, eggs)) method calls will not get fixed.
    i(t
fixer_base(tNametFixItertoolscBs0eZeZdZde�ZdZd�ZRS(s7('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')s�
              power< it='itertools'
                  trailer<
                     dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > >
              |
              power< func=%(it_funcs)s trailer< '(' [any] ')' > >
              icCs�d}|dd}d|krt|jd	krt|d|d}}|j}|j�|j�|jj|�n|p�|j}|jt|jdd|��dS(
Ntfuncitituifilterfalseuizip_longesttdotitprefix(uifilterfalseuizip_longest(tNonetvalueRtremovetparenttreplaceR(tselftnodetresultsRRRR((s3/usr/lib64/python2.7/lib2to3/fixes/fix_itertools.pyt	transforms	

(	t__name__t
__module__tTruet
BM_compatibletit_funcstlocalstPATTERNt	run_orderR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_itertools.pyRs

N(t__doc__tRt
fixer_utilRtBaseFixR(((s3/usr/lib64/python2.7/lib2to3/fixes/fix_itertools.pyt<module>sPKK/�\{��	�	fix_exitfunc.pynu�[���"""
Convert use of sys.exitfunc to use the atexit module.
"""

# Author: Benjamin Peterson

from lib2to3 import pytree, fixer_base
from lib2to3.fixer_util import Name, Attr, Call, Comma, Newline, syms


class FixExitfunc(fixer_base.BaseFix):
    keep_line_order = True
    BM_compatible = True

    PATTERN = """
              (
                  sys_import=import_name<'import'
                      ('sys'
                      |
                      dotted_as_names< (any ',')* 'sys' (',' any)* >
                      )
                  >
              |
                  expr_stmt<
                      power< 'sys' trailer< '.' 'exitfunc' > >
                  '=' func=any >
              )
              """

    def __init__(self, *args):
        super(FixExitfunc, self).__init__(*args)

    def start_tree(self, tree, filename):
        super(FixExitfunc, self).start_tree(tree, filename)
        self.sys_import = None

    def transform(self, node, results):
        # First, find the sys import. We'll just hope it's global scope.
        if "sys_import" in results:
            if self.sys_import is None:
                self.sys_import = results["sys_import"]
            return

        func = results["func"].clone()
        func.prefix = u""
        register = pytree.Node(syms.power,
                               Attr(Name(u"atexit"), Name(u"register"))
                               )
        call = Call(register, [func], node.prefix)
        node.replace(call)

        if self.sys_import is None:
            # That's interesting.
            self.warning(node, "Can't find sys import; Please add an atexit "
                             "import at the top of your file.")
            return

        # Now add an atexit import after the sys import.
        names = self.sys_import.children[1]
        if names.type == syms.dotted_as_names:
            names.append_child(Comma())
            names.append_child(Name(u"atexit", u" "))
        else:
            containing_stmt = self.sys_import.parent
            position = containing_stmt.children.index(self.sys_import)
            stmt_container = containing_stmt.parent
            new_import = pytree.Node(syms.import_name,
                              [Name(u"import"), Name(u"atexit", u" ")]
                              )
            new = pytree.Node(syms.simple_stmt, [new_import])
            containing_stmt.insert_child(position + 1, Newline())
            containing_stmt.insert_child(position + 2, new)
PKK/�\�6����
fix_ne.pyonu�[����
{fc@sSdZddlmZddlmZddlmZdejfd��YZdS(sFixer that turns <> into !=.i(tpytree(ttoken(t
fixer_basetFixNecBs#eZejZd�Zd�ZRS(cCs
|jdkS(Nu<>(tvalue(tselftnode((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pytmatchscCs"tjtjdd|j�}|S(Nu!=tprefix(RtLeafRtNOTEQUALR(RRtresultstnew((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pyt	transforms(t__name__t
__module__RR
t_accept_typeRR
(((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pyRs		N(t__doc__tRtpgen2RRtBaseFixR(((s,/usr/lib64/python2.7/lib2to3/fixes/fix_ne.pyt<module>sPKK/�\k(P�zzfix_imports2.pyonu�[����
{fc@sGdZddlmZidd6dd6Zdejfd��YZdS(	sTFix incompatible imports and module references that must be fixed after
fix_imports.i(tfix_importstdbmtwhichdbtanydbmtFixImports2cBseZdZeZRS(i(t__name__t
__module__t	run_ordertMAPPINGtmapping(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_imports2.pyRsN(t__doc__tRRt
FixImportsR(((s2/usr/lib64/python2.7/lib2to3/fixes/fix_imports2.pyt<module>s

PKK/�\!x	�PPfix_zip.pyonu�[����
{fc@sOdZddlmZddlmZmZmZdejfd��YZdS(s7
Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...)
unless there exists a 'from future_builtins import zip' statement in the
top-level namespace.

We avoid the transformation if the zip() call is directly contained in
iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:.
i(t
fixer_base(tNametCalltin_special_contexttFixZipcBs#eZeZdZdZd�ZRS(s:
    power< 'zip' args=trailer< '(' [any] ')' >
    >
    sfuture_builtins.zipcCs`|j|�rdSt|�r#dS|j�}d|_ttd�|g�}|j|_|S(Nuulist(tshould_skipRtNonetclonetprefixRR(tselftnodetresultstnew((s-/usr/lib64/python2.7/lib2to3/fixes/fix_zip.pyt	transforms	(t__name__t
__module__tTruet
BM_compatibletPATTERNtskip_onR
(((s-/usr/lib64/python2.7/lib2to3/fixes/fix_zip.pyRsN(	t__doc__tRt
fixer_utilRRRtConditionalFixR(((s-/usr/lib64/python2.7/lib2to3/fixes/fix_zip.pyt<module>sPKJ/�\�R��fix_imports.pyonu�[���PKJ/�\�����Cfix_future.pycnu�[���PKJ/�\�6d��&fix_tuple_params.pynu�[���PKJ/�\�@Zw
2/fix_idioms.pynu�[���PKJ/�\�����
�Bfix_throw.pycnu�[���PKJ/�\���Jfix_operator.pyonu�[���PKJ/�\��-�$$
�^fix_apply.pycnu�[���PKJ/�\�����
^gfix_throw.pyonu�[���PKJ/�\�W���uofix_getcwdu.pynu�[���PKJ/�\��IIwqfix_isinstance.pynu�[���PKJ/�\�ĸ&��xfix_methodattrs.pycnu�[���PKJ/�\y�	�	�|fix_apply.pynu�[���PKJ/�\P�T����fix_set_literal.pynu�[���PKJ/�\��\���
f�fix_import.pynu�[���PKJ/�\�u��cc_�fix_standarderror.pyonu�[���PKJ/�\_;�>���fix_set_literal.pycnu�[���PKJ/�\�0�||
�fix_input.pyonu�[���PKJ/�\�1Wl��תfix_sys_exc.pycnu�[���PKJ/�\�R��ϱfix_imports.pycnu�[���PKJ/�\�&�1�fix_types.pynu�[���PKJ/�\��gpAA_�fix_basestring.pynu�[���PKJ/�\��J�����fix_exec.pycnu�[���PKJ/�\4	��
��fix_apply.pyonu�[���PKJ/�\v�����fix_map.pyonu�[���PKJ/�\8|�g�fix_execfile.pyonu�[���PKJ/�\k(P�zzy�fix_imports2.pycnu�[���PKJ/�\(%N


3�fix_except.pynu�[���PKJ/�\��s<<�fix_isinstance.pyonu�[���PKJ/�\c�����
fix_filter.pycnu�[���PKJ/�\}ׄLL"fix_nonzero.pyonu�[���PKJ/�\R�R����fix_numliterals.pycnu�[���PKJ/�\B�o����fix_dict.pynu�[���PKJ/�\�����,fix_except.pyonu�[���PKJ/�\		`pww8fix_exec.pyonu�[���PKJ/�\!x	�PP�=fix_zip.pycnu�[���PKJ/�\~&���ICfix_urllib.pyonu�[���PKJ/�\c�����_fix_filter.pyonu�[���PKJ/�\ܬ'!!�hfix_imports2.pynu�[���PKJ/�\n�����ifix_paren.pynu�[���PKJ/�\�E[//o__init__.pynu�[���PKJ/�\���WWmofix_long.pycnu�[���PKJ/�\�tڢ��sfix_buffer.pyonu�[���PKJ/�\p�V\�
�
wfix_operator.pynu�[���PKJ/�\ܾ���фfix_xreadlines.pyonu�[���PKJ/�\�xA�
�
��fix_next.pyonu�[���PKJ/�\R�R�����fix_numliterals.pyonu�[���PKJ/�\��\���Ӝfix_unicode.pycnu�[���PKJ/�\��J���
֣fix_types.pyonu�[���PKJ/�\�P�r

��fix_itertools.pyonu�[���PKJ/�\�tڢ���fix_buffer.pycnu�[���PKJ/�\�,�b�	�	
�fix_raise.pycnu�[���PKJ/�\}V�GG
�fix_reduce.pynu�[���PKJ/�\Tv˒RR��fix_tuple_params.pycnu�[���PKJ/�\sGћ��,�fix_getcwdu.pycnu�[���PKJ/�\Tv˒RR�fix_tuple_params.pyonu�[���PKJ/�\�V%e~~��fix_has_key.pycnu�[���PKJ/�\��\��jfix_standarderror.pynu�[���PKJ/�\�P��..pfix_itertools_imports.pynu�[���PKJ/�\� 
JJ
�fix_intern.pynu�[���PKJ/�\ܾ���mfix_xreadlines.pycnu�[���PKJ/�\��5��
�
=fix_exitfunc.pyonu�[���PKJ/�\�d�{��B#fix_raw_input.pyonu�[���PKJ/�\��cۛ�9'fix_metaclass.pyonu�[���PKJ/�\��Afix_operator.pycnu�[���PKJ/�\���WWsUfix_long.pyonu�[���PKJ/�\mU�
Yfix_paren.pycnu�[���PKJ/�\t�X_fix_asserts.pycnu�[���PKJ/�\G~�Z�efix_repr.pycnu�[���PKK/�\��]]�ifix_has_key.pyonu�[���PKK/�\mU�
�vfix_paren.pyonu�[���PKK/�\&�[��|fix_xrange.pyonu�[���PKK/�\_}�<<-�fix_dict.pyonu�[���PKK/�\��H|�
�

��fix_xrange.pynu�[���PKK/�\D�Y��
m�fix_map.pynu�[���PKK/�\l�SOO
��fix_buffer.pynu�[���PKK/�\���)�fix_itertools.pynu�[���PKK/�\�@`�;;
w�fix_filter.pynu�[���PKK/�\�6����
�fix_ne.pycnu�[���PKK/�\^ K�mm�fix_next.pynu�[���PKK/�\\g7�''��fix_basestring.pycnu�[���PKK/�\�:?PVV#�fix_nonzero.pynu�[���PKK/�\�ĸ&����fix_methodattrs.pyonu�[���PKK/�\6��zhhz�fix_funcattrs.pyonu�[���PKK/�\�0�||
#�fix_input.pycnu�[���PKK/�\��锪���fix_renames.pynu�[���PKK/�\�{�F��fix_numliterals.pynu�[���PKK/�\�xW�fix_intern.pyonu�[���PKK/�\6��zhhN�fix_funcattrs.pycnu�[���PKK/�\�4�'��fix_execfile.pynu�[���PKK/�\�Yω��>fix_has_key.pynu�[���PKK/�\�����fix_future.pyonu�[���PKK/�\m)ĥ���fix_reduce.pyonu�[���PKK/�\�?�յ�4fix_import.pyonu�[���PKK/�\��J���
'(fix_types.pycnu�[���PKK/�\�7h##
1fix_future.pynu�[���PKK/�\�����f3fix_except.pycnu�[���PKK/�\�:C
tte?fix_ws_comma.pycnu�[���PKK/�\�:C
ttEfix_ws_comma.pyonu�[���PKK/�\��B���Jfix_funcattrs.pynu�[���PKK/�\���� � 
�Mfix_urllib.pynu�[���PKK/�\o �^vv�nfix_raise.pynu�[���PKK/�\�1Wl��Bzfix_sys_exc.pyonu�[���PKK/�\ݔ�N��:�fix_long.pynu�[���PKK/�\�u��ccR�fix_standarderror.pycnu�[���PKK/�\e�˺����fix_dict.pycnu�[���PKK/�\,���V
V

�fix_print.pyonu�[���PKK/�\�ؒ����__init__.pyonu�[���PKK/�\8r�==	C�fix_ne.pynu�[���PKK/�\Hm����fix_itertools_imports.pycnu�[���PKK/�\+�E�22�fix_throw.pynu�[���PKK/�\I�4�  ^�fix_metaclass.pynu�[���PKK/�\�d�{����fix_raw_input.pycnu�[���PKK/�\~&�����fix_urllib.pycnu�[���PKK/�\sGћ����fix_getcwdu.pyonu�[���PKK/�\&�[��fix_xrange.pycnu�[���PKK/�\��s<<fix_isinstance.pycnu�[���PKK/�\��QQ�
fix_idioms.pyonu�[���PKK/�\�s����(fix_input.pynu�[���PKK/�\v���*fix_map.pycnu�[���PKK/�\CTw�	�	S+fix_renames.pycnu�[���PKK/�\m)ĥ��95fix_reduce.pycnu�[���PKK/�\���Z��s:fix_itertools_imports.pyonu�[���PKK/�\CTw�	�	}Bfix_renames.pyonu�[���PKK/�\Н
�==cLfix_imports.pynu�[���PKK/�\�c�^GG�bfix_ws_comma.pynu�[���PKK/�\}ׄLLdgfix_nonzero.pycnu�[���PKK/�\�Y�11�kfix_print.pynu�[���PKK/�\g�M��\wfix_xreadlines.pynu�[���PKK/�\�,�b�	�	
Ozfix_raise.pyonu�[���PKK/�\t�\�fix_asserts.pyonu�[���PKK/�\u���
�
��fix_next.pycnu�[���PKK/�\RJ,���Әfix_raw_input.pynu�[���PKK/�\\g7�''ښfix_basestring.pyonu�[���PKK/�\:^S�C�fix_sys_exc.pynu�[���PKK/�\i����fix_idioms.pycnu�[���PKK/�\��ˈ�
��fix_zip.pynu�[���PKK/�\�xWI�fix_intern.pycnu�[���PKK/�\�҇��
�

��fix_print.pycnu�[���PKK/�\�ؒ����__init__.pycnu�[���PKK/�\��5��
�
A�fix_exitfunc.pycnu�[���PKK/�\�]����F�fix_metaclass.pycnu�[���PKK/�\_;�>��T�fix_set_literal.pyonu�[���PKK/�\�?�յ�k�fix_import.pycnu�[���PKK/�\Ҋ��<<^fix_execfile.pycnu�[���PKK/�\��\����
fix_unicode.pyonu�[���PKK/�\ɣ�9gg�fix_methodattrs.pynu�[���PKK/�\G~�Z�fix_repr.pyonu�[���PKK/�\�=����fix_asserts.pynu�[���PKK/�\QA��ff�fix_repr.pynu�[���PKK/�\�i(��"fix_exec.pynu�[���PKK/�\��	���&fix_unicode.pynu�[���PKK/�\�P�r

�+fix_itertools.pycnu�[���PKK/�\{��	�	%3fix_exitfunc.pynu�[���PKK/�\�6����
+=fix_ne.pyonu�[���PKK/�\k(P�zzNAfix_imports2.pyonu�[���PKK/�\!x	�PPDfix_zip.pyonu�[���PK���/�I