o
    h*'                     @  s  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(dDd+d,Z)dEd.d/Z*edFd3d4Z+edGdHd7d4Z+e	dIdJd9d4Z+	dIdKd:d4Z+dLd=d>Z,G d?d@ d@Z-dMdBdCZ.dS )N    )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_getfullargspecT)memoized_propertyzMapping[Any, Any]
EMPTY_DICT_T)bound_C.c                      s   e Zd Zd	 fddZ  ZS )
_ModuleClsMetakeystrvalueCallable[..., Any]returnNonec                   s   t  || | | d S N)super__setattr___update_module_proxies)clsr!   r#   	__class__ l/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/alembic/util/langhelpers.pyr)   /   s   z_ModuleClsMeta.__setattr__)r!   r"   r#   r$   r%   r&   )__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Z	d!ddZ
d!ddZed"ddZed#ddZed$ddZe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   s   
 zModuleClsProxy.<lambda>zaDict[Type[Any], Tuple[Set[str], List[Tuple[MutableMapping[str, Any], MutableMapping[str, Any]]]]]_setupsnamer"   r%   r&   c                 C  s0   | j |  \}}|D ]\}}| |||| q	d S r'   )r7   _add_proxied_attribute)r+   r8   
attr_namesmodulesglobals_locals_r.   r.   r/   r*   E   s   z%ModuleClsProxy._update_module_proxiesc                 C  sB   | j | j \}}|D ]\}}| |d< |D ]	}t| |||< qq
d S N_proxy)r7   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>   )r7   r-   rA   r.   r.   r/   _remove_proxyR   s   zModuleClsProxy._remove_proxyr<   MutableMapping[str, Any]r=   c                 C  s.   | j |  \}}|||f | ||| d S r'   )r7   append_setup_proxy)r+   r<   r=   r:   r;   r.   r.   r/   create_module_class_proxyY   s   z(ModuleClsProxy.create_module_class_proxyr:   Set[str]c                 C  s"   t | D ]
}| |||| qd S r'   )dirr9   )r+   r<   r=   r:   methnamer.   r.   r/   rH   c   s   zModuleClsProxy._setup_proxyrL   c                 C  sD   | ds t| |}t|r| |||||< d S || d S d S )N_)
startswithr@   callable_create_method_proxyadd)r+   rL   r<   r=   r:   methr.   r.   r/   r9   m   s   

z%ModuleClsProxy._add_proxied_attributer$   c              	     s   t  |}d fdd}||d	< t |d
g }|rGt|}|d r/|d d dkr/|d d d }}	d|jt||f }
ddd}||d< nd}d}	d}
td||
||	|jd }i }t|t	d|| t	d|| S )Nr8   r"   from_	Exceptionr%   r   c                   s   t d|  jf |)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   )r8   rS   r+   r.   r/   _name_error   s   z8ModuleClsProxy._create_method_proxy.<locals>._name_errorrW   _legacy_translationsr   rB   z*args, **kwz+args, kw = _translate(%r, %r, %r, args, kw)fn_namespecr   translationsargskwc              	   S  s   i }g }|D ]\}}||v rt d||| f  ||||< q|| t|}|d r;|d d t|d   }	n|d }	|	D ]}
|
|vr_z
||d W qA ty^   td|
 w qA|	| ||fS )Nz,Argument %r is now named %r for method %s().   r   z(missing required positional argument: %s)
warningswarnpopupdatelistlenrG   
IndexError	TypeErrorextend)rY   rZ   r[   r\   r]   	return_kwreturn_argsoldnamenewnamepos_onlyargr.   r.   r/   	translate   s<   

z6ModuleClsProxy._create_method_proxy.<locals>.translate
_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
        )r8   rn   r\   apply_kwdoczDict[str, Any]r$   )r8   r"   rS   rT   r%   r   )rY   r"   rZ   r   r[   r   r\   r   r]   r   r%   r   )
r@   r   ra   r0   tupletextwrapdedent__doc__execr   )r+   r8   r<   r=   fnrW   r[   rZ   
outer_args
inner_argstranslate_strrn   	func_textlclr.   rV   r/   rP   ~   s@   
	

!z#ModuleClsProxy._create_method_proxyN)r8   r"   r%   r&   )r%   r&   )r<   rF   r=   rF   r%   r&   )r<   rF   r=   rF   r:   rJ   r%   r&   )
rL   r"   r<   rF   r=   rF   r:   rJ   r%   r&   )r8   r"   r<   rF   r=   rF   r%   r$   )r0   r1   r2   rv   collectionsdefaultdictr7   __annotations__classmethodr*   rD   rE   rI   rH   r9   rP   r.   r.   r.   r/   r4   4   s    
 


		r4   )	metaclassr[   r   r%   c                   s   d fdd}|S )Nrx   r   r%   c                   s
    | _ | S r'   )rX   rx   r[   r.   r/   decorate   s   z$_with_legacy_names.<locals>.decoraterx   r   r%   r   r.   )r[   r   r.   r   r/   _with_legacy_names   s   r   r"   c                   C  s   t  jdd  S )Ni)uuiduuid4hexr.   r.   r.   r/   rev_id   s   r   xdefaultTuple[Any, ...]c                 C     d S r'   r.   r   r   r.   r.   r/   to_tuple      r   r&   Optional[_T]c                 C  r   r'   r.   r   r.   r.   r/   r      r   Optional[Tuple[Any, ...]]c                 C  r   r'   r.   r   r.   r.   r/   r      s   c                 C  s4   | d u r|S t | tr| fS t | trt| S | fS r'   )
isinstancer"   r   rs   r   r.   r.   r/   r      s   

tupTuple[str, ...]c                 C  s   t t| S r'   )rs   r   )r   r.   r.   r/   dedupe_tuple  s   r   c                   @  sF   e Zd ZddddZ	ddddZddddZd ddZd!ddZdS )"
DispatcherFuselistboolr%   r&   c                 C  s   i | _ || _d S r'   )	_registryr   )rB   r   r.   r.   r/   __init__  s   
zDispatcher.__init__r   targetr   	qualifierr"   Callable[[_C], _C]c                   s   d fdd}|S )Nrx   r   r%   c                   sF   j rj fg |  | S  fjvsJ | j f< | S r'   )r   r   
setdefaultrG   r   r   rB   r   r.   r/   r     s   z)Dispatcher.dispatch_for.<locals>.decorater   r.   )rB   r   r   r   r.   r   r/   dispatch_for  s   zDispatcher.dispatch_forobjc                 C  s   t |tr	|g}nt |tr|j}nt|j}|D ],}|dkr2||f| jv r2| | j||f   S |df| jv rE| | j|df   S qtd| )Nr   z#no dispatch function for object: %s)r   r"   type__mro__r   _fn_or_list
ValueError)rB   r   r   targetsspclsr.   r.   r/   dispatch  s   


zDispatcher.dispatch
fn_or_list3Union[List[Callable[..., Any]], Callable[..., Any]]r$   c                   s   | j rd fdd}|S  S )	Nrm   r   r]   r%   r&   c                    s.   t r	t ts	J  D ]	}|| i | qd S r'   )r   r   r   )rm   r]   rx   r   r.   r/   go2  s
   z"Dispatcher._fn_or_list.<locals>.go)rm   r   r]   r   r%   r&   )r   )rB   r   r   r.   r   r/   r   -  s   zDispatcher._fn_or_listc                   s>   t  } jr|j fdd jD  |S |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.   ).0rx   r.   r.   r/   
<listcomp>C  s    z/Dispatcher.branch.<locals>.<genexpr>.<listcomp>N)r   )r   krB   r.   r/   	<genexpr>B  s    
z$Dispatcher.branch.<locals>.<genexpr>)r   r   r   rb   )rB   dr.   r   r/   branch<  s   zDispatcher.branchN)F)r   r   r%   r&   )r   )r   r   r   r"   r%   r   )r   r   r   r"   r%   r   )r   r   r%   r$   )r%   r   )r0   r1   r2   r   r   r   r   r   r.   r.   r.   r/   r     s    
r   r#   c                 C  s   | d usJ | S r'   r.   )r#   r.   r.   r/   not_noneJ  s   r   )r[   r   r%   r   )r%   r"   )r   r   r   r   r%   r   ).)r   r&   r   r   r%   r   r'   )r   r   r   r   r%   r   )r   r   r   r   r%   r   )r   r   r%   r   )r#   r   r%   r   )/
__future__r   r~   collections.abcr   rt   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r_   sqlalchemy.utilr   r   r   r   compatr   r   r   r   r   r   r   r    r4   r   r   r   r   r   r   r.   r.   r.   r/   <module>   sd     
-

?