î
\á[\¡  ã               @   sO   d  Z  d d l m Z m Z d d l m Z m Z Gd d „  d e j ƒ Z d S)z:
Optional fixer to transform set() calls to set literals.
é    )Ú
fixer_baseÚpytree)ÚtokenÚsymsc               @   s.   e  Z d  Z d Z d Z d Z d d „  Z d S)ÚFixSetLiteralTaj  power< 'set' trailer< '('
                     (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) >
                                |
                                single=any) ']' >
                     |
                     atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' >
                     )
                     ')' > >
              c       	      C   s  | j  d ƒ } | rI t j t j | j ƒ  g ƒ } | j | ƒ | } n
 | d } t j t j	 d ƒ g } | j
 d d „  | j Dƒ ƒ | j t j t j d ƒ ƒ | j j | d
 _ t j t j | ƒ } | j | _ t | j ƒ d k r| j d	 } | j ƒ  | j | j d _ n  | S)NÚsingleÚitemsú{c             s   s   |  ] } | j  ƒ  Vq d  S)N)Úclone)Ú.0Ún© r   ú3/usr/lib/python3.4/lib2to3/fixes/fix_set_literal.pyú	<genexpr>'   s    z*FixSetLiteral.transform.<locals>.<genexpr>ú}é   é   é   éÿÿÿÿr   )Úgetr   ZNoder   Z	listmakerr
   ÚreplaceZLeafr   ÚLBRACEÚextendZchildrenÚappendÚRBRACEZnext_siblingÚprefixZdictsetmakerÚlenÚremove)	ÚselfZnodeZresultsr   Zfaker   ÚliteralZmakerr   r   r   r   Ú	transform   s"    	

zFixSetLiteral.transformN)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZexplicitZPATTERNr    r   r   r   r   r      s   
r   N)	Ú__doc__Zlib2to3r   r   Zlib2to3.fixer_utilr   r   ZBaseFixr   r   r   r   r   Ú<module>   s   