U
    ^g%i*'                     @  sH  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dZ$ed ed!ef dZ%G d"d# d#e&Z'G d$d% d%e'd&Z(d'd'd(d)d*Z)d+d,d-d.Z*ed'd/d/d0d1d2Z+edBd3d4dd0d5d2Z+edCd'd6d/d0d7d2Z+dDd'd6d6d0d8d2Z+d9d9d:d;d<Z,G d=d> d>Z-d4dd?d@dAZ.dS )E    )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                      s&   e Zd Zdddd fddZ  ZS )_ModuleClsMetastrCallable[..., Any]None)keyvaluereturnc                   s   t  || | | d S N)super__setattr___update_module_proxies)clsr$   r%   	__class__ W/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/util/langhelpers.pyr)   /   s    z_ModuleClsMeta.__setattr__)__name__
__module____qualname__r)   __classcell__r.   r.   r,   r/   r    .   s   r    c                   @  s   e Zd ZU dZedd Zded< edddd	d
Z	ddddZ
ddddZeddddddZedddddddZeddddddddZedddddddZdS ) ModuleClsProxyzCreate module level proxy functions for the
    methods on a given class.

    The functions will have a compatible signature
    as the methods.

    c                   C  s
   t  g fS r'   )setr.   r.   r.   r/   <lambda>C       zModuleClsProxy.<lambda>zaDict[Type[Any], Tuple[Set[str], List[Tuple[MutableMapping[str, Any], MutableMapping[str, Any]]]]]_setupsr!   r#   )namer&   c                 C  s0   | j |  \}}|D ]\}}| |||| qd S r'   )r8   _add_proxied_attribute)r+   r9   
attr_namesmodulesglobals_locals_r.   r.   r/   r*   E   s    z%ModuleClsProxy._update_module_proxiesr&   c                 C  sB   | j | j \}}|D ](\}}| |d< |D ]}t| |||< q(qd S N_proxy)r8   r-   getattrselfr;   r<   r=   r>   	attr_namer.   r.   r/   _install_proxyK   s
    zModuleClsProxy._install_proxyc                 C  s:   | j | j \}}|D ] \}}d |d< |D ]
}||= q(qd S r@   )r8   r-   rC   r.   r.   r/   _remove_proxyR   s
    zModuleClsProxy._remove_proxyzMutableMapping[str, Any])r=   r>   r&   c                 C  s.   | j |  \}}|||f | ||| d S r'   )r8   append_setup_proxy)r+   r=   r>   r;   r<   r.   r.   r/   create_module_class_proxyY   s    z(ModuleClsProxy.create_module_class_proxyzSet[str])r=   r>   r;   r&   c                 C  s"   t | D ]}| |||| qd S r'   )dirr:   )r+   r=   r>   r;   methnamer.   r.   r/   rI   c   s    zModuleClsProxy._setup_proxy)rL   r=   r>   r;   r&   c                 C  s>   | ds:t| |}t|r0| |||||< n
|| d S )N_)
startswithrB   callable_create_method_proxyadd)r+   rL   r=   r>   r;   methr.   r.   r/   r:   m   s    

  
z%ModuleClsProxy._add_proxied_attributer"   )r9   r=   r>   r&   c              	     s   t  |}dddd fdd}||d< t |dg }|rt|}|d	 rf|d	 d	 d
krf|d	 d	 d }}	d|jt||f }
ddddddddd}||d< nd}d}	d}
td||
||	|jd }i }t|t	d|| t	d|| S )Nr!   	Exceptionr   )r9   from_r&   c                   s   t d|  jf |d S )NzCan't invoke function '%s', as the proxy object has not yet been established for the Alembic '%s' class.  Try placing this code inside a callable.)	NameErrorr0   )r9   rT   r+   r.   r/   _name_error   s    z8ModuleClsProxy._create_method_proxy.<locals>._name_errorrW   _legacy_translationsr   rD   z*args, **kwz+args, kw = _translate(%r, %r, %r, args, kw)r   )fn_namespectranslationsargskwr&   c              	   S  s   i }g }|D ]2\}}||krt d||| f  ||||< q|| t|}|d rv|d d t|d   }	n|d }	|	D ]B}
|
|krz||d W q tk
r   td|
 Y qX q|	| ||fS )Nz,Argument %r is now named %r for method %s().   r   z(missing required positional argument: %s)
warningswarnpopupdatelistlenrH   
IndexError	TypeErrorextend)rY   rZ   r[   r\   r]   Z	return_kwZreturn_argsZoldnameZnewnameZpos_onlyargr.   r.   r/   	translate   s6    

z6ModuleClsProxy._create_method_proxy.<locals>.translateZ
_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
        )r9   ri   r\   Zapply_kwdoczDict[str, Any]r"   )
rB   r   ra   r0   tupletextwrapdedent__doc__execr   )r+   r9   r=   r>   fnrW   r[   rZ   Z
outer_argsZ
inner_argsZtranslate_strri   Z	func_textZlclr.   rV   r/   rP   ~   s@    
	!
z#ModuleClsProxy._create_method_proxyN)r0   r1   r2   ro   collectionsdefaultdictr8   __annotations__classmethodr*   rF   rG   rJ   rI   r:   rP   r.   r.   r.   r/   r4   4   s   

		r4   )	metaclassr   )r[   r&   c                   s   ddd fdd}|S )Nr   rq   r&   c                   s
    | _ | S r'   )rX   rq   r[   r.   r/   decorate   s    z$_with_legacy_names.<locals>.decorater.   )r[   rz   r.   ry   r/   _with_legacy_names   s    r{   r!   r?   c                   C  s   t  jdd  S )Ni)uuiduuid4hexr.   r.   r.   r/   rev_id   s    r   zTuple[Any, ...])xdefaultr&   c                 C  s   d S r'   r.   r   r   r.   r.   r/   to_tuple   s    r   r#   zOptional[_T]c                 C  s   d S r'   r.   r   r.   r.   r/   r      s    zOptional[Tuple[Any, ...]]c                 C  s   d S r'   r.   r   r.   r.   r/   r      s    c                 C  s8   | d kr|S t | tr| fS t | tr.t| S | fS d S r'   )
isinstancer!   r   rl   r   r.   r.   r/   r      s    

zTuple[str, ...])tupr&   c                 C  s   t t| S r'   )rl   r   )r   r.   r.   r/   dedupe_tuple  s    r   c                   @  sd   e Zd ZddddddZddd	d
dddZddd	ddddZdddddZd dddZdS )
DispatcherFboolr#   )uselistr&   c                 C  s   i | _ || _d S r'   )	_registryr   )rD   r   r.   r.   r/   __init__  s    zDispatcher.__init__r   r   r!   zCallable[[_C], _C])target	qualifierr&   c                   s   ddd fdd}|S )Nr   rw   c                   sD   j r j fg |  n  fjks2t| j f< | S r'   )r   r   
setdefaultrH   AssertionErrorrx   r   rD   r   r.   r/   rz     s
    z)Dispatcher.dispatch_for.<locals>.decorater.   )rD   r   r   rz   r.   r   r/   dispatch_for  s    zDispatcher.dispatch_for)objr   r&   c                 C  s   t |tr|g}nt |tr$|j}n
t|j}|D ]X}|dkrd||f| jkrd| | j||f   S |df| jkr2| | j|df   S q2td| d S )Nr   z#no dispatch function for object: %s)r   r!   type__mro__r   _fn_or_list
ValueError)rD   r   r   targetsZspclsr.   r.   r/   dispatch  s    


zDispatcher.dispatchz3Union[List[Callable[..., Any]], Callable[..., Any]]r"   )
fn_or_listr&   c                   s(   | j r dddd fdd}|S  S d S )Nr   r#   )rh   r]   r&   c                    s*   t rt tst D ]}|| | qd S r'   )r   r   r   r   )rh   r]   rq   r   r.   r/   go2  s    z"Dispatcher._fn_or_list.<locals>.go)r   )rD   r   r   r.   r   r/   r   -  s    zDispatcher._fn_or_listr?   c                   s<   t  } jr*|j fdd jD  n|j j |S )zHReturn a copy of this dispatcher that is independently
        writable.c                 3  s&   | ]}|d d  j | D fV  qdS )c                 S  s   g | ]}|qS r.   r.   ).0rq   r.   r.   r/   
<listcomp>C  s     z/Dispatcher.branch.<locals>.<genexpr>.<listcomp>N)r   )r   krD   r.   r/   	<genexpr>B  s    z$Dispatcher.branch.<locals>.<genexpr>)r   r   r   rb   )rD   dr.   r   r/   branch<  s    
zDispatcher.branchN)F)r   )r   )r0   r1   r2   r   r   r   r   r   r.   r.   r.   r/   r     s    r   )r%   r&   c                 C  s   | d k	st | S r'   )r   )r%   r.   r.   r/   not_noneJ  s    r   ).)N)N)/
__future__r   rr   collections.abcr   rm   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r|   r_   Zsqlalchemy.utilr   r   r   r   compatr   r   r   rt   r   r   r   r    r4   r{   r   r   r   r   r   r.   r.   r.   r/   <module>   sb     -  ?