
    Pqh!                       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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      Z G d de      Z  G d de       Z!d Z"d(dZ#ed)d        Z$ed*d+d!       Z$ed*d,d"       Z$d*d#Z$d-d$Z% G d% d&      Z&d.d'Z'y)/    )annotationsN)Iterable)Any)Callable)Dict)List)Mapping)Optional)overload)Sequence)Tuple)TypeVar)Union)asbool)immutabledict)memoized_property)to_list)unique_list   )inspect_getfullargspeczMapping[Any, Any]
EMPTY_DICT_Tc                        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      Y/srv/www/ollama/chat-ollama/venv/lib/python3.12/site-packages/alembic/util/langhelpers.pyr   z_ModuleClsMeta.__setattr__"   s     C'""3'    )r!   strr"   r   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        Zed	        Zed
        Ze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>1   s     r%   zDict[type, Tuple[set, list]]_setupsc                d    | j                   |    \  }}|D ]  \  }}| j                  ||||        y r   )r3   _add_proxied_attribute)r    name
attr_namesmodulesglobals_locals_s         r$   r   z%ModuleClsProxy._update_module_proxies4   s?    !kk#.
G!( 	LHg&&tXw
K	Lr%   c                    | j                   | j                     \  }}|D ]   \  }}| |d<   |D ]  }t        | |      ||<    " y N_proxy)r3   r#   getattrselfr7   r8   r9   r:   	attr_names         r$   _install_proxyzModuleClsProxy._install_proxy:   sW    "ll4>>:
G!( 	?Hg!%HX' ?	&-dI&>#?	?r%   c                n    | j                   | j                     \  }}|D ]  \  }}d |d<   |D ]  }||=   y r<   )r3   r#   r?   s         r$   _remove_proxyzModuleClsProxy._remove_proxyA   sN    "ll4>>:
G!( 	(Hg!%HX' (	Y'(	(r%   c                t    | j                   |    \  }}|j                  ||f       | j                  |||       y r   )r3   append_setup_proxy)r    r9   r:   r7   r8   s        r$   create_module_class_proxyz(ModuleClsProxy.create_module_class_proxyH   s8    !kk#.
G'*+7J7r%   c                L    t        |       D ]  }| j                  ||||        y r   )dirr5   )r    r9   r:   r7   methnames        r$   rG   zModuleClsProxy._setup_proxyN   s+    C 	PH&&x7JO	Pr%   c                    |j                  d      s@t        | |      }t        |      r| j                  |||      ||<   y |j	                  |       y y )N_)
startswithr>   callable_create_method_proxyadd)r    rK   r9   r:   r7   meths         r$   r5   z%ModuleClsProxy._add_proxied_attributeS   sR    ""3'3)D~$'$<$<h%! x( (r%   c           	         t         |      } fd}||d<   t        |dg       }|r[t        |      }|d   r|d   d   dk(  r|d   j                  d       dx}}	d|j                  dt	        |      d|d	}
d
 }||d<   nd}d}	d}
t        j                  d||
||	|j                  dz        }i }t        |||       ||   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.)	NameErrorr)   )r6   from_r    s     r$   _name_errorz8ModuleClsProxy._create_method_proxy.<locals>._name_errorb   s%    
 	' r%   rW   _legacy_translationsr   r@   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lenrF   
IndexError	TypeErrorextend)fn_namespectranslationsargskw	return_kwreturn_argsoldnamenewnamepos_onlyargs              r$   	translatez6ModuleClsProxy._create_method_proxy.<locals>.translatez   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
        )r6   ro   rg   apply_kwdoc)	r>   r   r]   r)   tupletextwrapdedent__doc__exec)r    r6   r9   r:   fnrW   rf   re   
outer_args
inner_argstranslate_strro   	func_textlcls   `             r$   rP   z#ModuleClsProxy._create_method_proxy^   s    S$	 #.r#92>)"-DAw471:/QA&33JdM.> &/H\"&J&JMOO
 *"&zz
	( Y#&4yr%   N)r6   r&   r'   r(   )r'   r(   )r)   r*   r+   rw   collectionsdefaultdictr3   __annotations__classmethodr   rB   rD   rH   rG   r5   rP   r1   r%   r$   r.   r.   '   s     -DK,C,C-G)  L L
?( 8 8
 P P ) ) W Wr%   r.   )	metaclassc                      fd}|S )Nc                    | _         | S r   )rX   )ry   rf   s    r$   decoratez$_with_legacy_names.<locals>.decorate   s    ".	r%   r1   )rf   r   s   ` r$   _with_legacy_namesr      s     Or%   c                 D    t        j                         j                  dd  S )Ni)uuiduuid4hexr1   r%   r$   rev_idr      s    ::<CD!!r%   c                     y r   r1   xdefaults     r$   to_tupler          r%   c                     y r   r1   r   s     r$   r   r      r   r%   c                     y r   r1   r   s     r$   r   r      r   r%   c                l    | |S t        | t              r| fS t        | t              rt        |       S | fS r   )
isinstancer&   r   rt   r   s     r$   r   r      s7    y	As	t	Ax	 Qxtr%   c                *    t        t        |             S r   )rt   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)r@   r   s     r$   __init__zDispatcher.__init__   s    +-r%   c                      fd}|S )Nc                    j                   r/j                  j                  fg       j                  |        | S fj                  vsJ | j                  f<   | S r   )r   r   
setdefaultrF   )ry   	qualifierr@   targets    r$   r   z)Dispatcher.dispatch_for.<locals>.decorate   sf    ||))69*=rBII"M I 	*$..@@@68	23Ir%   r1   )r@   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)r@   objr   targetsspclss        r$   dispatchzDispatcher.dispatch   s    c3!$G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                .    | j                   rfd}|S S )Nc                 $    D ]
  } || i |  y r   r1   )rn   rh   ry   
fn_or_lists      r$   goz"Dispatcher._fn_or_list.<locals>.go
  s    $ #BNrN#r%   )r   )r@   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kry   r@   s      r$   	<genexpr>z$Dispatcher.branch.<locals>.<genexpr>  s2      :;$.."34BR454s   1	,1)r   r   r   r^   )r@   ds   ` r$   branchzDispatcher.branch  sZ     L<<KK ?C~~ 
  KKt~~.r%   N)F)r   boolr'   r(   )r   )r   r   r   r&   r'   r   )r   r   r   r&   r'   r   )r   zUnion[List[Callable], Callable]r'   r   )r'   r   )r)   r*   r+   r   r   r   r   r   r1   r%   r$   r   r      sI    
 -6&)	J 9	r%   r   c                    | J | S r   r1   )r"   s    r$   not_noner      s    Lr%   )r'   r&   )r   r   r   rt   r'   rt   r   )r   r(   r   Optional[_T]r'   r   )r   r   r   zOptional[tuple]r'   rt   )r   Tuple[str, ...]r'   r   )r"   r   r'   r   )(
__future__r   r   collections.abcr   ru   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r[   sqlalchemy.utilr   r   r   r   r   compatr   r   r   r   r   r   r.   r   r   r   r   r   r   r1   r%   r$   <module>r      s    "  $               " ) - # ' * !.
 /T](T (O~ Od" 
 
 
 
 
 
#: :zr%   