
    -jil3                       % S SK Jr  S SKrS SKJr  S SK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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   \" 5       r!S\"S'   \" S\S9r#\" S\	S\4   S9r$ " S  S!\%5      r& " S" S#\&S$9r'S5S% jr(S6S& jr)\S7S' j5       r*\S8S9S( jj5       r*\ S:     S;S) jj5       r* S:     S<S* jjr*S=S+ jr+ " S, S-\RX                  5      r- " S. S/\R\                  5      r/ " S0 S15      r0 " S2 S35      r1S>S4 jr2g)?    )annotationsN)Iterable)Any)Callable)cast)Dict)List)Mapping)MutableMapping)NoReturn)Optional)overload)Sequence)Set)Tuple)Type)TypeVar)asbool)immutabledict)to_list)unique_list   )inspect_getfullargspec)memoized_propertyzMapping[Any, Any]
EMPTY_DICT_T)bound_C.c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )_ModuleClsMeta-   c                F   > [         TU ]  X5        U R                  U5        g N)super__setattr___update_module_proxies)clskeyvalue	__class__s      R/home/james-whalen/.local/lib/python3.13/site-packages/alembic/util/langhelpers.pyr%   _ModuleClsMeta.__setattr__.   s    C'""3'     )r(   strr)   Callable[..., Any]returnNone)__name__
__module____qualname____firstlineno__r%   __static_attributes____classcell__)r*   s   @r+   r    r    -   s    ( (r-   r    c                     \ rS rSr% Sr\R                  " S 5      rS\S'   \	SS j5       r
SS jrSS jr\	      SS	 j5       r\	        SS
 j5       r\	          SS j5       r\	        SS j5       rSrg)ModuleClsProxy3   zCreate module level proxy functions for the
methods on a given class.

The functions will have a compatible signature
as the methods.

c                     [        5       / 4$ r#   )setr.   r-   r+   <lambda>ModuleClsProxy.<lambda>B   s
    r-   zaDict[Type[Any], Tuple[Set[str], List[Tuple[MutableMapping[str, Any], MutableMapping[str, Any]]]]]_setupsc                `    U R                   U    u  p#U H  u  pEU R                  XXR5        M     g r#   )r@   _add_proxied_attribute)r'   name
attr_namesmodulesglobals_locals_s         r+   r&   %ModuleClsProxy._update_module_proxiesD   s0    !kk#.
!(H&&twK ")r-   c                    U R                   U R                     u  pU H  u  p4XS'   U H  n[        X5      X5'   M     M!     g N_proxy)r@   r*   getattrselfrD   rE   rF   rG   	attr_names         r+   _install_proxyModuleClsProxy._install_proxyJ   sC    "ll4>>:
!(H!%X'	&-d&># ( ")r-   c                p    U R                   U R                     u  pU H  u  p4S US'   U H  nX5	 M     M     g rJ   )r@   r*   rM   s         r+   _remove_proxyModuleClsProxy._remove_proxyQ   s>    "ll4>>:
!(H!%HX'	' ( ")r-   c                n    U R                   U    u  p4UR                  X45        U R                  XU5        g r#   )r@   append_setup_proxy)r'   rF   rG   rD   rE   s        r+   create_module_class_proxy(ModuleClsProxy.create_module_class_proxyX   s4     "kk#.
*+J7r-   c                L    [        U 5       H  nU R                  XAX#5        M     g r#   )dirrB   )r'   rF   rG   rD   methnames        r+   rW   ModuleClsProxy._setup_proxyb   s"     CH&&x7O !r-   c                    UR                  S5      (       dB  [        X5      n[        U5      (       a  U R                  XU5      X1'   g UR	                  U5        g g )N_)
startswithrL   callable_create_method_proxyadd)r'   r\   rF   rG   rD   meths         r+   rB   %ModuleClsProxy._add_proxied_attributel   sS     ""3''3)D~~$'$<$<%! x( (r-   c           	       ^  [        T U5      nSU 4S jjnXRS'   [        US/ 5      nU(       ap  [        U5      nUS   (       a   US   S   S:X  a  US   R                  S5        S=pSUR                  < S[	        U5      < SU< S	3n
            SS
 jnXS'   OSnSn	Sn
[
        R                  " SUU
UU	UR                  S.-  5      n0 n[        U[        SU5      U5        [        SX   5      $ )Nc                B   > [        SU < STR                  < S35      Ue)NzCan't invoke function 'zE', as the proxy object has not yet been established for the Alembic 'z2' class.  Try placing this code inside a callable.)	NameErrorr3   )rC   from_r'   s     r+   _name_error8ModuleClsProxy._create_method_proxy.<locals>._name_error   s%    
 	' r-   rj   _legacy_translationsr   rN   z*args, **kwzargs, kw = _translate(z, z, args, kw)c           
        0 n/ nU HB  u  pxXt;   d  M  [         R                  " SU< SU< SU < S35        UR                  U5      XX'   MD     UR                  U5        [	        U5      nUS   (       a  US   S [        US   5      *  n	OUS   n	U	 H+  n
X;  d  M
   UR                  UR                  S5      5        M-     UR                  U5        Xe4$ ! [         a    [        SU
-  5      ef = f)Nz	Argument z is now named z for method z().   r   z(missing required positional argument: %s)
warningswarnpopupdatelistlenrV   
IndexError	TypeErrorextend)fn_namespectranslationsargskw	return_kwreturn_argsoldnamenewnamepos_onlyargs              r+   	translate6ModuleClsProxy._create_method_proxy.<locals>.translate   s     	 (4$G} 297GM .0VVG_	* )5   $Dz7#Aw#d1g,7H#AwH#C+'..txx{; $ ""4("--  * "+ J"%!&# s    CC,
_translate a          def %(name)s(%(args)s):
            %(doc)r
            %(translate)s
            try:
                p = _proxy
            except NameError as ne:
                _name_error('%(name)s', ne)
            return _proxy.%(name)s(%(apply_kw)s)
            e
        )rC   r   r{   apply_kwdoczDict[str, Any]r0   )rC   r/   ri   	Exceptionr1   r   )rx   r/   ry   r   rz   r   r{   r   r|   r   r1   r   )
rL   r   rq   r3   tupletextwrapdedent__doc__execr   )r'   rC   rF   rG   fnrj   rz   ry   
outer_args
inner_argstranslate_strr   	func_textlcls   `             r+   rb   #ModuleClsProxy._create_method_proxy}   s/    S$	 #.r#92>)"-DAw471:/QA&33JdM..$'.7:.BE.KN..B &/\"&J&JMOO
 *"&zz
	( )+Y-x8#>(#)44r-   r.   N)rC   r/   r1   r2   r1   r2   )rF   MutableMapping[str, Any]rG   r   r1   r2   )rF   r   rG   r   rD   Set[str]r1   r2   )
r\   r/   rF   r   rG   r   rD   r   r1   r2   )rC   r/   rF   r   rG   r   r1   r0   )r3   r4   r5   r6   r   collectionsdefaultdictr@   __annotations__classmethodr&   rP   rS   rX   rW   rB   rb   r7   r.   r-   r+   r:   r:   3   s;    	 34   5 L L
?( 8*8 *8 
	8 8 P*P *P 	P
 
P P )) +) *	)
 ) 
) )  ^5^5 +^5 *	^5
 
^5 ^5r-   r:   )	metaclassc                   ^  SU 4S jjnU$ )Nc                   > TU l         U $ r#   )rl   )r   rz   s    r+   decorate$_with_legacy_names.<locals>.decorate   s    ".	r-   r   r   r1   r   r.   )rz   r   s   ` r+   _with_legacy_namesr      s     Or-   c                 F    [         R                  " 5       R                  SS  $ )Ni)uuiduuid4hexr.   r-   r+   rev_idr      s    ::<CD!!r-   c                    g r#   r.   xdefaults     r+   to_tupler      s    CFr-   c                    g r#   r.   r   s     r+   r   r      s    :=r-   c                    g r#   r.   r   s     r+   r   r      s     r-   c                    U c  U$ [        U [        5      (       a  U 4$ [        U [        5      (       a  [        U 5      $ U 4$ r#   )
isinstancer/   r   r   r   s     r+   r   r      s?     	y	As		t	Ax	 	 Qxtr-   c                *    [        [        U 5      5      $ r#   )r   r   )tups    r+   dedupe_tupler     s    S!""r-   c                  ^    \ rS rSrSr\R                  " 5       r \R                  " 5       rSr	g)PriorityDispatchResulti
  zmindicate an action after running a function within a
:class:`.PriorityDispatcher`

.. versionadded:: 1.18.0

r.   N)
r3   r4   r5   r6   r   enumautoCONTINUESTOPr7   r.   r-   r+   r   r   
  s)     yy{H 99;DCr-   r   c                  (    \ rS rSrSrSr Sr SrSrg)DispatchPriorityi  zIndicate which of three sub-collections a function inside a
:class:`.PriorityDispatcher` should be placed.

.. versionadded:: 1.18.0

2      
   r.   N)	r3   r4   r5   r6   r   FIRSTMEDIUMLASTr7   r.   r-   r+   r   r     s!     EMFCD9r-   r   c                  X    \ rS rSrSS jrSSS.       SS jjrSSS jjrSS jrS	rg
)
Dispatcheri0  c                    0 U l         g r#   	_registryrN   s    r+   __init__Dispatcher.__init__1  s	    57r-   r   F)	qualifierreplacec               $   ^ ^^^ SUUU U4S jjnU$ )Nc                |   > TT4TR                   ;   a  T(       d  [        ST< S35      eU TR                   TT4'   U $ )Nz)Can not set dispatch function for object zE: key already exists. To replace existing function, use replace=True.)r   
ValueError)r   r   r   rN   targets    r+   r   )Dispatcher.dispatch_for.<locals>.decorate;  sO    	"dnn4W ?j !;; 
 35DNNFI./Ir-   r   r.   )rN   r   r   r   r   s   ```` r+   dispatch_forDispatcher.dispatch_for4  s    	 	 r-   c                H   [        U[        5      (       a  U/nO7[        U[        5      (       a  UR                  nO[        U5      R                  nUS:w  a  US/nOS/nU H1  nU H(  nXR4U R                  ;   d  M  U R                  XR4   s  s  $    M3     [        SU-  5      e)Nr   z#no dispatch function for object: %s)r   r/   type__mro__r   r   )rN   objr   targets
qualifiersspclss         r+   dispatchDispatcher.dispatchG  s    c3&)UGT""kkG3i''G	!#Y/J#JE'	%7>>5*<== ( 
 BSHIIr-   c                d    [        5       nUR                  R                  U R                  5        U$ z@Return a copy of this dispatcher that is independently
writable.)r   r   rr   rN   ds     r+   branchDispatcher.branch[  s&     L	4>>*r-   r   Nr   )r   r   r   r/   r   boolr1   Callable[[_C], _C])r   )r   r   r   r/   r1   r   )r1   r   )	r3   r4   r5   r6   r   r   r   r   r7   r.   r-   r+   r   r   0  sE    8 # 	
  
&J(r-   r   c                      \ rS rSrSrSS jr\R                  SSS.         SS jjrSS.     SS	 jjr	SS
 jr
SS jrSrg)PriorityDispatcherid  zregisters lists of functions at multiple levels of priorty and provides
a target to invoke them in priority order.

.. versionadded:: 1.18.0 - PriorityDispatcher replaces the job
   of Dispatcher(uselist=True)

c                B    [         R                  " [        5      U l        g r#   )r   r   rs   r   r   s    r+   r   PriorityDispatcher.__init__m  s    5@5L5L6
r-   r   N)priorityr   subgroupc               (   ^ ^^^^ SUUU UU4S jjnU$ )a  return a decorator callable that registers a function at a
given priority, with a given qualifier, to fire off for a given
subgroup.

It's important this remains as a decorator to support third party
plugins who are populating the dispatcher using that style.

c                N   > TR                   TTT4   R                  U T45        U $ r#   )r   rV   )r   r   r   rN   r   r   s    r+   r   1PriorityDispatcher.dispatch_for.<locals>.decorate  s/    NNFIx89@@X Ir-   r   r.   )rN   r   r   r   r   r   s   ````` r+   r   PriorityDispatcher.dispatch_forr  s    "	 	 r-   )r   c               <   ^ ^^ US:w  a  US/mOS/mSUU U4S jjnU$ )z6Provide a callable for the given target and qualifier.r   c                   > 0 n[          Hr  nT Hi  nT	R                  R                  T
XC4S5       HD  u  pVUR                  U[        R                  5      [        R
                  L a  M8  U" U 0 UD6nXrU'   MF     Mk     Mt     g )Nr.   )r   r   getr   r   r   )r   r|   results_by_subgroupr   r   r   r   resultr   rN   r   s           r+   go'PriorityDispatcher.dispatch.<locals>.go  s    EG,!+I(,(:(:5r) 033 (*@*I*I  6::;
 %!#SB8>H5) ", -r-   )r   r   r|   r   r1   r   r.   )rN   r   r   r   r   s   ``  @r+   r   PriorityDispatcher.dispatch  s/    
 	!#Y/J#J	? 	?$ 	r-   c                <    [        5       nUR                  U 5        U$ r   )r   populate_withr   s     r+   r   PriorityDispatcher.branch  s      	r-   c                    UR                    H0  nUR                   U   nU R                   U   R                  U5        M2     g)zqPopulate this PriorityDispatcher with the contents of another one.

Additive, does not remove existing contents.
N)r   rw   )rN   otherknew_lists       r+   r    PriorityDispatcher.populate_with  s7    
 Aq)HNN1$$X. !r-   r   r   )
r   r/   r   r   r   r/   r   z
str | Noner1   r   )r   r/   r   r/   r1   zCallable[..., None])r1   r   )r   r   r1   r2   )r3   r4   r5   r6   r   r   r   r   r   r   r   r   r7   r.   r-   r+   r   r   d  s~    
 &6%<%<"# #	
   
4 09),	</r-   r   c                    U c   eU $ r#   r.   )r)   s    r+   not_noner     s    Lr-   )rz   r   r1   r   )r1   r/   )r   r   r   Tuple[Any, ...]r1   r  ).)r   r2   r   Optional[_T]r1   r   r#   )r   r   r   Optional[Tuple[Any, ...]]r1   r  )r   r   r   r  r1   r  )r   Tuple[str, ...]r1   r  )r)   r  r1   r   )3
__future__r   r   collections.abcr   r   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   ro   sqlalchemy.utilr   r   r   r   compatr   r   r   r   r   r   r   r    r:   r   r   r   r   Enumr   IntEnumr   r   r   r   r.   r-   r+   <module>r     sh   "  $         !           , : . 6 *
 !.
 /TT#s(+,(T (i5~ i5X" 
 F 
 F 
 = 
 = 
15
. 
 26


.

#DTYY D(:t|| :$1 1hT/ T/nr-   