o
    ‹åg*'  ã                   @  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__© úT/var/www/html/flaskapp/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 )&ÚModuleClsProxyz—Create 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 ƒ|‚)Nz’Can'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_listú3Union[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     
-
ÿÿ
?