ó
    úÞ jP.  ã                  óÔ  • % S SK Jr  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%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        S0S& jr90 r:S'\;S('   \\      S1S) j5       5       r<\\    S2S* j5       5       r<\    S3S+ j5       r<\    S2S, j5       r=     S4S- jr> " S. S/5      r?g)5é    )Úannotations)Ú	GeneratorN)Úcontextmanager)ÚAny)Ú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       ÚR/var/www/html/gaurav/venv/lib/python3.13/site-packages/alembic/testing/fixtures.pyÚclear_staging_dirÚTestBase.clear_staging_dir.   s…   é € ãÜ)Ó+ˆÜŸ
š
 8Ö,ˆHÜŸ™Ÿ™ XÓ8ˆIÜ�w‰w�~‰~˜i×(Ñ(¬B¯G©G¯N©N¸9×,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)r0   ÚdirnameÚcurrent_dirs      r4   ÚpushdÚTestBase.pushd9   s<   é € ä—i’i“kˆð	"Ü�HŠH�WÔÛä�HŠH�[Õ!øŒB�HŠH�[Õ!üs   ‚A%™A
 ³A%Á
A"Á"A%c              #  óT   #   • S v •  [         R                  R                  SS 5        g 7f)NÚALEMBIC_CONFIG)r&   ÚenvironÚpop©r0   s    r4   Úpop_alembic_config_envÚTestBase.pop_alembic_config_envB   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   )r0   Úmigration_contexts     r4   Úops_contextÚTestBase.ops_contextG   s.   é € à×0Ñ0ÀÐ0ÒEÜÐ.Ó/Ò/÷ F×EÖEüs   ‚:’) 	:©
7³:c                ó:   • [         R                  " U[        SS9S9$ )NT)Útransaction_per_migration©Úopts©r   Ú	configureÚdict©r0   Ú
connections     r4   rH   ÚTestBase.migration_contextL   s   € ä×)Ò)ØœT¸DÑAñ
ð 	
ó    c                ó<   • [         R                  " U[        SSS9S9$ )NT)rL   Úas_sqlrM   rO   rR   s     r4   Úas_sql_migration_contextÚ!TestBase.as_sql_migration_contextR   s!   € ä×)Ò)ØœT¸DÈÑNñ
ð 	
rU   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)r0   Úconns     r4   rS   ÚTestBase.connectionX   s5   é € ô �Y‰Y×ÑÔ  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    €€r4   Ú_save_attrsÚ0TestBase.restore_operations.<locals>._save_attrsi   s"   ø€ à!×*Ñ*×4Ñ4×9Ñ9Ó;ˆKØ‰FrU   )rb   rc   )r0   rh   rf   rg   s     @@r4   Úrestore_operationsÚTestBase.restore_operationsb   s>   ùé € ð ˆØˆö	ð
 ÒàÑ +Ñ"9Ø(3ˆF�O‰OÕ%ð #:Ðù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.sqlrm   r   ÚinstanceÚmetadatar]   Úin_transactionÚget_transactionÚrollbackÚbeginr   r   r[   )r0   Úrequestrm   rp   Útranss        r4   rp   ÚTestBase.metadatas   sœ   é € õ 	*à—?‘?Ó$ˆØ$,×ÑÔ!ØŠØ×ÑÐ%÷ +Ò*Ü.×=Ñ=×?Ñ?ä2×BÑBÓDˆEØ�N‰NÔÜ/×5Ñ5Õ7Ü-ØÔ<ô÷ 8Ð7ô
 *¨(´F·I±IÕ>÷ 8Õ7üs   ‚BCÂC
Â&$CÃ

CÃC© N)ÚreturnzGenerator[None])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   Úis_sqlalchemy_futurer   Úfixturer5   r   r<   rC   rI   rH   rX   rS   rj   r   rp   Ú__static_attributes__rx   rU   r4   r   r   +   sæ   † Ø!Ðà‡_‚_Óñ)ó ð)ð ó"ó ð"ð ‡_‚_Óñ/ó ð/ð ‡_‚_Óñ0ó ð0ð ‡_�_ñ
ó ð
ð
 ‡_�_ñ
ó ð
ð
 ‡_�_ñ2ó ð2ð ‡_�_ñ4ó ð4ð  ‡^‚^Óñ?ó ó?rU   r   c                  ó   • \ rS rSrSrg)r   é�   rx   N)rz   r{   r|   r}   r€   rx   rU   r4   r   r   �   s   † ÚrU   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      €€r4   ÚdumpÚcapture_db.<locals>.dump™   s#   ø€ Ø�
‰
”3�s—{‘{¨6¯>©>�{Ð:Ó;Õ<rU   r
   )r†   r�   r�   rŽ   s     @@r4   Ú
capture_dbr‘   –   s#   ù€ Ø
€Cö=ô   Ó.€FØ�3ˆ;ÐrU   zdict[Any, Any]Ú_engsc                ó   • g r%   rx   )Úbytes_ioÚkws     r4   Úcapture_context_bufferr–   £   s   € ð  rU   c                 ó   • g r%   rx   )r•   s    r4   r–   r–   ª   s   € ð !rU   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$ ©Nrx   ©Úupdate©ÚargÚoptÚconfr•   s     €€r4   rP   Ú)capture_context_buffer.<locals>.configure½   ó"   ø€ Ø�
Š
Ñ�RÒÙ�SÐ ˜CÑ Ð rU   rP   )
rA   ÚioÚBytesIOÚStringIOrŸ   r   rP   r   ÚpatchÚobject)r•   r�   rP   r£   s   `  @r4   r–   r–   ±   sz   ùé € ð 
‡v�vˆj˜%× Ñ Ü�jŠj‹l‰ä�kŠk‹mˆà‡I�I˜x¸#Ñ>Ô?Ü×'Ñ'€Dö!ô 
�‰×	Ñ	Ô-¨{¸IÕ	FØŠ	÷ 
G×	FÖ	Füs   „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         €r4   ÚbceÚ*capture_engine_context_buffer.<locals>.bceÒ   s   ø€ à�	‰	�)˜dÑ"Õ#rU   rS   c                 ó8   >• UR                   " S0 TD6  T" U 0 UD6$ r�   rž   r    s     €€r4   rP   Ú0capture_engine_context_buffer.<locals>.configureÙ   r¥   rU   rP   )Úenvr¬   Ú
sqlalchemyr­   r¦   r¨   r\   Úlistens_forrŸ   r   rP   r   r©   rª   )	r•   r¬   r­   Úengr^   r·   rP   r�   r£   s	   `      @@r4   Úcapture_engine_context_bufferr¿   Å   s™   úé € õ %Ý ä
�+Š+‹-€Cá
Ó
€Cà�;‰;‹=€Dà
×Ñ�tÐ4Ó5ô$ó 6ð$ð ‡I�Iˆ|˜TÐ"Ô#Ü×'Ñ'€Dö!ô 
�‰×	Ñ	Ô-¨{¸IÕ	FØŠ	÷ 
G×	FÖ	Füs   …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X•5      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%   ©ÚlinesrB   s    r4   Ú__init__Ú$op_fixture.<locals>.buffer_.__init__í   s	   € ØˆD�JrU   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‡   )r0   ÚmsgrW   s     €r4   r±   Ú!op_fixture.<locals>.buffer_.writeð   s[   ø€ Ø—)‘)“+ˆCÜ—&’&˜ B¨Ó,ˆCÞô —f’f˜W b¨#Ó.�Ü—f’f˜Y¨¨CÓ0�à�J‰J×Ñ˜cÕ"rU   c                ó   • g r%   rx   rB   s    r4   ÚflushÚ!op_fixture.<locals>.buffer_.flushû   s   € ØrU   rÇ   N)rz   r{   r|   r}   rÉ   r±   rÔ   r€   )rW   s   €r4   Úbuffer_rÄ   ì   s   ø† ò	õ		#õ	rU   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%   rx   ©r0   r�   s    €r4   Úget_bufÚop_fixture.<locals>.ctx.get_buf  s   ø€ ØˆJrU   c                ó$   >• / TR                   S S & g r%   rÇ   rÛ   s    €r4   Úclear_assertionsÚ(op_fixture.<locals>.ctx.clear_assertions  s   ø€ ØˆC�I‰I‘a‰LrU   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Ð   )r0   rŠ   Úsr�   s      €r4   Úassert_Úop_fixture.<locals>.ctx.assert_  s2   ø€ ô �—	‘	¹cÓB¹c¸œBŸFšF 9¨b°!Ö4¹cÑBÕCùÒBs   –!?
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Ð   )r0   rŠ   Ústmtr�   s      €r4   Úassert_containsÚ'op_fixture.<locals>.ctx.assert_contains  sD   ø€ ØŸ	œ	�Ü—6’6˜) R¨Ó-°Õ5Ùñ "ñÛØ—I“Iðó �urU   rx   N)	rz   r{   r|   r}   rÜ   rß   rã   rç   r€   )r�   s   €r4   ÚctxrØ      s   ø† õ	õ	õ	D÷
	ð 	rU   ré   rW   Ú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       €€r4   ÚexecuteÚop_fixture.<locals>.execute#  sH   ø€ Ü˜$¤×$Ñ$Ü˜D“z�Ø×*×*Ð*Ð*Ü�d—l‘l¨;�lÐ7Ó8ˆCà�I‰I�c�NrU   )r†   rñ   r›   )r   r   r   Úsupports_native_booleanÚ#non_native_boolean_check_constraintr   ÚMockr   ÚalembicÚopÚ_proxy)r†   rW   rÁ   rê   Únative_booleanrN   rÖ   ré   rñ   rS   rµ   r�   rð   s    `         @@r4   Ú
op_fixturerú   á   sÄ   ú€ ð €DÞÜ"*Ð=NÑ"OˆÐÑ÷ô ñ$ ‹)€C÷Ôô ö, ØˆˆX‰ÞØ -ˆ_Ñä˜wÓ'€KØÑ!Ø.<ˆÔ+ð ;?ˆÔ7Þö	ô —Y’Y {¸GÑD‰
à #ˆˆ_ÑØˆ
Ù�+˜zÓ0€Gä" 7Ó+„G‡J�JÔØ€NrU   c                  ó:   • \ rS rSrSrS rS rS rS rS
S jr	S	r
g)ÚAlterColRoundTripFixturei5  )Ú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   rP   ré   r   r÷   r   rp   rB   s    r4   ÚsetUpÚAlterColRoundTripFixture.setUp<  sE   € Ü—I‘I×%Ñ%Ó'ˆŒ	Ü#×-Ò-¨d¯i©iÓ8ˆŒÜ˜TŸX™XÓ&ˆŒÜ ›
ˆ�rU   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)r0   Út1Út2Úc1Úc2s        r4   Ú_compare_typeÚ&AlterColRoundTripFixture._compare_typeB  sT   € Ü�C˜‹_ˆÜ�C˜‹_ˆØ—8‘8—=‘=×-Ñ-Ø÷
ñ 
ñ 	LãDFËÐKó	Lð 
ð 
rU   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)r0   r  Ús1r  Ús2r	  r
  s          r4   Ú_compare_server_defaultÚ0AlterColRoundTripFixture._compare_server_defaultI  sX   € Ü�C˜Ñ/ˆÜ�C˜Ñ/ˆØ—8‘8—=‘=×7Ñ7Ø�B÷
ñ 
ñ 	OãGIË2ÐNó	Oð 
ð 
rU   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^   rt   rp   Údrop_allÚcloserB   s    r4   ÚtearDownÚ!AlterColRoundTripFixture.tearDownP  sT   € Ü×9Ò9¸$¿)¹)ÔDØ�Y‰Y�_‰_ÕØ�M‰M×"Ñ" 4§9¡9Ô-÷ à�	‰	�‰Õ÷ Õú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   rp   r    Ú_ensure_scope_for_ddlr^   Úcreater   Úget_columnsr÷   rý   r  r  r  r  r   r  r  r   r¡   )	r0   Úfrom_Úto_ÚcompareÚcolumnÚtÚinspÚold_colÚnew_cols	            r4   Ú_run_alter_colÚ'AlterColRoundTripFixture._run_alter_colV  sY  € ÜØ�I‰I�f˜iÓ(Ø�I‰I�fœf R›jÓ)Ø—Y‘Y˜z¨4Ó0Ø Ÿ9™9Ð%5°tÓ<ñ	
ˆô �#�t—}‘} fÓ-ˆä×.Ò.¨t¯y©yÕ9Ø�H‰H�T—Y‘YÔÜ˜4Ÿ9™9Ó%ˆDØ×&Ñ& sÓ+¨AÑ.ˆGð �G‰G× Ñ ØØ—‘Ø$Ÿk™kð ×,Ñ,Ñ8ð ×)Ò)àà*0¯/¯/¡$¸uàŸ™ ¨TÓ2à"Ÿw™wÐ'7¸Ó?Ø #§¡¨°Ó 5Ø—g‘g˜f dÓ+ð !ñ ÷ :ô0 �t—y‘yÓ!ˆØ×"Ñ" 3Ó'¨Ñ*ˆà‰?ØˆGäØ�F‰OØ%¨Ó0ˆG�FŠO°f·k±kô	
ð 	×ÑØ�F‰O˜WŸ[™[¨°¸±ÓAô	
ô 	ˆG�JÑ §¡¨Z¸¿¹Ó!IÔJØ×$Ñ$Ø�F‰OØ�K‰K˜	 4Ó(Ø�K‰K˜ ¨¡Ó0ð $ wÓ.ð Ð(Ñ)×.Ñ.õ	
ð ×,Ñ,Ñ8ð ×)Ñ)×-Ñ-×2Ñ2õ	
ð õ	
÷M :Ö9ús   ÂC&J%Ê%
J4)r^   ré   rp   r÷   r%   )rz   r{   r|   r}   Ú__requires__rÿ   r  r  r  r3  r€   rx   rU   r4   rü   rü   5  s$   † ð
 %€Lò#òLòOò÷=
rU   rü   )zpostgresql://)r”   zLiteral[True]r•   r   ry   zGenerator[io.BytesIO])r•   r   ry   zGenerator[io.StringIO])r•   r   ry   z#Generator[io.StringIO | io.BytesIO])r&  FNFN)@Ú
__future__r   Úcollections.abcr   ÚconfigparserÚ
contextlibr   r¦   r&   rÏ   r.   Útypingr   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ü   rx   rU   r4   Ú<module>rK     s˜  ðÞ "å %Û Ý %Û 	Û 	Û 	Û Ý Ý Ý å Ý )Ý Ý Ý Ý Ý Ý Ý %Ý #Ý -Ý 9Ý JÝ FÝ Aã Ý $Ý 'Ý ,Ý (Ý #Ý Ý %à×*Ò*Ó,€Ø × Ñ �Z�LÔ !ô^?Ð!ô ^?ðB "&Ð ô	�Ð/ô 	ð *.Ð Ô &ôð €€~Ó ð 
Øð Øð Ø#&ð àó ó ó 
ð ð
 
Øð!Ø
ð!àó!ó ó 
ð!ð
 ðØ
ðà(óó ðð& ðØ
ðàóó ðð8 ØØØØôQ÷h^
ò ^
rU   