
    Xj                        d dl mZ d dlmZmZ d dlZd dlmZ	 d dl
mZmZ d dlmZmZ d dlmZmZ ddZ	 	 	 	 	 	 ddZ G d	 d
e      Zy)    )annotations)OptionalSequenceN)BaseExpressionCall)CodemodContextVisitorBasedCodemodCommand)AddImportsVisitorRemoveImportsVisitorc                .    t        fd| D        d       S )Nc              3  p   K   | ]-  }|j                   s|j                   j                  k(  s*| / y wN)keywordvalue).0argnames     q/var/www/html/myl_app/scheduler-service/venv/lib/python3.12/site-packages/strawberry/codemods/annotated_unions.py	<genexpr>z'_find_named_argument.<locals>.<genexpr>   s(     J0A0AT0IJs   666)next)argsr   s    `r   _find_named_argumentr      s    JJ     c                d    t        |       D ]"  \  }}||kD  r y ||k(  s|j                   |c S  y r   )	enumerater   )r   search_indexindexr   s       r   _find_positional_argumentr      sA      o 
s<L S[[%8J r   c                  J    e Zd ZU dZded<   	 	 d	 	 	 	 	 	 	 d fdZd fdZ ej                   ej                   ej                  d       ej                          ej                   ej                  d             ej                         g            dd       Z ej                   ej                   ej                    ej                  d       ej                  d      	       ej                  d      z  
            	 	 	 	 	 	 dd       Ze	 	 	 	 dd       Z xZS )ConvertUnionToAnnotatedUnionz[Converts strawberry.union(..., types=(...)) to Annotated[Union[...], strawberry.union(...)]strDESCRIPTIONc                N    d| _         || _        || _        t        |   |       y NF)_is_using_named_importuse_pipe_syntaxuse_typing_extensionssuper__init__)selfcontextr&   r'   	__class__s       r   r)   z%ConvertUnionToAnnotatedUnion.__init__&   s*     ',#.%:"!r   c                0    d| _         t        | 	  |      S r$   )r%   r(   visit_Module)r*   noder,   s     r   r.   z)ConvertUnionToAnnotatedUnion.visit_Module2   s    &+#w#D))r   
strawberryunionc                    d| _         y )NT)r%   )r*   original_nodes     r   visit_import_fromz.ConvertUnionToAnnotatedUnion.visit_import_from7   s     '+#r   r   attr)funcc                   | j                   s&t        |j                  t        j                        r|S t        |j                  d      }t        |j                  d      }|t        |j                  d      }||S t        j                  | j                  | j                  rdndd       t        j                  | j                  dd       |t        |j                  d	      }|sJ t        |j                  t        j                  t        j                   f      sJ |j                  j"                  }|j                  }t        |j                  d
      }t        |j                  d      }| j$                  r| j'                  |      }nt        j                  | j                  dd       t        j(                  t        j                  d      |D cg c]6  }t        j*                  t        j,                  |j                              8 c}      }t        j.                  |t        j                  d      t        j0                  t        j2                  d      t        j2                  d                  g}	||d}
|	j5                  d |
j7                         D               t        j8                  t        j:                  t        j                  d      t        j                  d            |	      }t        j(                  t        j                  d      t        j*                  t        j,                  |            t        j*                  t        j,                  |            g      S c c}w )Ntypesr      typing_extensionstyping	Annotatedr0   r1   r   description
directivesUnionr   )slice)r   rB    whitespace_beforewhitespace_afterr   r   equal)r>   r?   c              3    K   | ]y  \  }}|rt        j                  |j                  t        j                  |      t        j                  t        j
                  d      t        j
                  d                   { y w)NrC   rD   rG   )cstArgr   NameAssignEqualSimpleWhitespace)r   r   r   s      r   r   z@ConvertUnionToAnnotatedUnion.leave_union_call.<locals>.<genexpr>   sk      
 c GGiioo&)&:&:2&>%(%9%9"%= 
s   A?Br5   )r7   r   )r%   
isinstancer7   rJ   rL   r   r   r   r
   add_needed_importr+   r'   r   remove_unused_importr   TupleListelementsr&   #_create_union_node_with_pipe_syntax	SubscriptSubscriptElementIndexrK   rM   rN   extenditemsr   	Attribute)r*   r3   updated_noder9   
union_namer>   r?   
union_nodetunion_call_argsadditional_argsunion_call_nodes               r   leave_union_callz-ConvertUnionToAnnotatedUnion.leave_union_callD   s    **z-:L:Lchh/W  $]%7%7A)-*<*<fE
=-m.@.@!DE
 =  ++LL#'#=#=8	
 	11$,,gV2=3E3EqIJz%++		388'<===$$%%
*=+=+=}M)-*<*<lK
AA%HJ//hPhhW- # ((syyqww/GHJ GG v.oo&)&:&:2&>%(%9%9"%=	
 +6ZP 
 -224
 	
 ((hh\2XXG, !
 }}((-$$))(
 $$))-
 	
Qs   ;M9
c                    |D cg c]  }|j                    }}t        d |D              st        d      dj                  d |D              }t	        j
                  |      S c c}w )Nc              3  P   K   | ]  }t        |t        j                           y wr   )rO   rJ   rL   )r   r_   s     r   r   zSConvertUnionToAnnotatedUnion._create_union_node_with_pipe_syntax.<locals>.<genexpr>   s     ?q:a*?s   $&z Only names are supported for nowz | c              3  4   K   | ]  }|j                     y wr   rA   )r   r   s     r   r   zSConvertUnionToAnnotatedUnion._create_union_node_with_pipe_syntax.<locals>.<genexpr>   s     Bt

Bs   )r   all
ValueErrorjoinrJ   parse_expression)clsr9   r_   
type_names
expressions        r   rU   z@ConvertUnionToAnnotatedUnion._create_union_node_with_pipe_syntax   s_     (--!agg-
-?J???@@ZZBzBB
##J// .s   A$)TF)r+   r   r&   boolr'   rn   returnNone)r/   z
cst.Modulero   zOptional[bool])r3   zcst.ImportFromro   rp   )r3   r   r\   r   ro   r   )r9   zSequence[cst.BaseElement]ro   zcst.BaseExpression)__name__
__module____qualname__r"   __annotations__r)   r.   mvisit
ImportFromrL   
ZeroOrMoreImportAliasr4   leaver   r[   rc   classmethodrU   __classcell__)r,   s   @r   r    r        s`   	7   !%&+	
"
" 
"  $	
"
 

"*
 QWWAFF< faffWo.	
	+	+ QWW6166,#7faffWoNaffWo	
c
!c
15c
	c
c
J 
0-
0	
0 
0r   r    )r   Sequence[cst.Arg]r   r!   ro   cst.Arg | None)r   r}   r   intro   r~   )
__future__r   r<   r   r   libcstrJ   libcst.matchersmatchersru   libcst._nodes.expressionr   r   libcst.codemodr   r	   libcst.codemod.visitorsr
   r   r   r   r     r   r   <module>r      sK    " %   9 E K


+.

Z0#= Z0r   