|L i.UddlmZddlZddlmZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl m Z ddl mZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZ ddlm!Z"ddl#m$Z$ddl%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1dd l2m3Z3ejhZ5e5jmd!gGd"d#e"Z!da7Gd$d%e!e Zd&e_8d1d'Z9iZ:d(e;d)<ee d2d*ZGd/d0Z?y)6) annotationsN)contextmanager)Any)Dict) Generator)Literal)overload)Columncreate_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_2ztest.cfgcjeZdZeZej dZed dZ ej dZ ej dZ ej dZ ej dZ ej dZej dZej d Zy ) rc#Kdt}tj|D]}tjj ||}tjj |stjj |rtj|wtjj|stj|ywN) roslistdirpathjoinisfileislinkunlinkisdirshutilrmtree)selflocationfilename file_paths ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/alembic/testing/fixtures.pyclear_staging_dirzTestBase.clear_staging_dir/s )+ 8, )H Xx8Iww~~i(BGGNN9,E )$y) i(  )s B:C=Cc#Ktj} tj|dtj|y#tj|wxYwwr%)r&getcwdchdir)r0dirname current_dirs r4pushdzTestBase.pushd:s=iik  " HHW   HH[ !BHH[ !sA!AA!AA!c#TKdtjjddyw)NALEMBIC_CONFIG)r&environpopr0s r4pop_alembic_config_envzTestBase.pop_alembic_config_envCs  '.s&(c#tK|jd5t|dddy#1swYyxYww)NT)_per_migration)begin_transactionr )r0migration_contexts r4 ops_contextzTestBase.ops_contextHs7  0 0 0 E 0./ / 0 0 0s8, 858cDtj|tdS)NT)transaction_per_migrationoptsr configuredictr0 connections r4rEzTestBase.migration_contextMs)) TDA  cFtj|tddS)NT)rHas_sqlrIrKrNs r4as_sql_migration_contextz!TestBase.as_sql_migration_contextSs!)) TDN  rPc#Ktjj5}|a|dadddy#1swYyxYwwr%)rdbconnect_connection_fixture_connection)r0conns r4rOzTestBase.connectionYs?YY    2D-1 *J-1 *  2 2 2s? 3 ?<?c#ZKddfd}|j_yyyw)z'Restore runners for modified operationsNcR|jjj|yr%)_to_impl _registrycopy)_op_clsop_cls saved_implss r4 _save_attrsz0TestBase.restore_operations.._save_attrsjs"!**4499;KFrP)r[r\)r0rar_r`s @@r4restore_operationszTestBase.restore_operationscs?     +"9(3FOO %#: s'+c#Kddlm}|j}||j_||j`t rft j rRt j}|jt j5t|t dddyt|tjy#1swYyxYww)z>Provide bound MetaData for a single test, dropping afterwards.r)schemaN) sqlalchemy.sqlrdrinstancemetadatarWin_transactionget_transactionrollbackbeginrrrU)r0requestrdrgtranss r4rgzTestBase.metadatats *??$$,!    % +.==?2BBDE NN /557 -<   *(FII >   sB C  C$C C C N)returnzGenerator[None, None, None])__name__ __module__ __qualname__r"is_sqlalchemy_futurerfixturer5rr;rArFrErSrOrbrrgrPr4rr,s!W__))""W__//W__00 __   __   __22 __44 V^^??rPrc eZdZy)rN)rorprqrtrPr4rrsrPrTc6gfd}t||fS)Ncnjt|jjyN)dialect)appendstrcompilery)sql multiparamsparamsbufengines r4dumpzcapture_db..dumps# 3s{{6>>{:;.configure$ RS C  rPrL) r?ioBytesIOStringIOrrrLrpatchobject)rrrLrs` @r4rrs vvj% jjlkkmIIx#>?  ' 'D!   -{I F sB B)B B)B&"B)c+Kddlm}ddlm}t j |}|j }|j|dfd}jd|itjfd}tjjtd |5dddy#1swYyxYww) Nr)_sqlite_file_dbr)eventbefore_cursor_executec.j|dzy)N )write)rXcursor statement parameterscontext executemanyrs r4bcez*capture_engine_context_buffer..bces )d"#rPrOc8|jdi|i|Srrrs r4rLz0capture_engine_context_buffer..configurerrPrL)envr sqlalchemyrrrrV listens_forrrrLrrr) rrrengrXrrLrrs ` @@r4capture_engine_context_bufferrs% ++-C  C ;;=D t45$6$II|T"#  ' 'D!   -{I F sB B?%B3* B?3B<8B?cj i}|rt||d<Gfdd}| G fddt}r|d<|r||d<t| || _d _s fd }t j | } n |d <d} | | |} t| tj_ | S) N)naming_conventiontarget_metadatac$eZdZdZfdZdZy)op_fixture..buffer_cg|_yr%linesr@s r4__init__z$op_fixture..buffer_.__init__s DJrPc|j}tjdd|}r.tjdd|}tjdd|}|jj |y)N[\n\t]z z\;\n*$)stripresubrrz)r0msgrRs r4rz!op_fixture..buffer_.writes[))+C&&B,CffWb#.ffYC0 JJ  c "rPcyr%rtr@s r4flushz!op_fixture..buffer_.flushs rPN)rorprqrrr)rRsr4buffer_rs  # rPrc6eZdZfdZfdZfdZfdZy)op_fixture..ctxcSr%rtr0rs r4get_bufzop_fixture..ctx.get_bufsJrPc$gjddyr%rrs r4clear_assertionsz(op_fixture..ctx.clear_assertionssCIIaLrPc tj|Dcgc]}tjdd|c}ycc}w)Nrr)rrrr)r0r}srs r4assert_zop_fixture..ctx.assert_s.  cBBFF9b!4B CBs< cjD]}tjdd||vsyJd|dj)NrrzCould not locate fragment z in )rrr)r0r}stmtrs r4assert_containsz'op_fixture..ctx.assert_contains sI  66)R-5 IIurPN)rorprqrrrr)rsr4ctxrs   D  rPrrR literal_bindsTct|tr t|}|jsJt|j }j |yrx) isinstancer{rsupports_executionr|r)r multiparamparamr}r ctx_dialects r4executezop_fixture..execute$sE$$Dz** **dll;l78C IIcNrP)ryrr) rrrsupports_native_boolean#non_native_boolean_check_constraintrMockr alembicop_proxy) ryrRrrnative_booleanrJrrrrOrrrs ` @@r4 op_fixturers D"*=N"O $ )C,X -_w'K!.< +;? 7  YY{GD #_ +z40G"7+GJJ NrPc0eZdZdZdZdZdZdZddZy) AlterColRoundTripFixture) alter_columnctjj|_t j |j|_t|j |_t|_ yr%) rrUrVrXrrLrr rrrgr@s r4setUpzAlterColRoundTripFixture.setUp=sEII%%' #--dii8TXX&  rPctd|}td|}|jjj||rJd|d|dy)Nqz Type objects  and  didn't compare as equivalent)r rimpl compare_type)r0t1t2c1c2s r4 _compare_typez&AlterColRoundTripFixture._compare_typeCsQ C_ C_88==--   LDF K L  rPctd||}td||}|jjj||||rJd|d|dy)Nr)server_defaultzserver defaults rr)r rrcompare_server_default)r0rs1rs2rrs r4_compare_server_defaultz0AlterColRoundTripFixture._compare_server_defaultJs[ CB / CB /88==77 B  OGI2 N O  rPctj|j|jj5|jj |jddd|jj y#1swY$xYwr%)r!%_safe_rollback_connection_transactionrXrkrgdrop_allcloser@s r4tearDownz!AlterColRoundTripFixture.tearDownQs[99$))D YY__  . MM " "499 - .  . .s &BB NcVt|jdd|jdtd|jdd|jdd}td |j|}t j |j5|j|jt|j}|jd d }|jjd |j|j|j |jnd |j rdnd |jdd|jdd |jdd|jdd dddt|j}|jd d }||}t#|dd|vr|dn |j|j%|d|jddt#|d|jd|j |j'|d|jd d|jd|dd|vr|dj(y|j%|jj*j(ydy#1swY.xYw)Nnamecolnametype nullableTr)rrxrF) existing_typeexisting_server_defaultexisting_nullablerrnew_column_nametype_default)r getrrrgr!_ensure_scope_for_ddlrXcreater get_columnsrrrrrrrrrrr) r0from_to_comparecolumntinspold_colnew_cols r4_run_alter_colz'AlterColRoundTripFixture._run_alter_colWs` IIfi ( IIffRj )YYz40 99%5t<   #t}}f -  . .tyy 9  HHTYY 499%D&&s+A.G GG  $kk,,8))*0//$uT2"ww'7? # 5ggfd+ !   0tyy!""3'* ?G FO%0GFOfkk   FOW[[A  GJ Z!IJ $$ FO KK 4 ( KK 0$w.().. ,,8))--22  M  s C#JJ(r%) rorprq __requires__rrrrrrtrPr4rr6s$ %L# LO = rPr)z postgresql://)rz Literal[True]rrrnz!Generator[io.BytesIO, None, None])rrrnz"Generator[io.StringIO, None, None])rrrnz/Generator[io.StringIO | io.BytesIO, None, None])rFNFN)@ __future__r configparser contextlibrrr&rr.typingrrrrr rr r r rrrrrsqlalchemy.testingrrsqlalchemy.testing.assertionsrsqlalchemy.testing.fixturesrrSQLAlchemyTablesTestrSQLAlchemyTestBasesqlalchemy.testing.utilrr assertionsrrr environmentr migrationr operationsr utilr!util.sqla_compatr" ConfigParsertesting_configreadrWrrrr__annotations__rrrrrtrPr4r*s"% )%#-9JFA$',(#%***,ZL!^?!^?B"& / *.&~ ,,#&,&, ,  - -'- -  4& '8   Qh^ ^ rP