
    ,h&              	      T   S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S S	KJ
r
  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SK#J$r$  S SK%J&r&  S SK%J'r'  S S K%J(r(  S S!K)J*r*  S S"K+J,r,  S S#K-J.r.  S S$K-J/r/  S S%K-J0r0  S S&K-J1r1  S S
K-Jr  S S'K-J2r2  S S(K-J3r3  S S)K-J4r4  \5" \Rl                  Ro                  S*5       V s/ s H$  n \Rq                  S+U 5      (       d  M  \9" U 5      PM&     sn 5      r:\:S,:  r;\" S-\\\4   S.9r< " S/ S05      r=SJS1 jr>SKS2 jr?SLS3 jr@SLS4 jrASMS5 jrBSMS6 jrCSNS7 jrDSNS8 jrESMS9 jrFSNS: jrG      SOS; jrHSPS< jr      SQS= jrISRS> jrJ          SSS? jrK\	S@SA.       STSB jj5       rL\	        SUSC j5       rLSSA.       SVSD jjrLSWSE jrMSXSF jrN      SYSG jrO      SZSH jrPS[SI jrQgs  sn f )\    )annotationsN)Any)Iterable)Iterator)List)Optional)overload)Tuple)Type)TypeVar)Union)version)format_type)CallExpr)ClassDef)CLASSDEF_NO_INFO)Context)
Expression)FuncDef)IfStmt)JsonDict)
MemberExpr)NameExpr)	Statement)SymbolTableNode)	TypeAlias)TypeInfo)Options)ClassDefContext)DynamicClassDefContext)SemanticAnalyzerPluginInterface)deserialize_and_fixup_type)map_type_from_supertype)CallableType)get_proper_type)Instance)NoneType)TypeVarType)UnboundType)	UnionType.z^\d+$)      	_TArgType)boundc                  n    \ rS rSr            SS jrS	S jrS
S jr\        SS j5       rSr	g)SQLAlchemyAttribute>   c                @    Xl         X l        X0l        X@l        XPl        g N)namelinecolumntypeinfo)selfr5   r6   r7   typr9   s         P/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/ext/mypy/util.py__init__SQLAlchemyAttribute.__init__?   s     				    c                    U R                   (       d   eU R                  U R                  U R                  [	        U R                   5      S.$ )N)r5   r6   r7   r8   )r8   r5   r6   r7   serialize_type)r:   s    r<   	serializeSQLAlchemyAttribute.serializeM   s9    yyyIIIIkk"499-	
 	
r?   c                    [        U R                  [        5      (       d  g[        U R                  XR                  5      U l        g)zhExpands type vars in the context of a subtype when an attribute is
inherited from a generic super type.
N)
isinstancer8   r(   r#   r9   )r:   sub_types     r<   expand_typevar_from_subtype/SQLAlchemyAttribute.expand_typevar_from_subtypeV   s.     $))[11+DIIxK	r?   c                l    UR                  5       n[        UR                  S5      U5      nU " SXAS.UD6$ )Nr8   )r;   r9    )copyr"   pop)clsr9   dataapir;   s        r<   deserializeSQLAlchemyAttribute.deserialize_   s7     yy{(&)93?.s...r?   )r7   r9   r6   r5   r8   N)r5   strr6   intr7   rS   r;   zOptional[Type]r9   r   returnNone)rT   r   )rF   r   rT   rU   )r9   r   rN   r   rO   r!   rT   r1   )
__name__
__module____qualname____firstlineno__r=   rB   rG   classmethodrP   __static_attributes__rJ   r?   r<   r1   r1   >   s      	
   

L // / -	/
 
/ /r?   r1   c                B    [        [        R                  " SU 5      5      $ )Nz	^__.+?__$)boolrematch)r5   s    r<   name_is_dunderr`   k   s    t,--r?   c                @    X R                   R                  S0 5      U'   g N
sqlalchemymetadata
setdefault)r9   keyrN   s      r<   _set_info_metadatarh   o   s    6:MM\2.s3r?   c                Z    U R                   R                  S0 5      R                  US 5      $ rb   )re   get)r9   rg   s     r<   _get_info_metadatark   s   s&    ==\2.223==r?   c                p    U R                   (       a%  U R                    H  n[        X!5      nUc  M  Us  $    g r4   )mrork   )r9   rg   basere   s       r<   _get_info_mro_metadataro   w   s1    xxHHD)$4H#  r?   c                <    U R                   R                  S0 5        g rb   rd   r9   s    r<   establish_as_sqlalchemyrr      s    MM\2.r?   c                    [        U SS5        g Nis_baseTrh   rq   s    r<   set_is_baserw      s    tY-r?   c                "    [        U S5      nUSL $ rt   rk   r9   ru   s     r<   get_is_baser{      s     y1Gd?r?   c                "    [        U S5      nUSL $ rt   )ro   rz   s     r<   has_declarative_baser}      s    $T95Gd?r?   c                    [        U SS5        g N	has_tableTrv   rq   s    r<   set_has_tabler      s    t[$/r?   c                "    [        U S5      nUSL $ r   ry   rz   s     r<   get_has_tabler      s     {3Gd?r?   c                    [        U S5      nUc  g / nU H;  n[        R                  XU5      nUR                  U 5        UR	                  U5        M=     U$ Nmapped_attributes)rk   r1   rP   rG   append)r9   rO   r   
attributesrN   attrs         r<   get_mapped_attributesr      sf     3E!3  ,.J!"..t3?((.$ "
 r?   c                D    [         (       a  [        X5      $ [        U 5      $ r4   )mypy_14_mypy_format_type)typ_optionss     r<   r   r      s    w // &&r?   c           	     d    [        U SU Vs/ s H  o"R                  5       PM     sn5        g s  snf r   )rh   rB   )r9   r   	attributes      r<   set_mapped_attributesr      s0     0:;
9			
; 	<s   -c                .    SU-  nU R                  X5      $ )Nz[SQLAlchemy Mypy plugin] %s)fail)rO   msgctxs      r<   r   r      s    
'#
-C88Cr?   c                    U R                   R                  U R                   R                     R                  nX4;  a+  U R                   R                  U   R                  U   nXTU'   g g r4   )rO   modules
cur_mod_idnames)r   modulesymbol_nameasnamemodule_globals
lookup_syms         r<   
add_globalr      s[     WW__SWW%7%78>>N#&)ggoof&=&C&C'

 ",v $r?   .)
expr_typesc                   g r4   rJ   callexprr5   r   s      r<   get_callexpr_kwargr      s     +.r?   c                   g r4   rJ   r   s      r<   r   r      s     r?   c                    U R                   R                  U5      nU R                  U   n[	        XBb  UO[
        [        45      (       a  U$ g ! [         a     g f = fr4   )	arg_namesindex
ValueErrorargsrE   r   r   )r   r5   r   arg_idxkwargs        r<   r   r      sg    $$**40 MM'"E3z(H9M    s   A 
AAc              #    #    U  H~  n[        U[        5      (       ab  [        UR                  S   [        5      (       a@  UR                  S   R                  S:X  a#  UR
                  S   R
                   S h  vN   Mz  Uv   M     g  N7f)Nr   ztyping.TYPE_CHECKING)rE   r   exprr   fullnamebody)stmtsstmts     r<   flatten_typecheckingr      si     tV$$499Q<22		!%%)??yy|((((J  )s   A6B
8B9B
c                   [        U [        [        45      (       Ga&  [        U R                  [        5      (       a  U R                  R
                  (       ai  [        U R                  R
                  [        5      (       a@  [        U R                  R
                  R                  5      n[        U[        5      (       a  U$ g [        U R                  [        5      (       a8  [        U R                  R                  5      n[        U[        5      (       a  U$  g [        U R                  [        5      (       a  U R                  $ g r4   )rE   r   r   noder   r8   r$   r%   ret_typer&   r   targetr   )calleer   target_types      r<   type_for_calleer     s    &:x011fkk7++{{Jv{{/?/?$N$N*6;;+;+;+D+DEh11#OY//)&++*<*<=K+x00"" 1  X..;;r?   c                >   [        U[        5      (       d  U$ UR                  S:X  aE  [        U [	        UR
                   Vs/ s H  n[        X5      PM     sn[        5       /-   5      5      $ U R                  UR                  U5      nUb  [        U[        5      (       ar  [        UR                  [        5      (       aS  UR                  n[        UUR
                   Vs/ s H%  n[        U[        5      (       a  [        X5      OUPM'     sn5      $ U$ s  snf s  snf )zTake the UnboundType that we seem to get as the ret_type from a FuncDef
and convert it into an Instance/TypeInfo kind of structure that seems
to work as the left-hand type of an AssignmentStatement.

r   )rE   r)   r5   unbound_to_instancer*   r   r'   lookup_qualifiedr   r   r   r&   )rO   r;   typ_argr   
bound_typeargs         r<   r   r     s    c;''

 xx: #BE((K(w$S2(K:,
 	
 #.D 	t_--tyy(++YY
 88 $C "#{33 (1 $

 
	
 
5 L s   D ,D
c                    U R                   [        L aT  UR                  U R                  U 5      nUc  g U(       a  [	        UR
                  [        5      (       d   eUR
                  $ U R                   $ r4   )r9   r   r   r5   rE   r   r   )rM   rO   syms      r<   info_for_clsr   H  sZ     xx##""388S1;z#((H5555xx88Or?   c                *    U R                  5       $ ! [         a     Of = f[        U S5      (       a1  [        S U R                   5       5      U l        U R                  5       $ [        U S5      (       a  U R                  5       n U R                  5       $ )Nr   c              3  h   #    U  H(  n[        US 5      (       a  UR                  5       OUv   M*     g7f)resolve_string_annotationN)hasattrr   ).0as     r<   	<genexpr>!serialize_type.<locals>.<genexpr>[  s<      
  19:: ++- s   02r   )rB   	Exceptionr   tupler   r   )r;   s    r<   rA   rA   U  s    }} sF 
 XX
 
 ==? 
1	2	2++-==?s    
)r5   rR   rT   r]   )r9   r   rg   rR   rN   r   rT   rU   )r9   r   rg   rR   rT   Optional[Any])r9   r   rT   rU   )r9   r   rT   r]   )r9   r   rO   r!   rT   z#Optional[List[SQLAlchemyAttribute]])r   r   r   r   rT   rR   )r9   r   r   zList[SQLAlchemyAttribute]rT   rU   )rO   r!   r   rR   r   r   rT   rU   )
r   z.Union[ClassDefContext, DynamicClassDefContext]r   rR   r   rR   r   rR   rT   rU   )r   r   r5   rR   r   rU   rT   z#Optional[Union[CallExpr, NameExpr]])r   r   r5   rR   r   z!Tuple[TypingType[_TArgType], ...]rT   zOptional[_TArgType])r   r   r5   rR   r   z%Optional[Tuple[TypingType[Any], ...]]rT   r   )r   zIterable[Statement]rT   zIterator[Statement])r   r   rT   z#Optional[Union[Instance, TypeInfo]])rO   r!   r;   r   rT   r   )rM   r   rO   r!   rT   zOptional[TypeInfo])r;   r   rT   zUnion[str, JsonDict])R
__future__r   r^   typingr   r   r   r   r   r	   r
   r   
TypingTyper   r   mypyr   mypy.messagesr   r   
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   mypy.optionsr   mypy.pluginr   r    r!   mypy.plugins.commonr"   mypy.typeopsr#   
mypy.typesr$   r%   r&   r'   r(   r)   r*   r   __version__splitr_   rS   _versr   r.   r1   r`   rh   rk   ro   rr   rw   r{   r}   r   r   r   r   r   r   r   r   r   r   r   rA   )xs   0r<   <module>r      s   # 	        %    :   '  !    !    &      ' . 7 : 0 # &    " "  ((..s3M3rxx!7LVSV3M	 6/ KuXx-?'@A	*/ */Z.;>/.

0

8(&'
 9	
,	7,, , 	,
 
,  
9<..!.26.(. 
.
 

 2	
  
 9=	
 6	
 (	&/	(//3/	/d
	
7

 Ns   H%9H%