
    Eh9                        S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SK$J%r%  S SK&J'r'  S SK(J)r)  \(       aH  S SKJ*r*  S S KJ+r+  S S!KJ,r,  S S"KJ-r-  S S#K.J/r/  S S$K.J0r0  S S%K.J1r1  S S&KJ2r2  S S'K3J4r4  S S(KJ5r5  S S)K6J7r7  S S*K6J8r8  \" S+\S,   S-9r9 " S. S/\5      r:ScS0 jr;\<" \Rz                  " S1\5       V s/ s H  n \;" U 5      PM     sn 5      r>\>S2:  r?\>S3:  r@\>S4:  rA\rB\(       a        SdS5 jrCOS S6KDJCrC  \E" \RV                  \5      rF Se     SfS7 jjrG\A(       a  S S8KJHrH  OS S9KIJJrH  \S\K\H4   rL\\K\H4   rM    SgS: jrNShS; jrOSiS< jrPS=rQ\R                      SjS> j5       rS    SkS? jrT    SlS@ jrU    SlSA jrVSmSB jrWSnSC jrXSoSD jrY        SpSE jrZSF r[SG r\SqSH jr]SqSI jr^SrSJ jr_SK r`SL ra\b" \R                  SM5      (       a  SN rdSO reOSP rdSQ reSsSR jrfStSS jrgSuST jrhSU ri      SvSV jrj      SwSW jrkSxSX jrl " SY SZ\Rj                  5      rm\C" \m5            SyS[ j5       rn " S\ S]\ 5      ro\C" \o5            SzS^ j5       rp      S{S_ jrq      S|S` jrrS}Sa jrsS~Sb jrtgs  sn f )    )annotationsN)Any)Callable)Dict)Iterable)Iterator)Optional)Protocol)Set)Type)TYPE_CHECKING)TypeVar)Union)__version__schema)sql)types)CheckConstraint)Column)ForeignKeyConstraint)visitors)DialectKWArgs)BindParameter)ColumnClause)
TextClause)UnaryExpression)
_NONE_NAME)traverse)	TypeGuard)ClauseElement)Identity)Index)Table)
Connection)Dialect)Transaction)ColumnCollection)SQLCompiler)ColumnElement)
Constraint)
SchemaItem_CE)zColumnElement[Any]r,   )boundc                      \ rS rSrSS jrSrg)_CompilerProtocol7   c                    g N )selfelementcompilerkws       [/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/alembic/util/sqla_compat.py__call___CompilerProtocol.__call__8   s    s    r4   N)r6   r   r7   r   r8   r   returnstr)__name__
__module____qualname____firstlineno__r:   __static_attributes__r4   r<   r9   r0   r0   7   s    Jr<   r0   c                ,     [        U 5      $ !   U s $ = fr3   )int)values    r9   	_safe_intrG   ;   s    5zs   
 z(\d+|[abc]\d))         )rH   rI      )   c                    g r3   r4   )r6   dialectss     r9   compilesrO   M   s    ;>r<   )rO   c                    U c  0 $ [         (       a^  [        U S5      (       d   eU R                  5       nU(       a2  [        U [        5      (       d   eUR                  U R                  5        U$ 0 n[        U [        R                  5      (       a+  U R                  US'   U R                  b  U R                  US'   SnUR                  U Vs0 s H  n[        XS 5      c  M  U[        XS 5      _M!     sn5        U$ s  snf )N_as_dictalwayson_null)	start	incrementminvaluemaxvalue
nominvalue
nomaxvaluecyclecacheorder)identity_has_dialect_kwargshasattrrQ   
isinstancer   updatedialect_kwargsr   r"   rR   rS   getattr)identityra   as_dictattrskeys        r9   _get_identity_options_dictrg   X   s     		$	$x,,,,##%h6666NN82236 N3 h00 (GH+%-%5%5	"

 	 ! C8$/ 2WXD11 	
 Ns   C;!C;)	_NoneName)symbolc                L    U [         L =(       d    [        U [        [        45      $ r3   )r   r_   r>   rh   names    r9   constraint_name_definedrm      s      :CD3	2B!CCr<   c                "    [        U [        5      $ r3   )r_   r>   rk   s    r9   constraint_name_stringro      s    dC  r<   c                *    [        U 5      (       a  U $ S $ r3   )ro   rk   s    r9   constraint_name_or_nonerq      s    )$//49T9r<   autoc              #     #     U R                   nUc  S v   g U" 5       (       d#  U c   eU R                  5          S v   S S S 5        g S v   g ! [         a    S n NJf = f! , (       d  f       g = f7fr3   )in_transactionAttributeErrorbegin
connectionrt   s     r9   _ensure_scope_for_ddlry      sr     #22 )))!!# $#    $#s=   A/A )A/AA/AA/AA/
A,(A/c                T    U R                  5       nU(       a  U$ U R                  5       $ r3   )get_transactionrv   rx   transactions     r9   "_safe_begin_connection_transactionr~      s*     ,,.K!!r<   c                T    U R                  5       nU(       a  UR                  5         g g r3   )r{   commitr|   s     r9   #_safe_commit_connection_transactionr      s&     ,,.K r<   c                T    U R                  5       nU(       a  UR                  5         g g r3   )r{   rollbackr|   s     r9   %_safe_rollback_connection_transactionr      s&     ,,.K r<   c                J     U R                   nU" 5       $ ! [         a     gf = f)NF)rt   ru   rw   s     r9   _get_connection_in_transactionr      s1     #22
 	  s    
""c                    U R                   $ r3   )expressions)idxs    r9   _idx_table_bound_expressionsr      s    ??r<   c                l    [        U S5      (       a  U R                  " S0 UD6$ U R                  " S0 UD6$ )N_copyr4   )r^   r   copy)schema_itemr8   s     r9   r   r      s7    {G$$  &2&&%"%%r<   c                :    U R                   R                  XU5      $ r3   )dialect	has_table)connectable	tablename
schemanames      r9   _connectable_has_tabler      s     ((LLr<   c                z    U R                  5        nUR                  X5      sS S S 5        $ ! , (       d  f       g = fr3   )_operation_contextexecute)	inspector	statementparamsconns       r9   _exec_on_inspectorr      s(    		%	%	'4||I. 
(	'	's   ,
:c                >    SSK Jn  U R                  UR                  L $ )Nr   r   )sqlalchemy.sqlr   _user_defined_nullableNULL_UNSPECIFIED)metadata_columnr   s     r9   _nullability_might_be_unsetr      s    %11V5L5LLLr<   c                 &    [        S U  5       5      $ )Nc              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7fr3   )r_   r   Computed.0sds     r9   	<genexpr>._server_default_is_computed.<locals>.<genexpr>        H2z"foo..   ')anyserver_defaults    r9   _server_default_is_computedr          HHHHr<   c                 &    [        S U  5       5      $ )Nc              3  V   #    U  H  n[        U[        R                  5      v   M!     g 7fr3   )r_   r   r"   r   s     r9   r   ._server_default_is_identity.<locals>.<genexpr>   r   r   r   r   s    r9   _server_default_is_identityr      r   r<   c                j    [        U [        5      (       a  U R                  nUc   eU$ U R                  $ r3   )r_   r   parenttable)
constraintr   s     r9   _table_for_constraintr      s8    *233!!   r<   c                    [        U [        5      (       a&  U R                   Vs/ s H  oR                  PM     sn$ [        U [        5      (       a  [        U R                  5      $ [        U R                  5      $ s  snf r3   )	r_   r   elementsr   r   _find_columnssqltextlistcolumns)r   fks     r9   _columns_for_constraintr     sc    *233$.$7$78$7b		$788	J	0	0Z//00J&&''	 9s   A;c                x    [        U 5      (       a)  [        U 5      u  p#UR                  UR                  U5      $ U $ r3   )_type_has_variants_get_variant_mappinggetrl   )type_r   	base_typemappings       r9   _resolve_for_variantr     s4    %  1%8	{{7<<33r<   _variant_mappingc                ,    [        U R                  5      $ r3   )boolr   r   s    r9   r   r     s    E**++r<   c                    X R                   4$ r3   )r   r   s    r9   r   r     s    ,,,,r<   c                8    [        U 5      [        R                  L $ r3   )typesqltypesVariantr   s    r9   r   r     s    E{h....r<   c                2    U R                   U R                  4$ r3   )implr   r   s    r9   r   r   "  s    zz5==((r<   c           
        [         (       a?  U R                  c   eU R                  c   e[        U R                  [
        5      (       d   eU R                   Vs/ s H  oR                  U   R                  PM     nnU R                  R                  nU R                  R                  nU R                  S   R                  R                  R                  nU R                  S   R                  R                  R                  nU R                   Vs/ s H  owR                  R                  PM     nnU R                  n	U R                  n
U R                  nU R                  nUUUUUUU
U	UU4
$ s  snf s  snf )Nr   )r   r   r   r_   r   r$   column_keysrl   r   columnr   ondeleteonupdate
deferrable	initially)r   rf   source_columnssource_tablesource_schematarget_schematarget_tabler6   target_columnsr   r   r   r   s                r9   _fk_specr   &  sc   }!!---""...*++U3333 1;0F0F0F3$$0F   $$))L%%,,M''*1177>>M&&q)0066;;L9C9L9LM9Lgnn))9LNM""H""H&&J$$I  Ns   "E.E3c                    U R                   S   R                  5       nUR                  S5      nUR                  S5        SR	                  U5      nU R
                  c   eX0R
                  R                  :H  $ )Nr   .)r   _get_colspecsplitpopjoinr   rf   )r   spectokenstablekeys       r9   _fk_is_self_referentialr   G  sh    q!..0DZZ_F
JJrNxxH(((((,,,,r<   c                    U R                   $ r3   )_type_bound)r   s    r9   _is_type_boundr   P  s     !!!r<   c                L    [        5       n[        U 0 SUR                  05        U$ )z2locate Column objects within the given expression.r   )setr   add)clausecolss     r9   r   r   W  s%     %(EDVR(DHH-.Kr<   c                    UR                   c   eXR                      n[        U S5      (       d  [        U S5      (       a  U R                  R                  U5        gU R                  U5        g)z(remove a column from a ColumnCollection.N
_immutable	_readonly)rf   r^   _parentremove)
collectionr   	to_removes      r9   _remove_column_from_collectionr   _  s]     ::!!!::&I z<((GJ,L,L!!),)$r<   c                   [        U[        5      (       a-  [        U[        R                  5      nU R                  U5        U$ [        U[        5      (       a  [        X5      $ [        U[        5      (       a  [        XR                  5      $ [        U[        R                  5      (       a  [        X5      $ [        S5      e)zAa workaround for the Index construct's severe lack of flexibilityz#String or text() construct expected)r_   r>   r   r   NULLTYPEappend_columnr   _textual_index_element_textual_index_columntextr   r*   _copy_expression
ValueError)r   text_cs      r9   r  r  q  s     %5(++,A	E:	&	&%e33	E1	2	2$UJJ77	E3,,	-	--->??r<   c                @   ^ U4S jn[         R                  " U 0 U5      $ )Nc                
  > [        U [        5      (       am  U R                  b`  U R                  TLaQ  U R                  TR                  ;   a  TR                  U R                     $ [        U 5      nTR                  U5        U$ g r3   )r_   r   r   rl   r
  r   r  )colr
  r   s     r9   replace!_copy_expression.<locals>.replace  sh    sF##		%		-xx<>>)#~~chh//#J**1-r<   )r   replacement_traverse)
expressionr   r  s    ` r9   r  r    s$     ((B r<   c                  ,    \ rS rSrSrSrSS jrS rSrg)	r  i  a)  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                    Xl         X l        UR                  U l        [        R                  " U R                  R                  [
        R                  5      U l        UR                  U R                  5        g r3   )	r   r  rf   r   r   r   r  fake_columnr  )r5   r   r  s      r9   __init___textual_index_element.__init__  sL    
	99!==9J9JKD,,-r<   c                    U R                   /$ r3   )r  )r5   r8   s     r9   get_children#_textual_index_element.get_children  s      !!r<   )r  rf   r   r  N)r   r$   r  r   r=   None)	r?   r@   rA   rB   __doc____visit_name__r  r  rC   r4   r<   r9   r  r    s     ,N."r<   r  c                <    UR                   " U R                  40 UD6$ r3   )processr  r6   r7   r8   s      r9   _render_textual_index_columnr!    s     GLL/B//r<   c                      \ rS rSrSrg)_literal_bindparami  r4   N)r?   r@   rA   rB   rC   r4   r<   r9   r#  r#    s    r<   r#  c                (    UR                   " U 40 UD6$ r3   )render_literal_bindparamr   s      r9   _render_literal_bindparamr&    s     ,,W;;;r<   c                \    U R                   c  g Uc   eUR                  R                  U SS9$ NF)_alembic_quoterl   identifier_preparerformat_constraint)r   r   s     r9   _get_constraint_final_namer-    sB      &&885 9  r<   c                d    U R                   c  gUc   eUR                  R                  U SS9nUS L$ r(  r*  )r   r   rl   s      r9   _constraint_is_namedr/    sJ     &&885 9 D tr<   c                N    U R                    H  n[        U5      (       d  M    g   gNTF)r   is_expression)indexexprs     r9   is_expression_indexr5    s%    !! " r<   c                    [        U [        5      (       a#  U R                  n [        U [        5      (       a  M#  [        U [        5      (       a  U R                  (       a  ggr1  )r_   r   r6   r   
is_literal)r4  s    r9   r2  r2    s@    
T?
+
+|| T?
+
+dL))T__r<   )rF   r>   r=   zUnion[int, str])r6   zType[ClauseElement]rN   r>   r=   z0Callable[[_CompilerProtocol], _CompilerProtocol])F)rc   z&Union[Identity, schema.Sequence, None]ra   r   r=   zDict[str, Any])rl   _ConstraintNamer=   z!TypeGuard[_ConstraintNameDefined])rl   r8  r=   zTypeGuard[str])rl   r8  r=   Optional[str])rx   Optional[Connection]r=   zIterator[None])rx   r%   r=   r'   )rx   r%   r=   r  )rx   r:  r=   r   )r   r#   r=   zIterable[ColumnElement[Any]])r   r-   r=   r-   )r   r%   r   r>   r   zUnion[str, None]r=   r   )r=   r   )r   r+   r=   r$   )r   r   r=   r   )r   r   r=   r   )r   r+   r=   r   )r   r(   r   z%Union[Column[Any], ColumnClause[Any]]r=   r  )r   r$   r	  z*Union[str, TextClause, ColumnElement[Any]]r=   z&Union[ColumnElement[Any], Column[Any]])r  r-   r   r$   r=   r-   )r6   r  r7   r)   r=   r>   )r6   r#  r7   r)   r=   r>   )r   zUnion[Index, Constraint]r   Optional[Dialect]r=   r9  )r   zUnion[Constraint, Index]r   r;  r=   r   )r3  r#   r=   r   )r4  r   r=   r   )u
__future__r   
contextlibretypingr   r   r   r   r   r	   r
   r   r   r   r   r   
sqlalchemyr   r   r   r   r   sqlalchemy.schemar   r   r   r   r   sqlalchemy.sql.baser   sqlalchemy.sql.elementsr   r   r   r   sqlalchemy.sql.namingr   sqlalchemy.sql.visitorsr   typing_extensionsr    r!   r"   r#   r$   sqlalchemy.enginer%   r&   r'   r(   sqlalchemy.sql.compilerr)   r*   sqlalchemy.sql.schemar+   r,   r-   r0   rG   tuplefindall_vers
sqla_14_18
sqla_14_26sqla_2sqlalchemy_versionrO   sqlalchemy.ext.compiler
issubclassr]   rg   rh   sqlalchemy.utilri   r>   r8  _ConstraintNameDefinedrm   ro   rq   AUTOINCREMENT_DEFAULTcontextmanagerry   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#  r&  r-  r/  r5  r2  )xs   0r9   <module>rY     s   #  	              "   ( - $ 2 # - 1 0 . 3 : , '(#  ,)-43500e5!CDEK K 	::&6DEDaYq\DE	 j 
j 
	$  ?$?14?	9?
 1 )-H 
 !&4&& &R 
-3 c9,-sI~. D
D&D!:   $ ,"""		 &MM(+M9IM	M/
MII ( 8 233,-
/)B-"% %*O%	%$@@C@+@$*"S.. ": 

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

<<+6<< <(3D 	(	3D			O Fs   7K;