
    Eh&                    D   % S SK Jr  S SKrS SKJr  S SKrS SK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 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.  \R^                  " 5       r0\0Rc                  S/5         " S S\5      r " S  S!\\5      rS"\l2        S+S# jr30 r4S$\5S%'   \S& 5       r6\S' 5       r7     S,S( jr8 " S) S*5      r9g)-    )annotationsN)contextmanager)Any)Dict)Columncreate_mock_engine)inspect)MetaData)String)Table)testing)text)config)mock)eq_)FutureEngineMixin)
TablesTest)TestBase   )_get_dialect)_get_staging_directory   )EnvironmentContext)MigrationContext)
Operations)sqla_compat)sqla_2ztest.cfgc                     \ rS rSr\r\R                  " 5       S 5       r\	S 5       r
\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       rS	rg
)r   (   c              #    #    S v   [        5       n[        R                  " U5       H  n[        R                  R	                  X5      n[        R                  R                  U5      (       d$  [        R                  R                  U5      (       a  [        R                  " U5        M  [        R                  R                  U5      (       d  M  [        R                  " U5        M     g 7fN)r   oslistdirpathjoinisfileislinkunlinkisdirshutilrmtree)selflocationfilename	file_paths       [/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/alembic/testing/fixtures.pyclear_staging_dirTestBase.clear_staging_dir+   s     )+

8,HX8Iww~~i((BGGNN9,E,E		)$y))i( -s   C	C*C*c              #     #    [         R                  " 5       n [         R                  " U5        S v   [         R                  " U5        g ! [         R                  " U5        f = f7fr"   )r#   getcwdchdir)r-   dirnamecurrent_dirs      r1   pushdTestBase.pushd6   s<     iik	"HHWHH[!BHH[!s   A%A
 A%
A""A%c              #  T   #    S v   [         R                  R                  SS 5        g 7f)NALEMBIC_CONFIG)r#   environpopr-   s    r1   pop_alembic_config_envTestBase.pop_alembic_config_env?   s     


'.s   &(c              #  x   #    UR                  SS9   [        U5      v   S S S 5        g ! , (       d  f       g = f7f)NT)_per_migration)begin_transactionr   )r-   migration_contexts     r1   ops_contextTestBase.ops_contextD   s.     000E.// FEEs   :)	:
7:c                :    [         R                  " U[        SS9S9$ )NT)transaction_per_migrationoptsr   	configuredictr-   
connections     r1   rE   TestBase.migration_contextI   s    ))TDA
 	
    c                <    [         R                  " U[        SSS9S9$ )NT)rI   as_sqlrJ   rL   rO   s     r1   as_sql_migration_context!TestBase.as_sql_migration_contextO   s!    ))TDN
 	
rR   c              #     #    [         R                  R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr"   )r   dbconnect)r-   conns     r1   rP   TestBase.connectionU   s'     YY DJ !  s   A /	A 
=A  N)__name__
__module____qualname____firstlineno__r   is_sqlalchemy_futurer   fixturer2   r   r9   r@   rF   rE   rU   rP   __static_attributes__r\   rR   r1   r   r   (   s    !__) ) " " __/ / __0 0 __
 

 __
 

 __ rR   r   c                      \ rS rSrSrg)r   [   r\   N)r]   r^   r_   r`   rc   r\   rR   r1   r   r   [   s    rR   r   Tc                6   ^^ / mUU4S jn[        X5      mTT4$ )Nc                h   > TR                  [        U R                  TR                  S95      5        g N)dialect)appendstrcompileri   )sqlmultiparamsparamsbufengines      r1   dumpcapture_db.<locals>.dumpe   s#    

3s{{6>>{:;<rR   r   )ri   rr   rp   rq   s     @@r1   
capture_dbrt   b   s#    
C=  .F3;rR   zDict[Any, Any]_engsc               +  p  ^ ^#    T R                  SS5      (       a  [        R                  " 5       nO[        R                  " 5       nT R	                  SUS.5        [
        R                  mUU 4S jn[        R                  R                  [
        SU5         Uv   S S S 5        g ! , (       d  f       g = f7f)Nbytes_ioFsqlite)dialect_nameoutput_bufferc                 8   > UR                   " S0 TD6  T" U 0 UD6$ Nr\   updateargoptconfkws     r1   rM   )capture_context_buffer.<locals>.configurey   "    

RS C  rR   rM   )
r>   ioBytesIOStringIOr~   r   rM   r   patchobject)r   rp   rM   r   s   `  @r1   capture_context_bufferr   o   sx     	vvj%  jjlkkmIIx#>?''D! 
		-{I	F	 
G	F	Fs   BB6B%	B6%
B3/B6c               +    ^ ^^#    SSK Jn  SSKJn  [        R
                  " 5       mU" 5       nUR                  5       nUR                  US5      U4S j5       nT R                  SU05        [        R                  mUU 4S jn[        R                  R                  [        S	U5         Tv   S S S 5        g ! , (       d  f       g = f7f)
Nr   )_sqlite_file_dbr   )eventbefore_cursor_executec                .   > TR                  US-   5        g )N
)write)rZ   cursor	statement
parameterscontextexecutemanyrp   s         r1   bce*capture_engine_context_buffer.<locals>.bce   s    		)d"#rR   rP   c                 8   > UR                   " S0 TD6  T" U 0 UD6$ r|   r}   r   s     r1   rM   0capture_engine_context_buffer.<locals>.configure   r   rR   rM   )envr   
sqlalchemyr   r   r   rY   listens_forr~   r   rM   r   r   r   )	r   r   r   engrZ   r   rM   rp   r   s	   `      @@r1   capture_engine_context_bufferr      s     $ 
++-C

C;;=D
t45$ 6$ II|T"#''D! 
		-{I	F	 
G	F	Fs   B#C(B6-	C6
C Cc                  ^^^ 0 nU(       a  [        US9US'    " U4S jS5      nU" 5       m " U4S jS[        5      nT(       a  TUS'   U(       a  X5S'   [        U 5      mUb  UTl        S	Tl        T(       d  UU4S
 jn[
        R                  " TUS9n	OTUS'   S n	U" TX5      n
[        U
5      [        R                  l
        U
$ )N)naming_conventiontarget_metadatac                  .   > \ rS rSrS rU 4S jrS rSrg)op_fixture.<locals>.buffer_   c                    / U l         g r"   linesr?   s    r1   __init__$op_fixture.<locals>.buffer_.__init__   s	    DJrR   c                   > UR                  5       n[        R                  " SSU5      nT(       a0  [        R                  " SSU5      n[        R                  " SSU5      nU R                  R	                  U5        g )N[\n\t] z    z\;\n*$)stripresubr   rj   )r-   msgrT   s     r1   r   !op_fixture.<locals>.buffer_.write   s[    ))+C&&B,C ffWb#.ffYC0JJc"rR   c                    g r"   r\   r?   s    r1   flush!op_fixture.<locals>.buffer_.flush   s    rR   r   N)r]   r^   r_   r`   r   r   r   rc   )rT   s   r1   buffer_r      s    			#	rR   r   c                  F   > \ rS rSrU 4S jrU 4S jrU 4S jrU 4S jrSrg)op_fixture.<locals>.ctx   c                   > T$ r"   r\   r-   rp   s    r1   get_bufop_fixture.<locals>.ctx.get_buf   s    JrR   c                $   > / TR                   S S & g r"   r   r   s    r1   clear_assertions(op_fixture.<locals>.ctx.clear_assertions   s    CIIaLrR   c                   > [        TR                  U Vs/ s H  n[        R                  " SSU5      PM     sn5        g s  snf )Nr   r   )r   r   r   r   )r-   rm   srp   s      r1   assert_op_fixture.<locals>.ctx.assert_   s2     		cBcBFF9b!4cBCBs   "A 
c                   > TR                    H!  n[        R                  " SSU5      U;   d  M!    g     SU< STR                   < 35       e)Nr   r   zCould not locate fragment z in )r   r   r   )r-   rm   stmtrp   s      r1   assert_contains'op_fixture.<locals>.ctx.assert_contains   sD    		66)R-5 "II urR   r\   N)	r]   r^   r_   r`   r   r   r   r   rc   )rp   s   r1   ctxr      s    			D
	 	rR   r   rT   literal_bindsTc                   > [        U [        5      (       a  [        U 5      n U R                  (       d   e[        U R	                  TS95      nTR                  U5        g rh   )
isinstancerk   r   supports_executionrl   r   )r   
multiparamparamrm   rp   ctx_dialects       r1   executeop_fixture.<locals>.execute   sH    $$$Dz****dll;l78CIIcNrR   )ri   r   rz   )r   r   r   supports_native_boolean#non_native_boolean_check_constraintr   Mockr   alembicop_proxy)ri   rT   r   r   native_booleanrK   r   r   r   rP   r   rp   r   s    `         @@r1   
op_fixturer      s     D"*=N"O $ )C , X -_w'K!.<+ ;?7	 YY{GD
 #_
+z0G"7+GJJNrR   c                  :    \ rS rSrSrS rS rS rS rS
S jr	S	r
g)AlterColRoundTripFixture   )alter_columnc                    [         R                  R                  5       U l        [        R
                  " U R                  5      U l        [        U R                  5      U l        [        5       U l
        g r"   )r   rX   rY   rZ   r   rM   r   r   r   r   metadatar?   s    r1   setUpAlterColRoundTripFixture.setUp   sE    II%%'	#--dii8TXX& 
rR   c                    [        SU5      n[        SU5      nU R                  R                  R                  X45      (       a   SU< SU< S35       eg )NqzType objects  and  didn't compare as equivalent)r   r   implcompare_type)r-   t1t2c1c2s        r1   _compare_type&AlterColRoundTripFixture._compare_type   sT    C_C_88==--
 
 	LDFK	L 
 
rR   c                    [        SXS9n[        SX4S9nU R                  R                  R                  XVXB5      (       a   SU< SU< S35       eg )Nr   )server_defaultzserver defaults r   r   )r   r   r   compare_server_default)r-   r   s1r   s2r   r   s          r1   _compare_server_default0AlterColRoundTripFixture._compare_server_default  sX    C/C/88==77B
 
 	OGI2N	O 
 
rR   c                *   [         R                  " U R                  5        U R                  R                  5          U R                  R                  U R                  5        S S S 5        U R                  R                  5         g ! , (       d  f       N)= fr"   )r   %_safe_rollback_connection_transactionrZ   beginr   drop_allcloser?   s    r1   tearDown!AlterColRoundTripFixture.tearDown
  sT    99$))DYY__MM""499- 		 s   &B
BNc                n   [        UR                  SS5      UR                  S[        S5      5      UR                  SS5      UR                  SS 5      S9n[        S	U R                  U5      n[
        R                  " U R                  5         UR                  U R                  5        [        U R                  5      nUR                  S	5      S
   nU R                  R                  S	UR                  UR                  UR                  b  UR                  OSUR                   (       a  SOSUR                  SS 5      UR                  SS5      UR                  SS 5      UR                  SS 5      S9	  S S S 5        [        U R                  5      nUR                  S	5      S
   nUc  Un[#        US   SU;   a  US   OUR                  5        U R%                  US   UR                  SWS   5      5        [#        US   UR                  SUR                   5      5        U R'                  US   UR                  SS 5      UR                  SUS   5      SU;   a  US   R(                  5        g UR                  b%  UR                  R*                  R(                  5        g S 5        g ! , (       d  f       GN9= f)Nnamecolnametype
   nullableTr   )r  r   xr   F)existing_typeexisting_server_defaultexisting_nullabler  r   new_column_nametype_default)r   getr   r   r   r   _ensure_scope_for_ddlrZ   creater
   get_columnsr   r   r   r  r   r  r   r   r   r   r   )	r-   from_to_comparecolumntinspold_colnew_cols	            r1   _run_alter_col'AlterColRoundTripFixture._run_alter_col  sY   IIfi(IIffRj)YYz40 99%5t<	
 #t}}f-..tyy9HHTYY499%D&&s+A.G GG  $kk ,,8 ))*0//$uT2"ww'7? # 5ggfd+ !  :0 tyy!""3'*?GFO%0GFOfkk	
 	FOW[[A	
 	GJZ!IJ$$FOKK	4(KK0 $w. ()..	
 ,,8 ))--22	
 	
M :9s   C&J%%
J4)rZ   r   r   r   r"   )r]   r^   r_   r`   __requires__r   r   r   r   r  rc   r\   rR   r1   r   r      s$    
 %L#LO=
rR   r   )zpostgresql://)r
  FNFN):
__future__r   configparser
contextlibr   r   r#   r   r+   typingr   r   r   r   r	   r
   r   r   r   r   r   sqlalchemy.testingr   r   sqlalchemy.testing.assertionsr   sqlalchemy.testing.fixturesr   r   SQLAlchemyTablesTestr   SQLAlchemyTestBaser   
assertionsr   r   r   environmentr   	migrationr   
operationsr   utilr   util.sqla_compatr   ConfigParsertesting_configreadra   rt   ru   __annotations__r   r   r   r   r\   rR   r1   <module>r-     s   "  % 	 	 	     )       % # - 9 J F  $ ' , ( #  %**,   ZL !0! 0f	/ 	 *.  & ~   "  4 Qh^
 ^
rR   