
    Ojl3                       U d dl mZ d dl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 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'dCd)Z(dDd+Z)edEd/            Z*edFdGd2            Z*e	 dHdId4            Z*	 dHdJd5Z*dKd8Z+ G d9 d:ej,                  Z- G d; d<ej.                  Z/ G d= d>          Z0 G d? d@          Z1dLdBZ2dS )M    )annotationsN)Iterable)Any)Callable)cast)Dict)List)Mapping)MutableMapping)NoReturn)Optional)overload)Sequence)Set)Tuple)Type)TypeVar)asbool)immutabledict)to_list)unique_list   )inspect_getfullargspecT)memoized_propertyzMapping[Any, Any]
EMPTY_DICT_T)bound_C.c                        e Zd Zd fdZ xZS )	_ModuleClsMetakeystrvalueCallable[..., Any]returnNonec                v    t                                          ||           |                     |           d S N)super__setattr___update_module_proxies)clsr!   r#   	__class__s      l/lsinfo/ai/hellotax_ai/training_center/backend/venv/lib/python3.11/site-packages/alembic/util/langhelpers.pyr*   z_ModuleClsMeta.__setattr__.   s7    C'''""3'''''    )r!   r"   r#   r$   r%   r&   )__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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                 "    t                      g fS r(   )set r/   r.   <lambda>zModuleClsProxy.<lambda>B   s     r/   zaDict[Type[Any], Tuple[Set[str], List[Tuple[MutableMapping[str, Any], MutableMapping[str, Any]]]]]_setupsnamer"   r%   r&   c                f    | j         |          \  }}|D ]\  }}|                     ||||           d S r(   )r:   _add_proxied_attribute)r,   r;   
attr_namesmodulesglobals_locals_s         r.   r+   z%ModuleClsProxy._update_module_proxiesD   sR    !k#.
G!( 	L 	LHg&&tXw
KKKK	L 	Lr/   c                z    | j         | j                 \  }}|D ]"\  }}| |d<   |D ]}t          | |          ||<   #d S N_proxy)r:   r-   getattrselfr>   r?   r@   rA   	attr_names         r.   _install_proxyzModuleClsProxy._install_proxyJ   sh    "l4>:
G!( 	? 	?Hg!%HX' ? ?	&-dI&>&>##?	? 	?r/   c                Z    | j         | j                 \  }}|D ]\  }}d |d<   |D ]}||= d S rC   )r:   r-   rF   s         r.   _remove_proxyzModuleClsProxy._remove_proxyQ   s\    "l4>:
G!( 	( 	(Hg!%HX' ( (	Y''(	( 	(r/   r@   MutableMapping[str, Any]rA   c                    | j         |          \  }}|                    ||f           |                     |||           d S r(   )r:   append_setup_proxy)r,   r@   rA   r>   r?   s        r.   create_module_class_proxyz(ModuleClsProxy.create_module_class_proxyX   sJ     "k#.
G'*+++7J77777r/   r>   Set[str]c                Z    t          |           D ]}|                     ||||           d S r(   )dirr=   )r,   r@   rA   r>   methnames        r.   rO   zModuleClsProxy._setup_proxyb   sD     C 	P 	PH&&x7JOOOO	P 	Pr/   rT   c                    |                     d          sRt          | |          }t          |          r|                     |||          ||<   d S |                    |           d S d S )N_)
startswithrE   callable_create_method_proxyadd)r,   rT   r@   rA   r>   meths         r.   r=   z%ModuleClsProxy._add_proxied_attributel   s     ""3'' 	)3))D~~ )$'$<$<h% %!!! x(((((	) 	)r/   r$   c           	         t           |          }d fd}||d<   t          |d	g           }|rpt          |          }|d
         r-|d
         d
         dk    r|d
                             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 )Nr;   r"   from_	Exceptionr%   r   c                <    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.)	NameErrorr0   )r;   r]   r,   s     r.   _name_errorz8ModuleClsProxy._create_method_proxy.<locals>._name_error   s2    )
 44	'  r/   ra   _legacy_translationsr   rG   z*args, **kwzargs, kw = _translate(z, z, args, kw)fn_namespecr   translationsargskwc           
        i }g }|D ]?\  }}||v r6t          j        d|d|d| d           |                    |          ||<   @|                    |           t	          |          }|d         r%|d         d t          |d                             }	n|d         }	|	D ]P}
|
|vrJ	 |                    |                    d                     0# t          $ r t          d|
z            w xY wQ|	                    |           ||fS )Nz	Argument z is now named z for method z().   r   z(missing required positional argument: %s)
warningswarnpopupdatelistlenrN   
IndexError	TypeErrorextend)rc   rd   re   rf   rg   	return_kwreturn_argsoldnamenewnamepos_onlyargs              r.   	translatez6ModuleClsProxy._create_method_proxy.<locals>.translate   sc    	 (4 = =$GW"}} 29''777GGGM   .0VVG__	'*  $$$Dzz7 '#Aw#d1g,,7HH#AwH#  C)++'..txx{{;;;;)   "+ J"%!&# #  , ""4((("I--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;   ry   rf   apply_kwdoczDict[str, Any]r$   )r;   r"   r]   r^   r%   r   )rc   r"   rd   r   re   r   rf   r   rg   r   r%   r   )
rE   r   rl   r0   tupletextwrapdedent__doc__execr   )r,   r;   r@   rA   fnra   re   rd   
outer_args
inner_argstranslate_strry   	func_textlcls   `             r.   rY   z#ModuleClsProxy._create_method_proxy}   sj    S$	 	 	 	 	 	 #.r#92>> 1	)"--DAw 471://QA&33JdM. . . .B &/H\""&J&JMO
 *"&z 
 
	( )+Y-x88#>>>(#d)444r/   N)r;   r"   r%   r&   r%   r&   )r@   rL   rA   rL   r%   r&   )r@   rL   rA   rL   r>   rQ   r%   r&   )
rT   r"   r@   rL   rA   rL   r>   rQ   r%   r&   )r;   r"   r@   rL   rA   rL   r%   r$   )r0   r1   r2   r   collectionsdefaultdictr:   __annotations__classmethodr+   rI   rK   rP   rO   r=   rY   r8   r/   r.   r5   r5   3   s%          	  3 344  5 5 5 5 L L L [L
? ? ? ?( ( ( ( 8 8 8 [8 P P P [P ) ) ) [)  ^5 ^5 ^5 [^5 ^5 ^5r/   r5   )	metaclassre   r   r%   c                     d fd}|S )Nr   r   r%   c                    | _         | S r(   )rb   )r   re   s    r.   decoratez$_with_legacy_names.<locals>.decorate   s    ".	r/   r   r   r%   r   r8   )re   r   s   ` r.   _with_legacy_namesr      s(          Or/   r"   c                 B    t          j                    j        dd          S )Ni)uuiduuid4hexr8   r/   r.   rev_idr      s    :<<CDD!!r/   xdefaultTuple[Any, ...]c                    d S r(   r8   r   r   s     r.   to_tupler      s    CF3r/   r&   Optional[_T]c                    d S r(   r8   r   s     r.   r   r      s    :=#r/   Optional[Tuple[Any, ...]]c                    d S r(   r8   r   s     r.   r   r      s	     cr/   c                    | |S t          | t                    r| fS t          | t                    rt          |           S | fS r(   )
isinstancer"   r   r~   r   s     r.   r   r      sK     	y	As		 t	Ax	 	  Qxxtr/   tupTuple[str, ...]c                :    t          t          |                     S r(   )r~   r   )r   s    r.   dedupe_tupler     s    S!!"""r/   c                  P    e Zd ZdZ ej                    Z	  ej                    ZdS )PriorityDispatchResultzyindicate an action after running a function within a
    :class:`.PriorityDispatcher`

    .. versionadded:: 1.18.0

    N)r0   r1   r2   r   enumautoCONTINUESTOPr8   r/   r.   r   r   
  s=          ty{{H 49;;DCCr/   r   c                  "    e Zd ZdZdZ	 dZ	 dZdS )DispatchPriorityzIndicate which of three sub-collections a function inside a
    :class:`.PriorityDispatcher` should be placed.

    .. versionadded:: 1.18.0

    2      
   N)r0   r1   r2   r   FIRSTMEDIUMLASTr8   r/   r.   r   r     s1          EMFCD99r/   r   c                  8    e Zd ZddZdddddZdddZddZdS )
Dispatcherr%   r&   c                    i | _         d S r(   )	_registryrG   s    r.   __init__zDispatcher.__init__1  s    57r/   r   F)	qualifierreplacetargetr   r   r"   r   boolCallable[[_C], _C]c                     d fd}|S )Nr   r   r%   c                `    fj         v rst          dd          | j         f<   | S )Nz)Can not set dispatch function for object zE: key already exists. To replace existing function, use replace=True.)r   
ValueError)r   r   r   rG   r   s    r.   r   z)Dispatcher.dispatch_for.<locals>.decorate;  s[    	"dn44W4 ;; ; ;  
 35DNFI./Ir/   r   r8   )rG   r   r   r   r   s   ```` r.   dispatch_forzDispatcher.dispatch_for4  s:    	 	 	 	 	 	 	 	 	 r/   objc                &   t          |t                    r|g}n1t          |t                    r|j        }nt          |          j        }|dk    r|dg}ndg}|D ]%}|D ] }||f| j        v r| j        ||f         c c S !&t          d|z            )Nr   z#no dispatch function for object: %s)r   r"   type__mro__r   r   )rG   r   r   targets
qualifiersspclss         r.   dispatchzDispatcher.dispatchG  s    c3 	(&)UGGT"" 	(kGG3ii'G	!!#Y/JJ#J 	J 	JE' > >	9%77>5)*<====== 8> BSHIIIr/   c                `    t                      }|j                            | j                   |S zHReturn a copy of this dispatcher that is independently
        writable.)r   r   rm   rG   ds     r.   branchzDispatcher.branch[  s*     LL	4>***r/   Nr   )r   r   r   r"   r   r   r%   r   )r   )r   r   r   r"   r%   r   )r%   r   )r0   r1   r2   r   r   r   r   r8   r/   r.   r   r   0  s        8 8 8 8 #     &J J J J J(     r/   r   c                  T    e Zd ZdZddZej        dddddZddddZddZ	ddZ
dS )PriorityDispatcherzregisters 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)

    r%   r&   c                B    t          j        t                    | _        d S r(   )r   r   rn   r   r   s    r.   r   zPriorityDispatcher.__init__m  s    5@5L6
 6
r/   r   N)priorityr   subgroupr   r"   r   r   r   r   
str | Noner   c               $     d fd}|S )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.

        r   r   r%   c                R    j         f                             | f           | S r(   )r   rN   )r   r   r   rG   r   r   s    r.   r   z1PriorityDispatcher.dispatch_for.<locals>.decorate  s7    NFIx89@@X   Ir/   r   r8   )rG   r   r   r   r   r   s   ````` r.   r   zPriorityDispatcher.dispatch_forr  s@    "	 	 	 	 	 	 	 	 	 	 r/   )r   Callable[..., None]c               8     |dk    r|dgndgd fd}|S )z6Provide a callable for the given target and qualifier.r   rx   r   rg   r%   c                     i }t           D ]e}D ]`}	j                            
||fd          D ]?\  }}|                    |t          j                  t          j        u r2 || i |}|||<   @afd S )Nr8   )r   r   getr   r   r   )rx   rg   results_by_subgroupr   r   r   r   resultr   rG   r   s           r.   goz'PriorityDispatcher.dispatch.<locals>.go  s    EG, ? ?!+ ? ?I(,(:(:H5r) ) ? ?H 033 (*@*I   6:; ;
 %!#SB8>+H55??? ?r/   )rx   r   rg   r   r%   r   r8   )rG   r   r   r   r   s   ``  @r.   r   zPriorityDispatcher.dispatch  sT    
 	!!#Y/JJ#J	? 	? 	? 	? 	? 	? 	? 	?$ 	r/   c                L    t                      }|                    |            |S r   )r   populate_withr   s     r.   r   zPriorityDispatcher.branch  s&       	r/   otherc                t    |j         D ]/}|j         |         }| j         |                             |           0dS )zPopulate this PriorityDispatcher with the contents of another one.

        Additive, does not remove existing contents.
        N)r   rr   )rG   r   knew_lists       r.   r   z PriorityDispatcher.populate_with  sI    
  	/ 	/Aq)HN1$$X....	/ 	/r/   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   r8   r/   r.   r   r   d  s         
 
 
 
 &6%<"#     4 09     <   / / / / / /r/   r   r#   c                    | J | S r(   r8   )r#   s    r.   not_noner     s    Lr/   )re   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   )3
__future__r   r   collections.abcr   r   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   rj   sqlalchemy.utilr   r   r   r   compatr   r   r   r   r   r   r   r    r5   r   r   r   r   Enumr   IntEnumr   r   r   r   r8   r/   r.   <module>r      s!   " " " " " " "     $ $ $ $ $ $                                       ! ! ! ! ! !                                                   , , , , , , : : : : : : . . . . . . 6 6 6 6 6 6 * * * * * *     
 !.
 / / / /WTWT#s(+,,,( ( ( ( (T ( ( (i5 i5 i5 i5 i5~ i5 i5 i5 i5X   " " " " 
 F F F 
 F 
 = = = = 
 = 
15    
 26
 
 
 
 
# # # #D D D D DTY D D D(: : : : :t| : : :$1 1 1 1 1 1 1 1hT/ T/ T/ T/ T/ T/ T/ T/n     r/   