
    c?i.                       % 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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K0J1r1  SS K2J3r3  \Rh                  " 5       r5\5Rm                  S!/5         " S" S#\"5      r!Sq7 " S$ S%\!\ 5      rS&\l8        S1S' jr90 r:S(\;S)'   \\      S2S* j5       5       r<\\    S3S+ j5       5       r<\    S4S, j5       r<\    S3S- j5       r=     S5S. jr> " S/ S05      r?g)6    )annotationsN)contextmanager)Any)Dict)	Generator)Literal)overload)Columncreate_mock_engine)inspect)MetaData)String)Table)testing)text)config)mock)eq_)FutureEngineMixin)
TablesTest)TestBase)drop_all_tables_from_metadata   )_get_dialect)_get_staging_directory   )EnvironmentContext)MigrationContext)
Operations)sqla_compat)sqla_2ztest.cfgc                  t   \ rS rSr\r\R                  " 5       S 5       r\	SS j5       r
\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S	 5       r\R                  " 5       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       \/var/www/html/livechat/backend/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)r1   dirnamecurrent_dirs      r5   pushdTestBase.pushd:   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r1   s    r5   pop_alembic_config_envTestBase.pop_alembic_config_envC   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    )r1   migration_contexts     r5   ops_contextTestBase.ops_contextH   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r1   
connections     r5   rI   TestBase.migration_contextM   s    ))TDA
 	
    c                <    [         R                  " U[        SSS9S9$ )NT)rM   as_sqlrN   rP   rS   s     r5   as_sql_migration_context!TestBase.as_sql_migration_contextS   s!    ))TDN
 	
rV   c              #     #    [         R                  R                  5        nUqUv   S qS S S 5        g ! , (       d  f       g = f7fr&   )r   dbconnect_connection_fixture_connection)r1   conns     r5   rT   TestBase.connectionY   s5      YY D-1*J-1*	 !  s   A	3	A
AAc              #  `   ^^#    SmSmUU4S jnUv   Tb  Tb  TTR                   l        ggg7f)z'Restore runners for modified operationsNc                R   > U R                   R                  R                  5       mU mg r&   )_to_impl	_registrycopy)_op_clsop_clssaved_implss    r5   _save_attrs0TestBase.restore_operations.<locals>._save_attrsj   s"    !**4499;KFrV   )rc   rd   )r1   ri   rg   rh   s     @@r5   restore_operationsTestBase.restore_operationsc   s>      	
 +"9(3FOO% #:s   *.c              #    #    SSK Jn  UR                  5       nX1R                  l        Uv   UR                  ?[
        (       ak  [
        R                  5       (       aR  [
        R                  5       nUR                  5         [
        R                  5          [        U[
        5        SSS5        g[        U[        R                  5        g! , (       d  f       g= f7f)z>Provide bound MetaData for a single test, dropping afterwards.r   )schemaN)sqlalchemy.sqlrn   r   instancemetadatar^   in_transactionget_transactionrollbackbeginr   r   r\   )r1   requestrn   rq   transs        r5   rq   TestBase.metadatat   s      	*??$$,!% +*.==??2BBDENN/557-< 87
 *(FII> 87s   BCC
&$C

CC N)returnzGenerator[None, None, None])__name__
__module____qualname____firstlineno__r"   is_sqlalchemy_futurer   fixturer6   r   r=   rD   rJ   rI   rY   rT   rk   r   rq   __static_attributes__ry   rV   r5   r   r   ,   s    !__) ) " " __/ / __0 0 __
 

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

 __2 2 __4 4  ^^? ?rV   r   c                      \ rS rSrSrg)r      ry   N)r{   r|   r}   r~   r   ry   rV   r5   r   r      s    rV   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compiler   )sqlmultiparamsparamsbufengines      r5   dumpcapture_db.<locals>.dump   s#    

3s{{6>>{:;<rV   r   )r   r   r   r   s     @@r5   
capture_dbr      s#    
C=  .F3;rV   zDict[Any, Any]_engsc                    g r&   ry   )bytes_iokws     r5   capture_context_bufferr      s     ),rV   c                     g r&   ry   )r   s    r5   r   r      s     *-rV   c               +  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)Nr   Fsqlite)dialect_nameoutput_bufferc                 8   > UR                   " S0 TD6  T" U 0 UD6$ Nry   updateargoptconfr   s     r5   rQ   )capture_context_buffer.<locals>.configure   "    

RS C  rV   rQ   )
rB   ioBytesIOStringIOr   r   rQ   r   patchobject)r   r   rQ   r   s   `  @r5   r   r      sz      
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)r_   cursor	statement
parameterscontextexecutemanyr   s         r5   bce*capture_engine_context_buffer.<locals>.bce   s    		)d"#rV   rT   c                 8   > UR                   " S0 TD6  T" U 0 UD6$ r   r   r   s     r5   rQ   0capture_engine_context_buffer.<locals>.configure   r   rV   rQ   )envr   
sqlalchemyr   r   r   r]   listens_forr   r   rQ   r   r   r   )	r   r   r   engr_   r   rQ   r   r   s	   `      @@r5   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&   linesrC   s    r5   __init__$op_fixture.<locals>.buffer_.__init__   s	    DJrV   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   r   )r1   msgrX   s     r5   r   !op_fixture.<locals>.buffer_.write   s[    ))+C&&B,C ffWb#.ffYC0JJc"rV   c                    g r&   ry   rC   s    r5   flush!op_fixture.<locals>.buffer_.flush   s    rV   r   N)r{   r|   r}   r~   r   r   r   r   )rX   s   r5   buffer_r      s    			#	rV   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>.ctxi  c                   > T$ r&   ry   r1   r   s    r5   get_bufop_fixture.<locals>.ctx.get_buf  s    JrV   c                $   > / TR                   S S & g r&   r   r   s    r5   clear_assertions(op_fixture.<locals>.ctx.clear_assertions  s    CIIaLrV   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   )r1   r   sr   s      r5   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   )r1   r   stmtr   s      r5   assert_contains'op_fixture.<locals>.ctx.assert_contains  sD    		66)R-5 "II urV   ry   N)	r{   r|   r}   r~   r   r   r   r   r   )r   s   r5   ctxr     s    			D
	 	rV   r   rX   literal_bindsTc                   > [        U [        5      (       a  [        U 5      n U R                  (       d   e[        U R	                  TS95      nTR                  U5        g r   )
isinstancer   r   supports_executionr   r   )r   
multiparamparamr   r   ctx_dialects       r5   executeop_fixture.<locals>.execute$  sH    $$$Dz****dll;l78CIIcNrV   )r   r   r   )r   r   r   supports_native_boolean#non_native_boolean_check_constraintr   Mockr    alembicop_proxy)r   rX   r   r   native_booleanrO   r   r   r   rT   r   r   r   s    `         @@r5   
op_fixturer      s     D"*=N"O $ )C , X -_w'K!.<+ ;?7	 YY{GD
 #_
+z0G"7+GJJNrV   c                  :    \ rS rSrSrS rS rS rS rS
S jr	S	r
g)AlterColRoundTripFixturei6  )alter_columnc                    [         R                  R                  5       U l        [        R
                  " U R                  5      U l        [        U R                  5      U l        [        5       U l
        g r&   )r   r\   r]   r_   r   rQ   r   r    r   r   rq   rC   s    r5   setUpAlterColRoundTripFixture.setUp=  sE    II%%'	#--dii8TXX& 
rV   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)r1   t1t2c1c2s        r5   _compare_type&AlterColRoundTripFixture._compare_typeC  sT    C_C_88==--
 
 	LDFK	L 
 
rV   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)r1   r  s1r  s2r	  r
  s          r5   _compare_server_default0AlterColRoundTripFixture._compare_server_defaultJ  sX    C/C/88==77B
 
 	OGI2N	O 
 
rV   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_transactionr_   ru   rq   drop_allcloserC   s    r5   tearDown!AlterColRoundTripFixture.tearDownQ  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   rq   r!   _ensure_scope_for_ddlr_   creater   get_columnsr   r   r  r  r  r  r   r  r  r   r   )	r1   from_to_comparecolumntinspold_colnew_cols	            r5   _run_alter_col'AlterColRoundTripFixture._run_alter_colW  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)r_   r   rq   r   r&   )r{   r|   r}   r~   __requires__r   r  r  r  r3  r   ry   rV   r5   r   r   6  s$    
 %L#LO=
rV   r   )zpostgresql://)r   zLiteral[True]r   r   rz   z!Generator[io.BytesIO, None, None])r   r   rz   z"Generator[io.StringIO, None, None])r   r   rz   z/Generator[io.StringIO | io.BytesIO, None, None])r&  FNFN)@
__future__r   configparser
contextlibr   r   r'   r   r/   typingr   r   r   r   r	   r   r
   r   r   r   r   r   r   r   sqlalchemy.testingr   r   sqlalchemy.testing.assertionsr   sqlalchemy.testing.fixturesr   r   SQLAlchemyTablesTestr   SQLAlchemyTestBasesqlalchemy.testing.utilr   r   
assertionsr   r   r   environmentr   	migrationr   
operationsr    utilr!   util.sqla_compatr"   ConfigParsertesting_configreadr^   r   r   r   __annotations__r   r   r   r   ry   rV   r5   <module>rJ     s   "  % 	 	 	        )       % # - 9 J F A  $ ' , ( #  %**,   ZL !^?! ^?B "& 	/ 	 *.  & ~  
,,#&,&,  
,
 
-
-'-  
-
 
4 & 
' 8 Qh^
 ^
rV   