
    +h*'                    \   U d dl mZ d dlZd dlmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ ddlm Z  	 d dlm!Z!  e       Z"de#d<    ede      Z$ ed ed!ef         Z% G d" d#e&      Z' G d$ d%e'&      Z(d1d'Z)d2d(Z*ed3d)       Z+ed4d5d*       Z+e	 d6	 	 	 	 	 d7d+       Z+	 d6	 	 	 	 	 d8d,Z+d9d-Z, G d. d/      Z-d:d0Z.y);    )annotationsN)Iterable)Any)Callable)cast)Dict)List)Mapping)MutableMapping)NoReturn)Optional)overload)Sequence)Set)Tuple)Type)TYPE_CHECKING)TypeVar)Union)asbool)immutabledict)to_list)unique_list   )inspect_getfullargspec)memoized_propertyzMapping[Any, Any]
EMPTY_DICT_T)bound_C.c                        e Zd Zd fdZ xZS )_ModuleClsMetac                H    t         |   ||       | j                  |       y N)super__setattr___update_module_proxies)clskeyvalue	__class__s      K/var/www/html/venv/lib/python3.12/site-packages/alembic/util/langhelpers.pyr&   z_ModuleClsMeta.__setattr__/   s     C'""3'    )r)   strr*   Callable[..., Any]returnNone)__name__
__module____qualname__r&   __classcell__)r+   s   @r,   r"   r"   .   s    ( (r-   r"   c                      e Zd ZU dZ ej
                  d       Zded<   edd       Z	ddZ
ddZe	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 dd	       Ze	 	 	 	 	 	 	 	 	 	 dd
       Ze	 	 	 	 	 	 	 	 dd       Zy)ModuleClsProxyzCreate module level proxy functions for the
    methods on a given class.

    The functions will have a compatible signature
    as the methods.

    c                     t               g fS r$   )set r-   r,   <lambda>zModuleClsProxy.<lambda>C   s     r-   zaDict[Type[Any], Tuple[Set[str], List[Tuple[MutableMapping[str, Any], MutableMapping[str, Any]]]]]_setupsc                d    | j                   |    \  }}|D ]  \  }}| j                  ||||        y r$   )r<   _add_proxied_attribute)r(   name
attr_namesmodulesglobals_locals_s         r,   r'   z%ModuleClsProxy._update_module_proxiesE   s?    !kk#.
G!( 	LHg&&tXw
K	Lr-   c                    | j                   | j                     \  }}|D ]   \  }}| |d<   |D ]  }t        | |      ||<    " y N_proxy)r<   r+   getattrselfr@   rA   rB   rC   	attr_names         r,   _install_proxyzModuleClsProxy._install_proxyK   sW    "ll4>>:
G!( 	?Hg!%HX' ?	&-dI&>#?	?r-   c                n    | j                   | j                     \  }}|D ]  \  }}d |d<   |D ]  }||=   y rE   )r<   r+   rH   s         r,   _remove_proxyzModuleClsProxy._remove_proxyR   sN    "ll4>>:
G!( 	(Hg!%HX' (	Y'(	(r-   c                t    | j                   |    \  }}|j                  ||f       | j                  |||       y r$   )r<   append_setup_proxy)r(   rB   rC   r@   rA   s        r,   create_module_class_proxyz(ModuleClsProxy.create_module_class_proxyY   s:     "kk#.
G'*+7J7r-   c                L    t        |       D ]  }| j                  ||||        y r$   )dirr>   )r(   rB   rC   r@   methnames        r,   rP   zModuleClsProxy._setup_proxyc   s-     C 	PH&&x7JO	Pr-   c                    |j                  d      s@t        | |      }t        |      r| j                  |||      ||<   y |j	                  |       y y )N_)
startswithrG   callable_create_method_proxyadd)r(   rT   rB   rC   r@   meths         r,   r>   z%ModuleClsProxy._add_proxied_attributem   sT     ""3'3)D~$'$<$<h%! x( (r-   c           	         t         |      }d fd}||d<   t        |dg       }|rht        |      }|d   r|d   d   dk(  r|d   j                  d       dx}}	d|j                  dt	        |      d|d	}
	 	 	 	 	 	 	 	 	 	 	 	 dd
}||d<   nd}d}	d}
t        j                  d||
||	|j                  dz        }i }t        |t        d|      |       t        d||         S )Nc                >    t        d| dj                  d      |)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.)	NameErrorr2   )r?   from_r(   s     r,   _name_errorz8ModuleClsProxy._create_method_proxy.<locals>._name_error   s%    
 	' r-   r`   _legacy_translationsr   rI   z*args, **kwzargs, kw = _translate(z, z, args, kw)c           
        i }g }|D ]=  \  }}||v st        j                  d|d|d| d       |j                  |      ||<   ? |j                  |       t	        |      }|d   r|d   d t        |d           }	n|d   }	|	D ](  }
|
|vs	 |j                  |j                  d             * |j                  |       ||fS # t        $ r t        d|
z        w xY w)Nz	Argument z is now named z for method z().   r   z(missing required positional argument: %s)
warningswarnpopupdatelistlenrO   
IndexError	TypeErrorextend)fn_namespectranslationsargskw	return_kwreturn_argsoldnamenewnamepos_onlyargs              r,   	translatez6ModuleClsProxy._create_method_proxy.<locals>.translate   s    	 (4 =$GW"} 297GM .0VVG_	'*=   $Dz7#Aw#d1g,7H#AwH# C)+'..txx{; ""4("I--  * "+ 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
        )r?   rx   rp   apply_kwdoczDict[str, Any]r/   )r?   r.   r_   	Exceptionr0   r   )rm   r.   rn   r   ro   r   rp   r   rq   r   r0   r   )
rG   r   rf   r2   tupletextwrapdedent__doc__execr   )r(   r?   rB   rC   fnr`   ro   rn   
outer_args
inner_argstranslate_strrx   	func_textlcls   `             r,   rY   z#ModuleClsProxy._create_method_proxy~   s5    S$	 #.r#92>)"-DAw471:/QA&33JdM..$'.7:.BE.KN..B &/H\"&J&JMOO
 *"&zz
	( )+Y-x8#>(#d)44r-   N)r?   r.   r0   r1   )r0   r1   )rB   MutableMapping[str, Any]rC   r   r0   r1   )rB   r   rC   r   r@   Set[str]r0   r1   )
rT   r.   rB   r   rC   r   r@   r   r0   r1   )r?   r.   rB   r   rC   r   r0   r/   )r2   r3   r4   r   collectionsdefaultdictr<   __annotations__classmethodr'   rK   rM   rQ   rP   r>   rY   r:   r-   r,   r7   r7   4   s=    	  34   5 L L
?( 8*8 *8 
	8 8 P*P *P 	P
 
P P )) +) *	)
 ) 
) )  ^5^5 +^5 *	^5
 
^5 ^5r-   r7   )	metaclassc                     d fd}|S )Nc                    | _         | S r$   )ra   )r   ro   s    r,   decoratez$_with_legacy_names.<locals>.decorate   s    ".	r-   r   r    r0   r    r:   )ro   r   s   ` r,   _with_legacy_namesr      s     Or-   c                 D    t        j                         j                  dd  S )Ni)uuiduuid4hexr:   r-   r,   rev_idr      s    ::<CD!!r-   c                     y r$   r:   xdefaults     r,   to_tupler      s    CFr-   c                     y r$   r:   r   s     r,   r   r      s    :=r-   c                     y r$   r:   r   s     r,   r   r      s     r-   c                l    | |S t        | t              r| fS t        | t              rt        |       S | fS r$   )
isinstancer.   r   r~   r   s     r,   r   r      s9     	y	As	t	Ax	 Qxtr-   c                *    t        t        |             S r$   )r~   r   )tups    r,   dedupe_tupler     s    S!""r-   c                  N    e Zd ZdddZ	 d		 	 	 	 	 d
dZd	ddZ	 	 	 	 ddZddZy)
Dispatcherc                     i | _         || _        y r$   )	_registryuselist)rI   r   s     r,   __init__zDispatcher.__init__  s    57r-   c                     d fd}|S )Nc                    j                   r/j                  j                  fg       j                  |        | S fj                  vsJ | j                  f<   | S r$   )r   r   
setdefaultrO   )r   	qualifierrI   targets    r,   r   z)Dispatcher.dispatch_for.<locals>.decorate  sf    ||))69*=rBII"M I 	*$..@@@68	23Ir-   r   r:   )rI   r   r   r   s   ``` r,   dispatch_forzDispatcher.dispatch_for  s    	 r-   c                   t        |t              r|g}n2t        |t              r|j                  }nt        |      j                  }|D ]k  }|dk7  r2||f| j                  v r"| j                  | j                  ||f         c S |df| j                  v sK| j                  | j                  |df         c S  t        d|z        )Nr   z#no dispatch function for object: %s)r   r.   type__mro__r   _fn_or_list
ValueError)rI   objr   targetsspclss        r,   dispatchzDispatcher.dispatch  s    c3&)UGT"kkG3i''G 	JEI%5)*<*N''y7I(JKK#t~~5''y7I(JKK		J BSHIIr-   c                0    | j                   rdfd}|S S )Nc                 T    t         rt        t              sJ D ]
  } || i |  y r$   )r   r   r   )rw   rq   r   
fn_or_lists      r,   goz"Dispatcher._fn_or_list.<locals>.go2  s0     %j(;;;$ #BNrN#r-   )rw   r   rq   r   r0   r1   )r   )rI   r   r   s    ` r,   r   zDispatcher._fn_or_list-  s     <<# Ir-   c                     t               } j                  r0|j                  j                   fd j                  D               |S |j                  j                   j                         |S )zHReturn a copy of this dispatcher that is independently
        writable.c              3  f   K   | ]#  }|j                   |   D cg c]  }| c}f % y c c}w wr$   )r   ).0kr   rI   s      r,   	<genexpr>z$Dispatcher.branch.<locals>.<genexpr>B  s2      :;$.."34BR454s   1	,1)r   r   r   rg   )rI   ds   ` r,   branchzDispatcher.branch<  sZ     L<<KK ?C~~ 
  KKt~~.r-   N)F)r   boolr0   r1   )r   )r   r   r   r.   r0   zCallable[[_C], _C])r   r   r   r.   r0   r   )r   z3Union[List[Callable[..., Any]], Callable[..., Any]]r0   r/   )r0   r   )r2   r3   r4   r   r   r   r   r   r:   r-   r,   r   r     sI    
 -6&)	J M	r-   r   c                    | J | S r$   r:   )r*   s    r,   not_noner   J  s    Lr-   )ro   r   r0   r   )r0   r.   )r   r   r   Tuple[Any, ...]r0   r   ).)r   r1   r   Optional[_T]r0   r   r$   )r   r   r   Optional[Tuple[Any, ...]]r0   r   )r   r   r   r   r0   r   )r   Tuple[str, ...]r0   r   )r*   r   r0   r   )/
__future__r   r   collections.abcr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   rd   sqlalchemy.utilr   r   r   r   compatr   r   r   r   r   r    r   r"   r7   r   r   r   r   r   r   r:   r-   r,   <module>r      s<   "  $        !              , : . 6 *
 !.
 /TT#s(+,(T (i5~ i5X" 
 F 
 F 
 = 
 = 
15
. 
 26


.

#< <~r-   