§ w<ˆj )ãót—ddlmZddlZddlZddlZddlmZddlmZddlm Z ddlm Z dd lm Z Gd „d e ¦«Z e ¦«Zd „Ze d „¦«Ze d„¦«Ze d„¦«Ze d„¦«Zdd„ZGd„de ¦«Zdd„Zdd„Zdd„ZGd„de ¦«ZGd„de ¦«Zeefd„ZdS)é)Úabsolute_importNé)Úconfig)Úuses_deprecated)Ú decoratoré)Úevent)Úpoolcóœ—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z e ¦«d „¦«Ze ¦«d „¦«Zd „ZdS)ÚConnectionKillercóŒ—tj¦«|_tj¦«|_t ¦«|_dS©N)ÚweakrefÚWeakKeyDictionaryÚ proxy_refsÚtesting_enginesÚsetÚconns©Úselfs ún/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib64/python3.11/site-packages/sqlalchemy/testing/engines.pyÚ__init__zConnectionKiller.__init__s2€Ý!Ô3Ñ5Ô5ˆŒÝ&Ô8Ñ:Ô:ˆÔÝ‘U”UˆŒ ˆ ˆ ócó—d|j|<dS©NT)r)rÚengines rÚ add_enginezConnectionKiller.add_engines€Ø'+ˆÔ˜VÑ$Ð$Ð$rcó>—|j ||f¦«dSr)rÚadd)rÚ dbapi_connÚ con_records rÚconnectzConnectionKiller.connects!€Ø Œ �Š˜  JÐ/Ñ0Ô0Ð0Ð0Ð0rcó—d|j|<dSr)r)rÚ dbapi_conr!Ú con_proxys rÚcheckoutzConnectionKiller.checkout!s€Ø%)ˆŒ˜ Ñ"Ð"Ð"rcó>—|j ||f¦«dSr)rÚdiscard)rr$r!Ú exceptions rÚ invalidatezConnectionKiller.invalidate$s#€Ø Œ ×Ò˜I zÐ2Ñ3Ô3Ð3Ð3Ð3rcóz— |¦«dS#t$r"}tjd|z¦«Yd}~dSd}~wwxYw)Nz5testing_reaper couldn't rollback/close connection: %s©Ú ExceptionÚwarningsÚwarn©rÚfnÚes rÚ_safezConnectionKiller._safe'so€ð Ø ˆB‰DŒDˆDˆDˆDøÝð ð ð Ý ŒMØJÈQÑNñ ô ð ð ð ð ð ð ð øøøøð øøøó‚ Ž :˜5µ:cóz—t|j¦«D]%}|�!|jr| |j¦«Œ&dSr)ÚlistrÚis_validr3Úrollback©rÚrecs rÚ rollback_allzConnectionKiller.rollback_all/sE€Ý˜œÑ(Ô(ð )ð )ˆC؈ 3¤<ˆØ— ’ ˜3œ<Ñ(Ô(Ð(øð )ð )rcóz—t|j¦«D]%}|�!|jr| |j¦«Œ&dSr)r6rr7r3Ú_closer9s rÚ close_allzConnectionKiller.close_all4sE€Ý˜œÑ(Ô(ð 'ð 'ˆC؈ 3¤<ˆØ— ’ ˜3œ:Ñ&Ô&Ð&øð 'ð 'rcó~—t|j¦«D]'\}}|j€Œ | |j¦«Œ(dSr)r6rÚ connectionr3r8©rÚconnr:s rÚ_after_test_ctxz ConnectionKiller._after_test_ctx9sO€õ ˜dœjÑ)Ô)ð &ð &‰IˆD�#ØŒ~Ð%ð Ø �JŠJ�t”}Ñ %Ô %Ð %Ð %ð &ð &rcó|—tjjr| ¦«dS| ¦«dSr)rÚoptionsÚlow_connectionsÚ_stop_test_ctx_minimalÚ_stop_test_ctx_aggressivers rÚ_stop_test_ctxzConnectionKiller._stop_test_ctxHs?€Ý Œ>Ô )ð -Ø × 'Ò 'Ñ )Ô )Ð )Ð )Ð )à × *Ò *Ñ ,Ô ,Ð ,Ð ,Ð ,rcóÆ—| ¦«t¦«|_t|j¦«D]$}|t jur| ¦«Œ%dSr)r>rrr6rrÚdbÚdisposer9s rrGz'ConnectionKiller._stop_test_ctx_minimalNs\€à �ŠÑÔÐå‘U”UˆŒ å˜Ô,Ñ-Ô-ð ð ˆCØ�&œ)Ð#Ð#Ø— ’ ‘ ” � øð ð rcó —| ¦«t|j¦«D]&\}}| |j¦«d|_Œ't ¦«|_t|j¦«D]}| ¦«ŒdSr) r>r6rr3Úcloser@rrrLrAs rrHz*ConnectionKiller._stop_test_ctx_aggressiveXsŠ€à �ŠÑÔÐݘdœjÑ)Ô)ð "ð "‰IˆD�#Ø �JŠJ�t”zÑ "Ô "Ð "Ø!ˆCŒNˆNå‘U”UˆŒ ݘÔ,Ñ-Ô-ð ð ˆCØ �KŠK‰MŒMˆMˆMð ð rcó,—|jD] }|jrJ‚Œ dSr)rr7r9s rÚassert_all_closedz"ConnectionKiller.assert_all_closedcs1€Ø”?ð ð ˆCØŒ|ð Ø�uð ð ð rN)Ú__name__Ú __module__Ú __qualname__rrr"r&r*r3r;r>rCrIrrGrHrP©rrr r s€€€€€ðððð ,ð,ð,ð1ð1ð1ð*ð*ð*ð4ð4ð4ðððð)ð)ð)ð 'ð'ð'ð &ð &ð &ð-ð-ð-ð €_ÑÔððñÔðð€_ÑÔððñÔððððððrr cóp—t ¦«t|d¦«r| ¦«tjjjsMddlm }|  dd¬¦«5|  |¦«ddd¦«dS#1swxYwYdS|  |¦«dS)NrNr)Ú assertionszCan't sort tablesF)Úassert_) Útesting_reaperr>ÚhasattrrNrrKÚdialectÚsupports_alterÚrVÚexpect_warningsÚdrop_all)ÚmetadataÚbindrVs rÚdrop_all_tablesrals€Ý×ÒÑÔÐ݈t�WÑÔðØ � Š ‰ Œ ˆ å Œ9Ô Ô +ð Ø Ð Ð Ð Ð Ð à × 'Ò 'Ð(;ÀUÐ 'Ñ KÔ Kð $ð $Ø × Ò ˜dÑ #Ô #Ð #ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $ð ×Ò˜$ÑÔÐÐÐsÁ1BÂBÂBcó†— ||i|¤Žt ¦«dS#t ¦«wxYwr)rXrP©r1ÚargsÚkws rÚassert_conns_closedrfzsH€ð+Ø ˆˆDˆ�Bˆˆˆå×(Ò(Ñ*Ô*Ð*Ð*Ð*ø�×(Ò(Ñ*Ô*Ð*Ð*øøøó ‚%¥Acó†— ||i|¤Žt ¦«dS#t ¦«wxYw)zBDecorator that rolls back all open connections after fn execution.N)rXr;rcs rÚrollback_open_connectionsri‚sH€ð&Ø ˆˆDˆ�Bˆˆˆå×#Ò#Ñ%Ô%Ð%Ð%Ð%ø�×#Ò#Ñ%Ô%Ð%Ð%øøørgcóH—t ¦«||i|¤ŽdS)z:Decorator that closes all connections before fn execution.N©rXr>rcs rÚ close_firstrlŒs+€õ×ÒÑÔÐØ€Bˆ€O�€O€O€O€O€Orcó†— ||i|¤Žt ¦«dS#t ¦«wxYw)z9Decorator that closes all connections after fn execution.Nrkrcs rÚclose_open_connectionsrn”sH€ð#Ø ˆˆDˆ�Bˆˆˆå× Ò Ñ"Ô"Ð"Ð"Ð"ø�× Ò Ñ"Ô"Ð"Ð"øøørgc#óÔK—ddlm}|jD]W}|r||vrŒ t||d¦«}|s%tt d|z¦«j|¦«}| ¦«V—ŒXdS)Nrzsqlalchemy.databases.%s)Úsqlalchemy.databasesÚ databasesÚ__all__ÚgetattrÚ __import__rZ)ÚexcludeÚdÚnameÚmods rÚ all_dialectsry�s�èè€Ø$Ð$Ð$Ð$Ð$Ð$à” ð ð ˆà ð �t˜w��Ø Ý�a˜˜tÑ$Ô$ˆØð ÝÝÐ4°tÑ;Ñ<Ô<ÔFÈñôˆCð�kŠk‰mŒmÐÐÐÐð ð rcó4—eZdZd„Zd„Zd„Zd„Zd d„Zd„ZdS) ÚReconnectFixturecó0—||_g|_d|_dS©NF)ÚdbapiÚ connectionsÚ is_stopped)rr~s rrzReconnectFixture.__init__­s€ØˆŒ ØˆÔØˆŒˆˆrcó,—t|j|¦«Sr)rsr~©rÚkeys rÚ __getattr__zReconnectFixture.__getattr__²s€Ý�t”z 3Ñ'Ô'Ð'rcó—|jj|i|¤Ž}|jrM| |j¦«| ¦«}| d¦«Jd¦«‚|j |¦«|S)Nzselect 1Fz%simulated connect failure didn't work) r~r"r€r3rNÚcursorÚexecuterÚappend)rrdÚkwargsrBÚcurss rr"zReconnectFixture.connectµs„€à!ˆtŒzÔ! 4Ð2¨6Ð2Ð2ˆØ Œ?ð Ø �JŠJ�t”zÑ "Ô "Ð "Ø—;’;‘=”=ˆDð �LŠL˜Ñ $Ô $Ð $Ø AÐAÑ AÔ A�5à Ô × #Ò # DÑ )Ô )Ð )؈Krcóz— |¦«dS#t$r"}tjd|z¦«Yd}~dSd}~wwxYw)Nz.ReconnectFixture couldn't close connection: %sr,r0s rr3zReconnectFixture._safeÃso€ð Ø ˆB‰DŒDˆDˆDˆDøÝð ð ð Ý ŒMØCÀaÑGñ ô ð ð ð ð ð ð ð øøøøð øøør4Fcó„—||_t|j¦«D]}| |j¦«Œg|_dSr)r€r6rr3rN)rÚstopÚcs rÚshutdownzReconnectFixture.shutdownËsJ€ð ˆŒÝ�dÔ&Ñ'Ô'ð ð ˆAØ �JŠJ�q”wÑ Ô Ð Ð ØˆÔÐÐrcó—d|_dSr})r€rs rÚrestartzReconnectFixture.restartÖs €ØˆŒˆˆrN)F) rQrRrSrr„r"r3r�r‘rTrrr{r{¬ss€€€€€ð ð ð ð (ð(ð(ð ð ð ðððð ð ð ð ð ð ð ð ð rr{có(‡‡—|ptjj}tjjj}|si}t |¦«|d<t ||¦«Š‰jŠˆˆfd„}‰jjj‰_ ‰jjj ‰_ |‰_‰S)NÚmodulecóz•—‰jj ¦«d‰jj_‰¦«dSr})rZr~r�r€)Ú_disposers€€rrLz$reconnecting_engine..disposeãs6ø€ØŒÔ×%Ò%Ñ'Ô'Ð'Ø*/ˆŒÔÔ'؈‰ Œ ˆ ˆ ˆ r) rrKÚurlrZr~r{Útesting_enginerLr�Ú test_shutdownr‘Ú test_restart)r–rEr~rLr•rs @@rÚreconnecting_engineršÚs øø€Ø Ð •””€CÝ ŒIÔ Ô #€EØ ð؈Ý(¨Ñ/Ô/€GˆHÑÝ ˜C Ñ )Ô )€FØŒ~€Hððððððð "œ>Ô/Ô8€FÔØ œ.Ô.Ô6€FÔØ€F„NØ €Mrcój—ddlm}ddlm}|sd}n| dd¦«}|pt jj}||¦«}|€;t j�|jt jjjkr t j }nai}n^t j�R|jt jjjkr3t j   ¦«}|  |¦«||fi|¤Ž}d|_ t|jtj¦«rd|j_d|j_|r‰t%j|jdt(j¦«t%j|jdt(j¦«t%j|jd t(j¦«t( |¦«|S) zBProduce an engine configured by --options with optional overrides.r©Ú create_engine)Úmake_urlTÚ use_reaperNr"r&r*)Ú sqlalchemyr�Úsqlalchemy.engine.urlržÚpoprrKr–Ú drivernameÚdb_optsÚcopyÚupdateÚ _has_eventsÚ isinstancer Ú QueuePoolÚ_timeoutÚ _max_overflowr ÚlistenrXr"r&r*r)r–rEr�ržrŸÚ default_optrs rr—r—îsŒ€ð)Ð(Ð(Ð(Ð(Ð(Ø.Ð.Ð.Ð.Ð.Ð.à ð5؈ ˆ à—[’[ ¨tÑ4Ô4ˆ à Ð •””€Cà ˆ(�3‰-Œ-€CØ€Ý Œ9Ð  ¤µ&´)´-Ô2JÒ JÐ JÝ”nˆGˆGàˆGˆGÝ ŒÐ  3¤>µV´Y´]Ô5MÒ#MÐ#MÝ”n×)Ò)Ñ+Ô+ˆ Ø×Ò˜7Ñ#Ô#Ð#à ˆ]˜3Ð *Ð * 'Ð *Ð *€FØ€FÔå�&”+�tœ~Ñ.Ô.ð&Ø ˆŒ ÔØ$%ˆŒ Ô!Øð*Ý Œ �V”[ )­^Ô-CÑDÔDÐDÝ Œ �V”[ *­nÔ.EÑFÔFÐFÝ Œ �V”[ ,µÔ0IÑJÔJÐJÝ×!Ò! &Ñ)Ô)Ð)à €Mrcó·‡—ddlm}|stjj}gŠˆfd„}ˆfd„}ˆfd„}||dzd|¬¦«Št ‰d¦«rJ‚‰‰_|‰_|‰_‰S) a'Provides a mocking engine based on the current testing.db. This is normally used to test DDL generation flow as emitted by an Engine. It should not be used in other cases, as assert_compile() and assert_sql_execution() are much better choices with fewer moving parts. rrœcó2•—‰ |¦«dSr)rˆ)ÚsqlÚareÚbuffers €rÚexecutorzmock_engine..executor'sø€Ø� Š �cÑÔÐÐÐrcó@•—d„‰D¦«}||ks J|¦«‚dS)Nc óT—g|]%}tjddt|¦«¦«‘Œ&S)z[\n\t]r\)ÚreÚsubÚstr)Ú.0Úss rú z3mock_engine..assert_sql..+s,€Ð>Ð>Ð>°!•”�y "¥c¨!¡f¤fÑ-Ô-Ð>Ð>Ð>rrT)ÚstmtsÚrecvr²s €rÚ assert_sqlzmock_engine..assert_sql*s-ø€Ø>Ð>°vÐ>Ñ>Ô>ˆØ�uŠ}ˆ}ˆ}˜d‰}Œ}ˆ}ˆ}ˆ}rcó`•‡—‰jŠd ˆfd„‰jD¦«¦«S)Nú c3ó^•K—|]'}t| ‰¬¦«¦«V—Œ(dS))rZN)r¸Úcompile)r¹rºrvs €rú z1mock_engine..print_sql..0s9øèè€ÐHÐH°q�˜QŸYšY¨q˜YÑ1Ô1Ñ2Ô2ÐHÐHÐHÐHÐHÐHr)rZÚjoinÚmock)rvrs@€rÚ print_sqlzmock_engine..print_sql.s4øø€Ø ŒNˆØ�yŠyÐHÐHÐHÐH¸F¼KÐHÑHÔHÑHÔHÐHrz://rÅ)Ústrategyr³) r r�rrKrwrYrÅr¾rÆ)Ú dialect_namer�r³r¾rÆr²rs @@rÚ mock_enginerÉsÖøø€ð)Ð(Ð(Ð(Ð(Ð(à ð&Ý”y”~ˆ à €Fðððððð#ð#ð#ð#ð#ðIðIðIðIðIðˆ]Ø�uÑ v¸ðñô€Fõ�v˜vÑ&Ô&Ð&Ð&Ð &Ø€F„KØ"€FÔØ €FÔØ €Mrcó8—eZdZdZd„Zd d„Zd„Zd„Zd„Zd„Z dS) ÚDBAPIProxyCursorzuProxy a DBAPI cursor. Tests can provide subclasses of this to intercept DBAPI-level cursor operations. cóF—||_||_|j|i|¤Ž|_dSr)rr@r†)rrrBrdr‰s rrzDBAPIProxyCursor.__init__Ds,€ØˆŒ ؈ŒØ!�d”k 4Ð2¨6Ð2Ð2ˆŒ ˆ ˆ rNc óT—|r|jj||fi|¤ŽS|jj|fi|¤ŽSr)r†r‡)rÚstmtÚ parametersres rr‡zDBAPIProxyCursor.executeIsF€Ø ð 3Ø&�4”;Ô& t¨ZÐ>Ð>¸2Ð>Ð>Ð >à&�4”;Ô& tÐ2Ð2¨rÐ2Ð2Ð 2rc ó*—|jj||fi|¤ŽSr)r†Ú executemany)rrÎÚparamsres rrÑzDBAPIProxyCursor.executemanyOs!€Ø&ˆtŒ{Ô& t¨VÐ:Ð:°rÐ:Ð:Ð:rcó,—t|j|¦«Sr)rsr†r‚s rr„zDBAPIProxyCursor.__getattr__Rs€Ý�t”{ CÑ(Ô(Ð(rcó—|SrrTrs rÚ __enter__zDBAPIProxyCursor.__enter__Us€Øˆ rcó—dSrrT)rrds rÚ__exit__zDBAPIProxyCursor.__exit__Xs€Ø ˆrr) rQrRrSÚ__doc__rr‡rÑr„rÕr×rTrrrËrË<s}€€€€€ððð3ð3ð3ð 3ð3ð3ð3ð ;ð;ð;ð)ð)ð)ðððð ð ð ð ð rrËcó*—eZdZdZd„Zd„Zd„Zd„ZdS)ÚDBAPIProxyConnectionz}Proxy a DBAPI connection. Tests can provide subclasses of this to intercept DBAPI-level connection operations. cól—|j ¦«x|_|_||_||_dSr)r Ú_creatorrBÚ _sqla_unwraprÚ cursor_cls)rrrÞs rrzDBAPIProxyConnection.__init__ds1€Ø(.¬ ×(<Ò(<Ñ(>Ô(>Ð>ˆŒ �DÔ%؈Œ Ø$ˆŒˆˆrcó:—|j|j|jg|¢Ri|¤ŽSr)rÞrrB)rrdr‰s rr†zDBAPIProxyConnection.cursoris*€ØˆtŒ˜tœ{¨D¬IÐG¸ÐGÐGÐGÀÐGÐGÐGrcó8—|j ¦«dSr)rBrNrs rrNzDBAPIProxyConnection.closels€Ø Œ �ŠÑÔÐÐÐrcó,—t|j|¦«Sr)rsrBr‚s rr„z DBAPIProxyConnection.__getattr__os€Ý�t”y #Ñ&Ô&Ð&rN)rQrRrSrØrr†rNr„rTrrrÚrÚ\s]€€€€€ððð%ð%ð%ð HðHðHðððð'ð'ð'ð'ð'rrÚcó6‡‡—ˆˆfd„}td|i¬¦«S)zIProduce an engine that provides proxy hooks for common methods. có0•—‰tj‰¦«Sr)rrK)Úconn_clsrÞs€€rÚ mock_connz"proxying_engine..mock_conn{sø€Øˆx�œ  :Ñ.Ô.Ð.rÚcreator)rE)r—)rärÞrås`` rÚproxying_enginerçss:øø€ð/ð/ð/ð/ð/ð/õ  9¨iÐ"8Ð 9Ñ 9Ô 9Ð9rr)NN)Ú __future__rr¶r.rr\rrÚutilrr r Úobjectr rXrarfrirlrnryr{ršr—rÉrËrÚrçrTrrúrësDðð'Ð&Ð&Ð&Ð&Ð&à € € € Ø€€€Ø€€€àÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐðQðQðQðQðQ�vñQôQðQðh"Ð!Ñ#Ô#€ð  ð  ð  ð ð+ð+ñ „ð+ð ð&ð&ñ „ð&ð ððñ „ðð ð#ð#ñ „ð#ð ð ð ð ð+ ð+ ð+ ð+ ð+ �vñ+ ô+ ð+ ð\ðððð(#ð#ð#ð#ðL%ð%ð%ð%ðP ð ð ð ð �vñ ô ð ð@'ð'ð'ð'ð'˜6ñ'ô'ð'ð0"Ð.>ð :ð :ð :ð :ð :ð :r