
    i(                       U d dl mZ d dlZd dlmZ d dlZd dl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#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l0m1Z1  ejd                         Z3e3ji                  d g        G d! d"e"      Z! G d# d$e!e       Zd%e_5        d0d&Z6i Z7d'e8d(<   ee	 	 	 	 	 	 d1d)              Z9ee	 	 	 	 d2d*              Z9e	 	 	 	 d3d+       Z9e	 	 	 	 d2d,       Z:	 	 	 	 	 d4d-Z; G d. d/      Z<y)5    )annotationsN)contextmanager)Any)Dict)	Generator)Literal)overload)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                     e Zd ZeZ ej                         d        Zed	d       Z	 ej                         d        Z
 ej                         d        Zej                  d        Zej                  d        Zej                  d        Zy)
r   c              #    K   d  t               }t        j                  |      D ]  }t        j                  j	                  ||      }t        j                  j                  |      st        j                  j                  |      rt        j                  |       wt        j                  j                  |      st        j                  |        y wN)r   oslistdirpathjoinisfileislinkunlinkisdirshutilrmtree)selflocationfilename	file_paths       x/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/alembic/testing/fixtures.pyclear_staging_dirzTestBase.clear_staging_dir.   s     )+

8, 	)HXx8Iww~~i(BGGNN9,E		)$y)i(	)s   B:C=Cc              #     K   t        j                         }	 t        j                  |       d  t        j                  |       y # t        j                  |       w xY wwr$   )r%   getcwdchdir)r/   dirnamecurrent_dirs      r3   pushdzTestBase.pushd9   s=     iik	"HHWHH[!BHH[!s   A!A A!AA!c              #  T   K   d  t         j                  j                  dd        y w)NALEMBIC_CONFIG)r%   environpopr/   s    r3   pop_alembic_config_envzTestBase.pop_alembic_config_envB   s     


'.s   &(c              #  t   K   |j                  d      5  t        |       d d d        y # 1 sw Y   y xY ww)NT)_per_migration)begin_transactionr   )r/   migration_contexts     r3   ops_contextzTestBase.ops_contextG   s7     000E 	0.//	0 	0 	0s   8,	858c                D    t        j                  |t        d            S )NT)transaction_per_migrationoptsr   	configuredictr/   
connections     r3   rD   zTestBase.migration_contextL   s    ))TDA
 	
    c                F    t        j                  |t        dd            S )NT)rG   as_sqlrH   rJ   rM   s     r3   as_sql_migration_contextz!TestBase.as_sql_migration_contextR   s!    ))TDN
 	
rO   c              #  z   K   t         j                  j                         5 }| d d d        y # 1 sw Y   y xY wwr$   )r   dbconnect)r/   conns     r3   rN   zTestBase.connectionX   s1     YY  	DJ	 	 	s   ;/	;8;N)returnzGenerator[None, None, None])__name__
__module____qualname__r!   is_sqlalchemy_futurer   fixturer4   r   r:   r@   rE   rD   rR   rN    rO   r3   r   r   +   s    !W__) ) " " W__/ / W__0 0 __
 

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

 __ rO   r   c                      e Zd Zy)r   N)rX   rY   rZ   r]   rO   r3   r   r   ^   s    rO   r   Tc                6    g fd}t        | |      fS )Nc                n    j                  t        | j                  j                                     y N)dialect)appendstrcompilerb   )sqlmultiparamsparamsbufengines      r3   dumpzcapture_db.<locals>.dumph   s#    

3s{{6>>{:;<rO   r   )rb   rk   ri   rj   s     @@r3   
capture_dbrl   e   s%    
C=  .F3;rO   zDict[Any, Any]_engsc                     y r$   r]   )bytes_iokws     r3   capture_context_bufferrq   r   s     ),rO   c                      y r$   r]   )rp   s    r3   rq   rq   y   s     *-rO   c               +  V   K    j                  dd      rt        j                         }nt        j                         } j	                  d|d       t
        j                   fd}t        j                  j                  t
        d|      5  | d d d        y # 1 sw Y   y xY ww)Nro   Fsqlite)dialect_nameoutput_bufferc                 8     |j                   di   | i |S Nr]   updateargoptconfrp   s     r3   rK   z)capture_context_buffer.<locals>.configure   $    

RS C  rO   rK   )
r>   ioBytesIOStringIOrz   r   rK   r   patchobject)rp   ri   rK   r~   s   `  @r3   rq   rq      s      
vvj% jjlkkmIIx#>?''D! 
		-{I	F 	  s   BB)B	B)B&"B)c               +     K   ddl m} ddlm} t	        j
                          |       }|j                         }|j                  |d      fd       } j                  d|i       t        j                   fd}t        j                  j                  t        d	|      5   d d d        y # 1 sw Y   y xY ww)
Nr   )_sqlite_file_dbr   )eventbefore_cursor_executec                .    j                  |dz          y )N
)write)rV   cursor	statement
parameterscontextexecutemanyri   s         r3   bcez*capture_engine_context_buffer.<locals>.bce   s    		)d"#rO   rN   c                 8     |j                   di   | i |S rx   ry   r{   s     r3   rK   z0capture_engine_context_buffer.<locals>.configure   r   rO   rK   )envr   
sqlalchemyr   r   r   rU   listens_forrz   r   rK   r   r   r   )	rp   r   r   engrV   r   rK   ri   r~   s	   `      @@r3   capture_engine_context_bufferr      s      % 
++-C

C;;=D
t45$ 6$ II|T"#''D! 
		-{I	F 	  s   B B?%B3*	B?3B<8B?c                j   i }|rt        |      |d<    G fdd      } |        G fddt              }r|d<   |r||d<   t        |       ||_        d	_        sfd
}t        j                  |      }	n|d<   d }	 ||	|      }
t        |
      t        j                  _
        |
S )N)naming_conventiontarget_metadatac                  $    e Zd Zd Z fdZd Zy)op_fixture.<locals>.buffer_c                    g | _         y r$   linesr?   s    r3   __init__z$op_fixture.<locals>.buffer_.__init__   s	    DJrO   c                    |j                         }t        j                  dd|      }r.t        j                  dd|      }t        j                  dd|      }| j                  j	                  |       y )N[\n\t] z    z\;\n*$)stripresubr   rc   )r/   msgrQ   s     r3   r   z!op_fixture.<locals>.buffer_.write   s[    ))+C&&B,C ffWb#.ffYC0JJc"rO   c                     y r$   r]   r?   s    r3   flushz!op_fixture.<locals>.buffer_.flush   s    rO   N)rX   rY   rZ   r   r   r   )rQ   s   r3   buffer_r      s    			#	rO   r   c                  6    e Zd Z fdZ fdZ fdZ fdZy)op_fixture.<locals>.ctxc                    S r$   r]   r/   ri   s    r3   get_bufzop_fixture.<locals>.ctx.get_buf   s    JrO   c                $    g j                   d d  y r$   r   r   s    r3   clear_assertionsz(op_fixture.<locals>.ctx.clear_assertions   s    CIIaLrO   c                    t        j                  |D cg c]  }t        j                  dd|       c}       y c c}w )Nr   r   )r   r   r   r   )r/   rf   sri   s      r3   assert_zop_fixture.<locals>.ctx.assert_   s.     		cBBFF9b!4BCBs   <
c                    j                   D ]  }t        j                  dd|      |v s y  J d|dj                          )Nr   r   zCould not locate fragment z in )r   r   r   )r/   rf   stmtri   s      r3   assert_containsz'op_fixture.<locals>.ctx.assert_contains   sI    		 66)R-5II urO   N)rX   rY   rZ   r   r   r   r   )ri   s   r3   ctxr      s    			D
	rO   r   rQ   literal_bindsTc                    t        | t              rt        |       } | j                  sJ t        | j	                              }j                  |       y ra   )
isinstancerd   r   supports_executionre   r   )r   
multiparamparamrf   ri   ctx_dialects       r3   executezop_fixture.<locals>.execute   sE    $$Dz****dll;l78CIIcNrO   )rb   r   rv   )r   r   r   supports_native_boolean#non_native_boolean_check_constraintr   Mockr   alembicop_proxy)rb   rQ   r   r   native_booleanrI   r   r   r   rN   r   ri   r   s    `         @@r3   
op_fixturer      s     D"*=N"O $ )C , X -_w'K!.<+ ;?7	 YY{GD
 #_
+z40G"7+GJJNrO   c                  0    e Zd ZdZd Zd Zd Zd ZddZy)	AlterColRoundTripFixture)alter_columnc                    t         j                  j                         | _        t	        j
                  | j                        | _        t        | j                        | _        t               | _
        y r$   )r   rT   rU   rV   r   rK   r   r   r   r   metadatar?   s    r3   setUpzAlterColRoundTripFixture.setUp  sE    II%%'	#--dii8TXX& 
rO   c                    t        d|      }t        d|      }| j                  j                  j                  ||      rJ d|d|d       y )NqzType objects  and  didn't compare as equivalent)r
   r   implcompare_type)r/   t1t2c1c2s        r3   _compare_typez&AlterColRoundTripFixture._compare_type  sQ    C_C_88==--
 	LDFK	L 
 
rO   c                    t        d||      }t        d||      }| j                  j                  j                  ||||      rJ d|d|d       y )Nr   )server_defaultzserver defaults r   r   )r
   r   r   compare_server_default)r/   r   s1r   s2r   r   s          r3   _compare_server_defaultz0AlterColRoundTripFixture._compare_server_default  s[    CB/CB/88==77B
 	OGI2N	O 
 
rO   c                   t        j                  | j                         | j                  j                         5  | j                  j                  | j                         d d d        | j                  j                          y # 1 sw Y   $xY wr$   )r    %_safe_rollback_connection_transactionrV   beginr   drop_allcloser?   s    r3   tearDownz!AlterColRoundTripFixture.tearDown  s[    99$))DYY__ 	.MM""499-	.			. 	.s   &BBNc                V   t        |j                  dd      |j                  dt        d            |j                  dd      |j                  dd             }t        d	| j                  |      }t        j                  | j                        5  |j                  | j                         t        | j                        }|j                  d	      d
   }| j                  j                  d	|j                  |j                  |j                  |j                  nd|j                   rdnd|j                  dd       |j                  dd      |j                  dd       |j                  dd       	       d d d        t        | j                        }|j                  d	      d
   }||}t#        |d   d|v r|d   n|j                         | j%                  |d   |j                  dd                t#        |d   |j                  d|j                                | j'                  |d   |j                  dd       |j                  d|d         d|v r|d   j(                         y |j                  %|j                  j*                  j(                         y d        y # 1 sw Y   .xY w)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_ddlrV   creater   get_columnsr   r   r   r   r   r   r   r   r   r   r|   )	r/   from_to_comparecolumntinspold_colnew_cols	            r3   _run_alter_colz'AlterColRoundTripFixture._run_alter_col%  s`   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	 	s   C#JJ(r$   )	rX   rY   rZ   __requires__r   r   r   r   r   r]   rO   r3   r   r     s$    
 %L#LO=
rO   r   )zpostgresql://)ro   zLiteral[True]rp   r   rW   z!Generator[io.BytesIO, None, None])rp   r   rW   z"Generator[io.StringIO, None, None])rp   r   rW   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   SQLAlchemyTestBaser   
assertionsr   r   r   environmentr   	migrationr   
operationsr   utilr    util.sqla_compatr!   ConfigParsertesting_configreadr[   rl   rm   __annotations__rq   r   r   r   r]   rO   r3   <module>r     s   "  % 	 	 	        )       % # - 9 J F  $ ' , ( #  %***,   ZL !0! 0f	/ 	 *.  & ~  
,,#&,&,  
,
 
-
-'-  
-
 
4 & 
' 8 Qh^
 ^
rO   