
    XjN                       U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d d	l+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d d
l3m4Z4 d dl5m6Z6 	 d dl+m7Z7 dZ9de:d<   	 d dl;Z;d dl<m=Z> d dl<m?Z?  e@ eAeBe;j                  j                  d                  Z9d dlEmFZF erd dlmGZGmHZH d dlImJZJmKZKmLZLmMZM d dl+mNZN  ej                  d      ZP ed      ZQ G d d      ZR G d deS      ZTd*dZUd+dZVd,d ZWd-d!ZXd-d"ZYd-d#ZZd-d$Z[	 d.	 	 	 	 	 	 	 	 	 	 	 	 	 d/d%Z\d0d&Z] G d' d(e$      Z^d1d)Z_y# e8$ r e1Z7Y w xY w# e8$ r dZ>dZFY w xY w)2    )annotationsN)Decimal)	TYPE_CHECKINGAnyCallableListOptionalSetTupleUnioncast)ARG_OPT	ARG_STAR2GDEFMDEFArgumentAssignmentStmtBlockCallExprCastExprFuncDef	IndexExpr
MemberExprNameExprPassStmtSymbolTableNode	TupleExpr	TypeAliasVar)PluginSemanticAnalyzerPluginInterface)_get_argument
add_method)set_callable_name)AnyTypeCallableTypeInstanceNoneType	TypeOfAnyTypeVarType	UnionType)fill_typevars)get_unique_redefinition_name)
TypeVarDefzOptional[Tuple[int, ...]]PYDANTIC_VERSION)METADATA_KEY)PydanticModelField.)IS_PYDANTIC_V1 F)ClassDef
Expression)AnalyzeTypeContextCheckerPluginInterfaceClassDefContextDynamicClassDefContext)Typez*(^0|^(?:[1-9][0-9]*))\.(0|(?:[1-9][0-9]*))z0.800c                      e Zd ZU dZded<   y)MypyVersionz1Stores the mypy version to be used by the plugin.r   VERSIONN)__name__
__module____qualname____doc____annotations__     g/var/www/html/myl_app/scheduler-service/venv/lib/python3.12/site-packages/strawberry/ext/mypy_plugin.pyr=   r=   ^   s    ;rE   r=   c                  (     e Zd Zd fdZddZ xZS )InvalidNodeTypeExceptionc                6    d|| _         t        | 	          y )NzInvalid node type: )messagesuper__init__)selfnode	__class__s     rF   rL   z!InvalidNodeTypeException.__init__e   s    ,TH5rE   c                    | j                   S N)rJ   )rM   s    rF   __str__z InvalidNodeTypeException.__str__j   s    ||rE   )rN   r   returnNone)rS   str)r?   r@   rA   rL   rR   __classcell__)rO   s   @rF   rH   rH   d   s    
rE   rH   c                    t        | j                  j                        dk(  rt        t        j
                        S | j                  j                  d   }| j                  j                  |      }|S )Nr   )lentypeargsr%   r)   special_formapianalyze_type)ctx	type_nametype_s      rF   lazy_type_analyze_callbackra   n   sU    
388==Q y--..a IGG  +ELrE   c                N    d| v r|j                  |       S |j                  |       S )Nr2   )named_type_or_none
named_type)namer\   s     rF   _get_named_typerf   z   s)    
d{%%d++>>$rE   c                   t        | t              r|| j                  rL|j                  | j                        }|r/t        |j                  t
              rt        |j                        t        | j                  xs | j                  |      S t        | t              r4t        | j                  |      }t        | j                  |      f|_        |S t        | t              r-| j                  rt        | j                  |      S t        |       t        | t              r-| j                   rt        | j                   |      S t        |       t        | t"              r| j$                  S t'        dt%        |              )NzUnsupported expression )
isinstancer   fullnamelookup_fully_qualified_or_nonerN   r   rH   rf   re   r   _get_type_for_exprbaseindexrZ   r   r   analyzedr   rY   
ValueError)exprr\   symr`   s       rF   rk   rk      s   $! ==44T]]CCz#((C0.sxx88t}}9		3??$	""499c2(S9;
$
#=="4==#66*400$!==%dmmS99*400$!yy
.tDzl;
<<rE   c                R   t        t        t        j                        | j                  j                  | j                        | j                  j                  | j                  j                        }| j                  j                  | j                  t        t        |d             y )Nri   linecolumnTplugin_generated)r   r%   r)   
from_errorr\   qualified_namere   callrt   ru   add_symbol_table_noder   r   )r^   
type_aliass     rF   create_type_hookr}      st     	$$%''1XX]]xx	J GG!!j4@
 rE   c           	         	  j                   j                   j                   j                  j                  d         }t        |t              r	 t        t         fd|j                  D                    }t        | j                  j!                   j"                         j                   j$                   j                   j&                        } j                  j)                   j"                  t+        t,        |d             y y # t        $ r  j                   j                  d   }Y w xY w# t        $ r t        t        t        j                         j                  j!                   j"                         j                   j$                   j                   j&                        } j                  j)                   j"                  t+        t,        |d             Y y w xY w)Ntypes   c              3  J   K   | ]  }t        |j                          y wrQ   )rk   r\   ).0xr^   s     rF   	<genexpr>zunion_hook.<locals>.<genexpr>   s     J(CGG4Js    #rs   Frv   )rz   rZ   	arg_namesrm   ro   rh   r   r+   tupleitemsrH   r   r%   r)   rx   r\   ry   re   rt   ru   r{   r   r   )r^   r   r`   r|   s   `   rF   
union_hookr      se   !chh0066w?@
 %#	JekkJJE$ WW++CHH588??	

 	%%HHodJO	
7 $	  !a ! ( 	"	,,-//9XX]]xx	J GG))j5I
 	s$   <D	 'D1 	"D.-D.1B0G$#G$c                   | j                   j                  d   }t        |t              r|j                  s| j
                  j                          y t        |j                  t              r|j                  j                  xs t        t        j                        }t        || j
                  j                  | j                        | j                   j                  | j                   j                         }| j
                  j#                  | j                  t%        t&        |d             y 	 t)        || j
                        }|st        t        j,                        }t        || j
                  j                  | j                        | j                   j                  | j                   j                         }| j
                  j#                  | j                  t%        t&        |d             y # t*        $ r d }Y w xY wNr   rs   Frv   rz   rZ   rh   r   rN   r\   deferr   rY   r%   r)   implementation_artifactr   ry   re   rt   ru   r{   r   r   rk   rH   rx   )r^   first_argumentvar_typer|   	enum_types        rF   	enum_hookr      sr   XX]]1%N.(+""GGMMOn))3/%**// 7114H #//9XX]]xx	J GG))/$
US &~sww?	 I001	''1XX]]xx	J GG!!/$
UK $ 	   /G1 1G?>G?c                   | j                   j                  d   }t        |t              r|j                  s| j
                  j                          y t        |j                  t              r|j                  j                  xs t        t        j                        }t        || j
                  j                  | j                        | j                   j                  | j                   j                         }| j
                  j#                  | j                  t%        t&        |d             y 	 t)        || j
                        }|st        t        j,                        }t        || j
                  j                  | j                        | j                   j                  | j                   j                         }| j
                  j#                  | j                  t%        t&        |d             y # t*        $ r d }Y w xY wr   r   )r^   r   r   r|   scalar_types        rF   scalar_hookr     sr   XX]]1%N.(+""GGMMOn))3/%**// 7114H #//9XX]]xx	J GG))/$
US (A i223''1XX]]xx	J GG!!/$
UK $ r   c                   |j                   }||j                  v rd|j                  |   }|j                  rIt        |j                  t
              r/|j                  j                  j                  |j                         t        j                  t        d      k  r| j                  d      }n4t        | t              r| j                  d      }n| j                  dg       }g g g }}
}	|D ]p  }|j                  sJ d       |	j!                  |j                         |
j!                  |j"                  j$                         |j!                  |j&                         r t)        |	||
||      }|r|g|_        t        ||t-        t/               g            }d|_        ||_         t3        ||      |_        |j6                   d| |_        |j:                  |_        ||j                  v r2t=        ||j                        }|j                  |   |j                  |<   t?        t@        |d      |j                  |<   |jB                  j                  j                  j!                  |       y)	zAdds a static method.

    Edited `add_method_to_class` to incorporate static method logic

    https://github.com/python/mypy/blob/9c05d3d19/mypy/plugins/common.py.
    z0.93z__builtins__.functionzbuiltins.functionz"All arguments must be fully typed.Tr2   rv   N)"infonamesrw   rh   rN   r   defsbodyremover=   r>   r   rd   r!   named_generic_typetype_annotationappendvariablere   kindr&   	variablesr   r   	is_staticr$   rY   ri   	_fullnamert   r-   r   r   defn)r\   clsre   rZ   return_typetvar_defr   rq   function_type	arg_typesr   	arg_kindsarg	signaturefuncr_names                   rF   add_static_method_to_classr   E  s    88D tzzjjJsxx$AHHMM  * WV_,'>?c:;NN+>?M223FKM&("b)yI #""H$HH",,-**+"	# 9imI 'j	4uhj\23DDNDI!)T2DIav.DN		DI tzz-dDJJ?!ZZ-

6&tTDIDJJtIINNt$rE   c                ^   t        | j                  d      }|'| j                  j                  d| j                         y t	        t        d      t        t        j                        d t              g}t        | d|t                      t        t        t        || j                              }t               }| j                   j"                  j$                  D ]K  }t'        |t(              st        t*        |j,                  d         }|j/                  |j0                         M t               }	 |j2                  j4                  t6           d   }|j9                         D ]  }	t:        r.t=        j>                  | j                   j@                  |	d         }
n9t=        j>                  | j                   j@                  |	d   | j                  	      }
|j/                  |
        	 |D ch c]  }|j0                  |vs| }}	 tE        |      tE        |      k(  }|s|n	t               }d| j                   j@                  jF                  vrt:        r;t        | d|D cg c]!  }|jI                  |j2                  ddd      # c}|       nji }tJ        r&tJ        dk\  r| j                  |d<   tJ        dk\  rd|d<   t        | d|D cg c]#  } |jH                  d|j2                  dddd|% c}|       t	        t        d|      |d tL              }| j                  jO                  d| j                  jO                  d      t        t        j                        g      }t	        t        dtQ        t               |g            tQ        t               |g      d tL              }tS        | j                  | j                   d||gtU        | j                   j@                               y # tB        $ r* | j                  j                  d
| j                         Y 7w xY wc c}w c c}w c c}w )Nmodel)rz   re   z/model argument in decorator failed to be parsedkwargsrL   r   fieldsr   )r   datar\   zMPydantic plugin not installed, please add pydantic.mypy your mypy.ini pluginsto_pydanticTF)r   typedforce_optional	use_alias)rZ   r   )      r   r\   )r      r   force_typevars_invariant)current_infor   r   r   instance)re   rY   )r   r   initializerr   zbuiltins.dictzbuiltins.strextrafrom_pydantic)re   rZ   r   rD   )+r"   reasonr\   failr   r   r%   r)   explicitr   r#   r(   r   r'   rk   setr   r   r   rh   r   r   lvaluesaddre   rY   metadataPYDANTIC_METADATA_KEYr   r3   r1   deserializer   KeyErrorrX   r   to_argumentr/   r   rd   r+   r   r,   )r^   model_expression	init_args
model_typenew_strawberry_fieldsstmtlhspydantic_fieldsr   r   fieldfpotentially_missing_fieldsis_all_fieldsmissing_pydantic_fieldsr   model_argument
extra_typeextra_arguments                      rF   "strawberry_pydantic_class_callbackr     s    %#**7CF

S
 S]GI,>,>$?yQ
	 	3
Ixz:($67G$QR
 +.% GGLL%% 	4D$/8T\\!_5%))#((3	4
 475	__--.CDXNF +!.::377<<aQE.:: WW\\QSWWE  ##E*+$ '?
!&&8M*MA?
" ?
	 ""<=_AUU.;& 	 
  2 22! "9	  !+"&+0&* & 	 !+  #'94'*wwe'94 =B89! "9
  & )3"&+0&* $
 !+$ "jz:&	
 WW''WW/9K9K1LM


 "gIxz:6N,OP%xz:&>?	
 	#GGGG  .1%cggll3	
s  	 GGLLB

	?
*	4
s+   1B3O* )P =P &P%(P**/PPc                  d    e Zd Z	 	 	 	 ddZddZ	 	 	 	 ddZddZddZddZddZ	ddZ
dd	Zy
)StrawberryPluginc                    | j                  |      rt        S | j                  |      rt        S | j	                  |      rt
        S | j                  |      rt        S y rQ   )_is_strawberry_unionr   _is_strawberry_enumr   _is_strawberry_scalarr   _is_strawberry_create_typer}   rM   ri   s     rF   get_dynamic_class_hookz'StrawberryPlugin.get_dynamic_class_hook  sW    
 $$X.##H-%%h/**84##rE   c                2    | j                  |      rt        S y rQ   )_is_strawberry_lazy_typera   r   s     rF   get_type_analyze_hookz&StrawberryPlugin.get_type_analyze_hook&  s    ((2--rE   c                2    | j                  |      rt        S y rQ   )!_is_strawberry_pydantic_decoratorr   r   s     rF   get_class_decorator_hookz)StrawberryPlugin.get_class_decorator_hook,  s     11(;55rE   c                2    |dk(  xs |j                  d      S )Nzstrawberry.types.union.unionzstrawberry.unionendswithr   s     rF   r   z%StrawberryPlugin._is_strawberry_union4  s%    99 
X=N=N>
 	
rE   c                2    |dk(  xs |j                  d      S )Nzstrawberry.types.enum.enumzstrawberry.enumr   r   s     rF   r   z$StrawberryPlugin._is_strawberry_enum9  s%    77 
8;L;L<
 	
rE   c                2    |dk(  xs |j                  d      S )Nzstrawberry.types.scalar.scalarzstrawberry.scalarr   r   s     rF   r   z&StrawberryPlugin._is_strawberry_scalar>  s&    ;; 
x?P?P@
 	
rE   c                    |dk(  S )Nz#strawberry.types.lazy_type.LazyTyperD   r   s     rF   r   z)StrawberryPlugin._is_strawberry_lazy_typeC  s    @@@rE   c                2    |dk(  xs |j                  d      S )Nz(strawberry.tools.create_type.create_typez.create_typer   r   s     rF   r   z+StrawberryPlugin._is_strawberry_create_typeF  s%     BB 1  0	
rE   c                V    t        fddD              ryt        fddD              S )Nc              3  &   K   | ]  }|v  
 y wrQ   rD   )r   strawberry_decoratorri   s     rF   r   zEStrawberryPlugin._is_strawberry_pydantic_decorator.<locals>.<genexpr>R  s      
$ !H,
s   )z1strawberry.experimental.pydantic.object_type.typez2strawberry.experimental.pydantic.object_type.inputz6strawberry.experimental.pydantic.object_type.interface+strawberry.experimental.pydantic.error_typeTc              3  @   K   | ]  }j                  |        y wrQ   r   )r   	decoratorri   s     rF   r   zEStrawberryPlugin._is_strawberry_pydantic_decorator.<locals>.<genexpr>a  s$      
 i(
s   )z%strawberry.experimental.pydantic.typez&strawberry.experimental.pydantic.inputr   )anyr   s    `rF   r   z2StrawberryPlugin._is_strawberry_pydantic_decoratorQ  s=     
)
 
   

 
 	
rE   N)ri   rU   rS   z2Optional[Callable[[DynamicClassDefContext], None]])ri   rU   rS   z Union[Callable[..., Type], None])ri   rU   rS   z+Optional[Callable[[ClassDefContext], None]])ri   rU   rS   bool)r?   r@   rA   r   r   r   r   r   r   r   r   r   rD   rE   rF   r   r     sP    	;&	4





A	

rE   r   c                    t         j                  |       }|r7t        dj                  |j	                                     t
        _        t        S t        t
        _        t        j                  d|  dd       t        S )Nr2   zMypy version z) could not be parsed. Reverting to v0.800r   )
stacklevel)
VERSION_REmatchr   joingroupsr=   r>   FALLBACK_VERSIONwarningswarnr   )versionr   s     rF   pluginr  k  sg    W%E%chhu||~&>?  /G9$MN	

 rE   )r^   r7   rS   r;   )re   rU   r\   r!   rS   r   )rp   r6   r\   r!   rS   r;   )r^   r:   rS   rT   rQ   )r\   z>Union[SemanticAnalyzerPluginInterface, CheckerPluginInterface]r   r5   re   rU   rZ   zList[Argument]r   r;   r   zOptional[TypeVarType]rS   rT   )r^   r9   rS   rT   )r  rU   rS   ztyping.Type[StrawberryPlugin])`
__future__r   retypingr  decimalr   r   r   r   r   r	   r
   r   r   r   
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   mypy.pluginr    r!   mypy.plugins.commonr"   r#   mypy.semanal_sharedr$   
mypy.typesr%   r&   r'   r(   r)   r*   r+   mypy.typevarsr,   	mypy.utilr-   r.   ImportErrorr/   rC   pydanticpydantic.mypyr0   r   r1   r   mapint__version__split(strawberry.experimental.pydantic._compatr3   r5   r6   mypy.pluginsr7   r8   r9   r:   r;   compiler   r  r=   	ExceptionrH   ra   rf   rk   r}   r   r   r   r   r   r   r  rD   rE   rF   <module>r     s   " 	   
 
 
    ( : 1   ( 2% /3 + 2
C0Sh&:&:&@&@&EFGG /    RZZEF
7#  y 	 $=N&%
P-`/p '+=%	G=%	=% =% 	=%
 =% $=% 
=%@J
ZV
v V
r_  J  Ns$   E' >E4 'E10E14	F ?F 