o
    Š�bc¡  ã                   @   s:   d Z ddlmZmZ ddlmZmZ G d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Ê   |  d¡}|rt tj| ¡ g¡}| |¡ |}n|d }t tj	d¡g}| 
dd„ |jD ƒ¡ | t tjd¡¡ |jj|d _t tj|¡}|j|_t|jƒdkrc|jd	 }| ¡  |j|jd _|S )
NÚsingleÚitemsú{c                 s   s   � | ]}|  ¡ V  qd S )N)Úclone)Ú.0Ún© r   ú4/usr/lib/python3.10/lib2to3/fixes/fix_set_literal.pyÚ	<genexpr>'   s   € z*FixSetLiteral.transform.<locals>.<genexpr>ú}éÿÿÿÿé   é   )Úgetr   ÚNoder   Ú	listmakerr
   ÚreplaceÚLeafr   ÚLBRACEÚextendÚchildrenÚappendÚRBRACEÚnext_siblingÚprefixÚdictsetmakerÚlenÚremove)	ÚselfÚnodeÚresultsr   Úfaker   ÚliteralÚmakerr   r   r   r   Ú	transform   s"   


zFixSetLiteral.transformN)Ú__name__Ú
__module__Ú__qualname__ÚBM_compatibleÚexplicitÚPATTERNr)   r   r   r   r   r      s
    
r   N)	Ú__doc__Úlib2to3r   r   Úlib2to3.fixer_utilr   r   ÚBaseFixr   r   r   r   r   Ú<module>   s    