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    