B YI~d| �@s>ddlmZddlmZddlmZmZGdd�dej�ZdS)�)�pytree)� fixer_base)�Name� parenthesizec@seZdZdZdZdd�ZdS)� FixHasKeyTa� anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > after=any* > | negation=not_test< 'not' anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > > > c Cs||j}|jj|jkr&|j�|j�r&dS|�d�}|d}|j}dd�|dD�}|d��}|�d�} | rxdd�| D�} |j|j |j|j |j |j |j |jfkr�t|�}t|�d kr�|d }nt�|j|�}d |_td d d �} |r�tdd d �} t�|j| | f�} t�|j || |f�} | �r8t| �} t�|j| ft| ��} |jj|j |j|j|j|j|j|j|j|jf k�rrt| �} || _| S)N�negation�anchorcSsg|] }|���qS�)�clone)�.0�nr r �>/opt/alt/python37/lib64/python3.7/lib2to3/fixes/fix_has_key.py� Rsz'FixHasKey.transform..�before�arg�aftercSsg|] }|���qSr )r )r r r r r rVs��� �in)�prefix�not)�syms�parent�typeZnot_test�pattern�match�getrr Z comparisonZand_testZor_testZtestZlambdef�argumentr�lenrZNodeZpowerrZcomp_op�tuple�exprZxor_exprZand_exprZ shift_exprZ arith_exprZtermZfactor) �selfZnode�resultsrrrrrrrZn_opZn_not�newr r r � transformGsD       zFixHasKey.transformN)�__name__� __module__� __qualname__Z BM_compatibleZPATTERNr%r r r r r&srN)�rrZ fixer_utilrrZBaseFixrr r r r �!s