Viewing File: /opt/alt/python38/lib64/python3.8/lib2to3/fixes/__pycache__/fix_except.cpython-38.opt-1.pyc

U

,a
@sfdZddlmZddlmZddlmZddlmZmZm	Z	m
Z
mZmZddZ
Gdd	d	ejZd
S)aFixer 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
)pytree)token)
fixer_base)AssignAttrNameis_tupleis_listsymsccsDt|D]6\}}|jtjkr|jdjdkr|||dfVqdS)Nexceptr)	enumeratetyper

except_clausechildrenvalue)Znodesinr=/opt/alt/python38/lib64/python3.8/lib2to3/fixes/fix_except.pyfind_exceptssrc@seZdZdZdZddZdS)	FixExceptTa1
    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)]) >
    cCsx|j}dd|dD}dd|dD}t|D]\}}t|jdkr2|jdd\}}	}
|	tdd	d
|
jtjkr8t|	d	d
}|

}d|_|
||
}|j}
t|
D]\}}t
|tjrqqt|
st|
rt|t|td}n
t||}t|
d|D]}|d
|q|||q2|
jdkr2d	|
_q2dd|jddD||}t|j|S)NcSsg|]}|qSrclone).0rrrr
<listcomp>2sz'FixExcept.transform.<locals>.<listcomp>tailcSsg|]}|qSrr)rZchrrrr4sZcleanupas )prefixargsrcSsg|]}|qSrr)rcrrrr\s)r
rlenrreplacerrrNAMEnew_namerr!r

isinstancerZNoderr	rrreversedZinsert_child)selfZnodeZresultsr
rZtry_cleanuprZe_suiteEZcommaNZnew_NtargetZsuite_stmtsrZstmtZassignZchildrrrr	transform/s6


 zFixExcept.transformN)__name__
__module____qualname__Z
BM_compatibleZPATTERNr0rrrrr$srN)__doc__r"rZpgen2rrZ
fixer_utilrrrrr	r
rZBaseFixrrrrr<module>s 
Back to Directory File Manager