
    gFL                    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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, erZd d"lm-Z- d d#lm.Z. d d$lm/Z/ d d%lm0Z0 d d&lm1Z1 d d'lm2Z2 d d(l3m4Z4 d d)l!m5Z5 d d*l6m7Z7 d d+l8m9Z9 d d,l#m:Z: d d-l;m<Z< d d.l;m=Z= d d/l>m?Z? d d0l>m@Z@  ed1ed2   3      ZA G d4 d5e      ZBdd6ZC eD ej                  d7e      D  cg c]
  }  eC|        c}       ZFeFd8k\  ZGeFd9k\  ZHeFd:k\  ZIeFd;k\  ZJeFd<k\  ZKeZL	 d d=lMmNZN  G d> d?      ZPer	 	 	 	 	 	 dd@ZQnd dAlRmQZQ 	 d dBlmSZS dCZTeFdDk\  ZU	 d dHlmVZV  eWeVe"      ZX	 d	 	 	 	 	 ddIZYdCZZeKrd dLl!m[Z[ nd dMl\m]Z[ ede^e[f   Z_ee^e[f   Z`	 	 	 	 ddNZa	 	 	 	 ddOZb	 	 	 	 ddPZcdQZdej                  	 	 	 	 ddR       ZfddSZg	 	 	 	 ddTZh	 	 	 	 ddUZi	 	 	 	 ddVZjddWZkddXZlddYZm	 	 	 	 ddZZndd[Zo	 	 	 	 	 	 	 	 dd\Zpd] Zqd^ Zrdd_Zsdd`ZtddaZudb ZvddcZwdd Zx eyej                  de      rdf Z{dg Z|ndh Z{di Z|ddjZ}ddkZ~ddlZdm Z	 	 	 	 	 	 ddnZ	 	 	 	 	 	 ddoZddpZ G dq drejt                        Z eQe      	 	 	 	 	 	 dds       Z G dt due$      Z eQe      	 	 	 	 	 	 ddv       ZddwZ	 	 	 	 	 	 ddxZ	 	 	 	 	 	 ddyZddzZd{ Zdd|ZeHrd d}lmZ d d~lmZ eZnd dlmZ d ZddZddZddZyc c} w # eO$ r
 d d=l#mNZN Y w xY w# eO$ r es G dE dFeP      ZSdGZTdGZUY w xY w# eO$ r es G dJ dKeP      ZVdGZZY w xY w)    )annotationsN)Any)Callable)Dict)Iterable)Iterator)Mapping)Optional)Protocol)Set)Type)TYPE_CHECKING)TypeVar)Union)__version__)inspectschema)sql)types)url)CheckConstraint)Column)ForeignKeyConstraint)visitors)DialectKWArgs)BindParameter)ColumnClause)quoted_name)
TextClause)UnaryExpression)traverse)	TypeGuard)ClauseElement)Index)Table)
Connection)Dialect)Transaction)	Inspector)ColumnCollection)SQLCompiler)Insert)ColumnElement)
Constraint)
SchemaItem)Select)TableClause_CE)zColumnElement[Any]r0   )boundc                      e Zd ZddZy)_CompilerProtocolc                     y N )selfelementcompilerkws       W/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/alembic/util/sqla_compat.py__call__z_CompilerProtocol.__call__>   s        N)r;   r   r<   r   r=   r   returnstr)__name__
__module____qualname__r?   r9   r@   r>   r6   r6   =   s    Jr@   r6   c                ,    	 t        |       S #  | cY S xY wr8   )int)values    r>   	_safe_intrI   A   s    5zs   
 z(\d+|[abc]\d))      )rJ      )rJ   rL      )rJ   rL      )   )
_NONE_NAMEc                      e Zd ZdZy)_Unsupportedz.Placeholder for unsupported SQLAlchemy classesN)rC   rD   rE   __doc__r9   r@   r>   rR   rR   Y   s    4r@   rR   c                     y r8   r9   )r;   dialectss     r>   compilesrV   _   s    ;>r@   )rV   )ComputedT)rJ   rK      c                      e Zd Zy)rW   NrC   rD   rE   r9   r@   r>   rW   rW   k       r@   rW   F)Identityc                   | i S t         rA| j                         }|r-t        | t              sJ |j	                  | j
                         |S i }t        | t              r*| j                  |d<   | j                  | j                  |d<   d}|j	                  |D ci c]  }t        | |d       |t        | |d        c}       |S c c}w )Nalwayson_null)	start	incrementminvaluemaxvalue
nominvalue
nomaxvaluecyclecacheorder)
identity_has_dialect_kwargs_as_dict
isinstancer   updatedialect_kwargsr\   r^   r_   getattr)identityrm   as_dictattrskeys        r>   _get_identity_options_dictrs      s     I('')G!(M:::x6676 3 G(H-$,OO!##/)1)9)9GI&
E NN  %xd3? 355 s   "Cc                      e Zd Zy)r\   NrZ   r9   r@   r>   r\   r\   y   r[   r@   r\   )	_NoneName)symbolc                B    | t         u xs t        | t        t        f      S r8   )rP   rk   rB   ru   names    r>   constraint_name_definedrz      s      :CD3	2B!CCr@   c                "    t        | t              S r8   )rk   rB   rx   s    r>   constraint_name_stringr|      s     dC  r@   c                     t        |       r| S d S r8   )r|   rx   s    r>   constraint_name_or_noner~      s     *$/49T9r@   autoc              #     K   	 | j                   }|d  y  |       s"| J | j                         5  d  d d d        y d  y # t        $ r d }Y Bw xY w# 1 sw Y   y xY wwr8   )in_transactionAttributeErrorbegin
connectionr   s     r>   _ensure_scope_for_ddlr      sy     #22 )))!!#      s=   A"A "A"AA"AA"AA"AA"c                Z    t         r | j                  |      S  | j                  |      S )N)hide_password)sqla_14render_as_string__to_string__)r   r   s     r>   url_render_as_stringr      s+    #s##-@@ s  }==r@   c                @    t        |       }|r|S | j                         S r8   )_get_connection_transactionr   r   transactions     r>   "_safe_begin_connection_transactionr      s&     .j9K!!r@   c                @    t        |       }|r|j                          y y r8   )r   commitr   s     r>   #_safe_commit_connection_transactionr      s"     .j9K r@   c                @    t        |       }|r|j                          y y r8   )r   rollbackr   s     r>   %_safe_rollback_connection_transactionr      s"     .j9K r@   c                H    	 | j                   } |       S # t        $ r Y yw xY w)NF)r   r   r   s     r>   _get_connection_in_transactionr     s1     #22
 	  s    	!!c                    | j                   S r8   )expressions)idxs    r>   _idx_table_bound_expressionsr     s    ??r@   c                b    t        | d      r | j                  di |S  | j                  di |S )N_copyr9   )hasattrr   copy)schema_itemr=   s     r>   r   r     s8    {G$ {  &2&&{%"%%r@   c                ^    t         r| j                         S | j                  }|j                  S r8   )r   get_transaction_root_Connection__transaction)r   rs     r>   r   r     s-     ))++)))r@   c                     t        t        j                  d      rt        j                  j                  | i |S t        j                  | i |S )Ncreate)r   r   URLr   )argr=   s     r>   _create_urlr      s<    sww!ww~~s)b))ww"r""r@   c                ~    t         rt        |       j                  ||      S | j                  j                  | ||      S r8   )r   r   	has_tabledialect)connectable	tablename
schemanames      r>   _connectable_has_tabler   '  s?     {#--iDD"",,J
 	
r@   c                    t         r,| j                         5 }|j                  ||      cd d d        S | j                  j                  ||      S # 1 sw Y   y xY wr8   )r   _operation_contextexecutebind)	inspector	statementparamsconns       r>   _exec_on_inspectorr   2  sT    ))+ 	3t<<	62	3 	3 ~~%%i88	3 	3s   AAc                b    t         s| j                  S ddlm} | j                  |j
                  u S )Nr   r   )r   nullablesqlalchemy.sqlr   _user_defined_nullableNULL_UNSPECIFIED)metadata_columnr   s     r>   _nullability_might_be_unsetr   :  s/    ''') 22f6M6MM	
r@   c                 4    t         syt        d | D              S )NFc              3  <   K   | ]  }t        |t                y wr8   )rk   rW   .0sds     r>   	<genexpr>z._server_default_is_computed.<locals>.<genexpr>I       E:b(+E   )has_computedanyserver_defaults    r>   _server_default_is_computedr   E  s    EnEEEr@   c                 4    t         syt        d | D              S )NFc              3  <   K   | ]  }t        |t                y wr8   )rk   r\   r   s     r>   r   z._server_default_is_identity.<locals>.<genexpr>P  r   r   )r   r   r   s    r>   _server_default_is_identityr   L  s    EnEEEr@   c                ^    t        | t              r| j                  }|J |S | j                  S r8   )rk   r   parenttable)
constraintr   s     r>   _table_for_constraintr   S  s5    *23!!   r@   c                    t        | t              r$| j                  D cg c]  }|j                   c}S t        | t              rt        | j                        S t        | j                        S c c}w r8   )	rk   r   elementsr   r   _find_columnssqltextlistcolumns)r   fks     r>   _columns_for_constraintr   \  sY    *23$.$7$78b		88	J	0Z//00J&&''	 9s   A/c                V    t         r| j                  |d       S | j                  |d       S r8   )r   reflect_tablereflecttable)r   r   s     r>   _reflect_tabler   e  s0    &&ud33%%4
 	
r@   c                p    t        |       r*t        |       \  }}|j                  |j                  |      S | S r8   )_type_has_variants_get_variant_mappinggetry   )type_r   	base_typemappings       r>   _resolve_for_variantr   n  s3    % 1%8	7{{7<<33r@   _variant_mappingc                ,    t        | j                        S r8   )boolr   r   s    r>   r   r   x  s    E**++r@   c                    | | j                   fS r8   )r   r   s    r>   r   r   {  s    e,,,,r@   c                8    t        |       t        j                  u S r8   )typesqltypesVariantr   s    r>   r   r     s    E{h....r@   c                2    | j                   | j                  fS r8   )implr   r   s    r>   r   r     s    zz5==((r@   c           
        t         r8| j                  J | j                  J t        | j                  t
              sJ | j                  D cg c]  }| j                  |   j                   }}| j                  j                  }| j                  j                  }| j                  d   j                  j                  j                  }| j                  d   j                  j                  j                  }| j                  D cg c]  }|j                  j                   }}| j                  }	| j                  }
| j                  }| j                  }|||||||
|	||f
S c c}w c c}w )Nr   )r   r   r   rk   r   r&   column_keysry   r   columnr   ondeleteonupdate
deferrable	initially)r   rr   source_columnssource_tablesource_schematarget_schematarget_tabler;   target_columnsr   r   r   r   s                r>   _fk_specr    s\   !!---""...*++U333 1;0F0F),
3$$N  $$))L%%,,M''*1177>>M&&q)0066;;L9C9L9LMggnn))MNM""H""H&&J$$I  Ns    EE#c                    | j                   d   j                         }|j                  d      }|j                  d       dj	                  |      }| j
                  J || j
                  j                  k(  S )Nr   .)r   _get_colspecsplitpopjoinr   rr   )r   spectokenstablekeys       r>   _fk_is_self_referentialr    sj    q!..0DZZ_F
JJrNxxH(((z((,,,,r@   c                    | j                   S r8   )_type_bound)r   s    r>   _is_type_boundr    s     !!!r@   c                L    t               }t        | i d|j                  i       |S )z2locate Column objects within the given expression.r   )setr"   add)clausecolss     r>   r   r     s%     %(EDVR(DHH-.Kr@   c                    |j                   J | |j                      }t        | d      st        | d      r| j                  j                  |       y| j                  |       y)z(remove a column from a ColumnCollection.N
_immutable	_readonly)rr   r   _parentremove)
collectionr   	to_removes      r>   _remove_column_from_collectionr     sY     ::!!!6::&I z<(GJ,L!!),)$r@   c                b   t        |t              r-t        |t        j                        }| j                  |       |S t        |t              rt        | |      S t        |t              rt        | |j                        S t        |t        j                        rt        ||       S t        d      )zAa workaround for the Index construct's severe lack of flexibilityz#String or text() construct expected)rk   rB   r   r   NULLTYPEappend_columnr    _textual_index_element_textual_index_columntextr   r.   _copy_expression
ValueError)r   text_cs      r>   r%  r%    s     %5(++,A	E:	&%eU33	E1	2$UEJJ77	E3,,	-u-->??r@   c                <    fd}t        j                  | i |      S )Nc                    t        | t              ri| j                  ]| j                  urO| j                  j                  v rj                  | j                     S t        |       }j                  |       |S y r8   )rk   r   r   ry   r*  r   r#  )colr*  r  s     r>   replacez!_copy_expression.<locals>.replace  se    sF#		%		-xx<>>)#~~chh//#J**1-r@   )r   replacement_traverse)
expressionr  r.  s    ` r>   r'  r'    s$     ((B r@   c                  "    e Zd ZdZdZddZd Zy)r$  aQ  Wrap around a sqlalchemy text() construct in such a way that
    we appear like a column-oriented SQL expression to an Index
    construct.

    The issue here is that currently the Postgresql dialect, the biggest
    recipient of functional indexes, keys all the index expressions to
    the corresponding column expressions when rendering CREATE INDEX,
    so the Index we create here needs to have a .columns collection that
    is the same length as the .expressions collection.  Ultimately
    SQLAlchemy should support text() expressions in indexes.

    See SQLAlchemy issue 3174.

    _textual_idx_elementc                    || _         || _        |j                  | _        t        j                  | j                  j                  t
        j                        | _        |j                  | j                         y r8   )	r   r&  rr   r   r   r   r"  fake_columnr#  )r:   r   r&  s      r>   __init__z_textual_index_element.__init__  sP    
	99!==9J9JKD,,-r@   c                    | j                   gS r8   )r4  )r:   r=   s     r>   get_childrenz#_textual_index_element.get_children  s      !!r@   N)r   r&   r&  r    rA   None)rC   rD   rE   rS   __visit_name__r5  r7  r9   r@   r>   r$  r$    s     ,N."r@   r$  c                <     |j                   | j                  fi |S r8   )processr&  r;   r<   r=   s      r>   _render_textual_index_columnr=    s      8GLL/B//r@   c                      e Zd Zy)_literal_bindparamNrZ   r9   r@   r>   r?  r?    s    r@   r?  c                (     |j                   | fi |S r8   )render_literal_bindparamr<  s      r>   _render_literal_bindparamrB  !  s     -8,,W;;;r@   c                *    t         r| j                  S i S r8   )sqla_13kwargs)r-  s    r>   _column_kwargsrF  (  s    zz	r@   c                   | j                   y |J t        r|j                  j                  | d      S t	        | j                   d      rt        | j                         }nt        } |t        | j                         d      }| j                  |      } t        | t        j                        r#|j                  |d       }|j                  |       S |j                  j                  |       S )NF_alembic_quotequote)rJ  rx   )ry   r   identifier_preparerformat_constraintr   r   r   rB   	__class__rk   r   r%   ddl_compiler_prepared_index_name)r   r   quoted_name_clsnew_nameds        r>   _get_constraint_final_namerS  /  s      **<<u = 
 	
 :??G, %)$9O)O"3z#7uE))x)8
j&,,/$$Wd3A))*55 ..@@LLr@   c                    t         r2| j                  y|J |j                  j                  | d      }|d uS | j                  d uS )NFrH  )r   ry   rK  rL  )r   r   ry   s      r>   _constraint_is_namedrU  T  s\     ??""""**<<u = 
 4d**r@   c                l    t         r| j                  S t        | j                  xr | j                        S r8   )r   
is_mariadbr   server_version_info_is_mariadbmysql_dialects    r>   rY  rY  c  s5    '''-- *))
 	
r@   c                    | j                   S r8   ) _mariadb_normalized_version_inforZ  s    r>   r]  r]  m  s    999r@   c                n    t         r| j                         j                         S | j                  d      S )NT)inline)r   insertr_  )r   s    r>   _insert_inlinera  q  s+    ||~$$&&||4|((r@   )create_mock_engine)selectcreate_enginec                    t        dd|      S )Nzpostgresql://mock)strategyexecutorrd  )r   ri  r=   s      r>   rb  rb    s    fx
 	
r@   c                 @    t        j                  t        |       fi |S r8   )r   rc  r   )r   r=   s     r>   _selectrk    s    zz$w-.2..r@   c                @    | j                   D ]  }t        |      s y yNTF)r   is_expression)indexexprs     r>   is_expression_indexrq    s'    !!  r@   c                    t        | t              r| j                  } t        | t              rt        | t              r| j                  ryyrm  )rk   r!   r;   r   
is_literal)rp  s    r>   rn  rn    s7    
T?
+|| T?
+dL)T__r@   )rH   rB   rA   zUnion[int, str])r;   zType[ClauseElement]rU   rB   rA   z0Callable[[_CompilerProtocol], _CompilerProtocol])F)ro   z&Union[Identity, schema.Sequence, None]rm   r   rA   zDict[str, Any])ry   _ConstraintNamerA   z!TypeGuard[_ConstraintNameDefined])ry   rt  rA   zTypeGuard[str])ry   rt  rA   Optional[str])r   Optional[Connection]rA   zIterator[None])T)r   r'   rA   r)   )r   r'   rA   r8  )r   rv  rA   r   )r   r%   rA   zIterable[ColumnElement[Any]])r   r3   rA   r3   )r   r'   rA   zOptional[Transaction])rA   zurl.URL)r   r'   r   rB   r   zUnion[str, None]rA   r   )rA   r   )r   r/   rA   r&   )r   r*   r   r&   rA   r8  )r   r   rA   r   )r   r   rA   r   )r   r/   rA   r   )r  r+   r   z%Union[Column[Any], ColumnClause[Any]]rA   r8  )r   r&   r)  z*Union[str, TextClause, ColumnElement[Any]]rA   z&Union[ColumnElement[Any], Column[Any]])r0  r3   r  r&   rA   r3   )r;   r$  r<   r,   rA   rB   )r;   r?  r<   r,   rA   rB   )r-  r   rA   r	   )r   zUnion[Index, Constraint]r   Optional[Dialect]rA   ru  )r   zUnion[Constraint, Index]r   rw  rA   r   )r[  r(   rA   r   )r   zUnion[TableClause, Table]rA   r-   )rA   r1   )ro  r%   rA   r   )rp  r   rA   r   )
__future__r   
contextlibretypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   
sqlalchemyr   r   r   r   r   r   sqlalchemy.enginer   sqlalchemy.schemar   r   r   r   r   sqlalchemy.sql.baser   sqlalchemy.sql.elementsr   r   r   r    r!   sqlalchemy.sql.visitorsr"   typing_extensionsr#   r$   r%   r&   r'   r(   r)   sqlalchemy.engine.reflectionr*   r+   sqlalchemy.sql.compilerr,   sqlalchemy.sql.dmlr-   r.   sqlalchemy.sql.schemar/   r0   sqlalchemy.sql.selectabler1   r2   r3   r6   rI   tuplefindall_versrD  r   
sqla_14_18
sqla_14_26sqla_2sqlalchemy_versionsqlalchemy.sql.namingrP   ImportErrorrR   rV   sqlalchemy.ext.compilerrW   r   has_computed_reflectionr\   
issubclassri   rs   has_identityru   sqlalchemy.utilrv   rB   rt  _ConstraintNameDefinedrz   r|   r~   AUTOINCREMENT_DEFAULTcontextmanagerr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
TypeEnginer   r   r  r  r  r   r   r%  r'  r$  r=  r?  rB  rF  rS  rU  rY  r]  ra  rb  rc  
_sa_selectrk  re  rq  rn  )xs   0r>   <module>r     s   #  	               "    ( ! - $ 2 # - 1 0 / . 3 , '(  ,)-643)50005e5!CDEK K 	%2::&6DEaYq\E	 6/
6/j 
j 
	$  A>
5 5 ?$?14?	9?
 12/ L#z13/ #-X}"E  %%8%% 
%N L	-3 c9,-sI~. D
D&D!
!!:
::   $ ,>"""		 &***#

(+
9I
	
9
FF (
 8 23,-
/)B-"% %*O%	%$@@C@+@$*"S.. ": 

 !0#0/:00 "0	 	 

<<+6<< <"M("M3D"M"MJ+(+3D+	+
:) - 0G(

/S F  A@@A&  $	| 	 L#$  	| 	 Ls<   M
M# .M5 <N #M21M25NNN*)N*