3 \[ @sVdZddlmZddlmZddlmZddlm Z m Z m Z m Z Gdddej ZdS) aFixer 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. ) fixer_base)Node)python_symbols)NameArgListListCompin_special_contextc@s eZdZdZdZdZddZdS) FixFilterTaV filter_lambda=power< 'filter' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'filter' trailer< '(' arglist< none='None' ',' seq=any > ')' > [extra_trailers=trailer*] > | power< 'filter' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.filtercCs2|j|rdSg}d|kr:x|dD]}|j|jq$Wd|krt|jdj|jdj|jdj|jdj}ttj|g|dd}nd|krttd td |d jtd }ttj|g|dd}nTt |rdS|d j}ttjtd |gdd}ttjtd t |gg|}d|_ |j |_ |S)NZextra_trailersZ filter_lambdafpitZxp)prefixZnoneZ_fseqargsfilterlist) Z should_skipappendZclonergetrsymsZpowerrrrr )selfZnoderesultsZtrailerstnewrr"/usr/lib64/python3.6/fix_filter.py transform:s4      zFixFilter.transformN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNZskip_onrrrrrr sr N)__doc__r rZpytreerZpygramrrZ fixer_utilrrrrZConditionalFixr rrrrs