Your IP : 18.116.27.225
�
�Q�f| � �Z � d Z ddlmZ ddlmZ ddlmZmZ G d� dej � Zy)a& 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.
� )�pytree)�
fixer_base)�Name�parenthesizec � � e Zd ZdZdZd� Zy)� FixHasKeyTa�
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
�h � |sJ �| j }|j j |j k( r&| j j |j � ry |j
d� }|d }|j }|d D �cg c] }|j � �� }}|d j � } |j
d� }
|
r|
D �cg c] }|j � �� }
}| j |j |j |j |j |j |j |j fv rt | � } t! |� dk( r|d }n t# j$ |j&