й¼]– ã@scddlmZddlmZddlmZddlmZmZGdd„dejƒZ dS)é)Úpytree)Útoken)Ú fixer_base)ÚNameÚ parenthesizec@s(eZdZdZdZdd„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|jkr7|jj|jƒr7dS|jdƒ}|d}|j}dd„|dDƒ}|djƒ}|jdƒ} | r¨dd„| Dƒ} |j|j |j|j |j |j |j |jfkrít|ƒ}t|ƒd kr |d }ntj|j|ƒ}d |_td d d ƒ} |rotdd d ƒ} tj|j| | fƒ} tj|j || |fƒ} | rÁt| ƒ} tj|j| ft| ƒƒ} |jj|j |j|j|j|j|j|j|j|jf krt| ƒ} || _| S)NÚnegationÚanchorcSsg|]}|jƒ‘qS©)Úclone)Ú.0Únr r ú0/opt/alt/python35/lib64/python3.5/fix_has_key.pyú Ss z'FixHasKey.transform..ÚbeforeÚargÚaftercSsg|]}|jƒ‘qSr )r )r r r r rrWs ééú Ú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Úresultsrrr rrrrZn_opZn_notÚnewr r rÚ transformHsD   !    "    zFixHasKey.transformN)Ú__name__Ú __module__Ú __qualname__Z BM_compatibleZPATTERNr&r r r rr's rN) ÚrZpgen2rrZ fixer_utilrrZBaseFixrr r r rÚ!s