L i^ddlZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lm Z dd lm Z dd lm Z ddlm Z ddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!Gd d!ejDZ#Gd"d#ejDZ$Gd$d%ejJZ&Gd&d'ejDZ'Gd(d)ejJZ(Gd*d+ejDZ)Gd,d-ejDZ*Gd.d/ejVe*Z,Gd0d1ejDZ-Gd2d3ejJZ.y)4N)testing) assert_raises)config)engines)eq_)fixtures) is_not_none)is_true)mock)ne_)provide_metadata) expect_raises)expect_raises_message) requirements) set_default_schema_on_connection)Column)Table) bindparam)dialects)event)exc)Integer)literal_column)select)String)Compiled)inspect_getfullargspecceZdZdZdZy)PingTestTctjj5}ttjjj |j jdddy#1swYyxYwN)rdbconnectr dialectdo_ping connectiondbapi_connection)selfconns k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_dialect.py test_do_pingzPingTest.test_do_ping,sS ZZ   ! T  ""**4??+K+KL    s AA//A8N)__name__ __module__ __qualname__ __backend__r.r-r"r")s Kr4r"cdeZdZdZdZej eedZdZ y)ArgSignatureTestatest that all visit_XYZ() in :class:`_sql.Compiler` subclasses have ``**kw``, for #8988. This test uses runtime code inspection. Does not need to be a ``__backend__`` test as it only needs to run once provided all target dialects have been imported. For third party dialects, the suite would be run with that third party as a "--dburi", which means its compiler classes will have been imported by the time this test runs. c# KtjD],}|jdrtjd|z.t g}|r8|j d}|j|j||r7yyw)N_zsqlalchemy.dialects.%sr) r__all__ startswith importlib import_modulerpopextend__subclasses__)dstackclss r-_all_subclassesz ArgSignatureTest._all_subclassesAsu!! FA<<$''(@1(DE F ))A,C LL++- .Is%BABB)paramsc#(K|jywr$)param)r+requests r-all_subclasseszArgSignatureTest.all_subclassesMsmmsc |}|jD]R}|jdst||}t|}t |j d|j d|dTy)Nvisit_zCompiler visit method .z:() does not accommodate for **kw in its argument signature)__dict__r:getattrr r varkwr/)r+rHrBkmethinsps r- test_all_visit_methods_accept_kwz1ArgSignatureTest.test_all_visit_methods_accept_kwQsg A||H%sA-d3JJ,S\\N!A3?II r4N) r/r0r1__doc__rCrfixturelistrHrRr3r4r-r6r63s8  W__D!2345 r4r6cReZdZdZdZdZedZejdZ dZ y) ExceptionTestzTest basic exception wrapping. DBAPIs vary a lot in exception behavior so to actually anticipate specific exceptions from real round trips, we need to be conservative. eachTc htd|tdtddtdtdy)N manual_pkidTF primary_key autoincrementdata2rrrrrBmetadatas r- define_tableszExceptionTest.define_tablesls,   4d% H 66": &  r4c tjj5}|j}|j |j j jdddttj|j|j j jddd|jdddy#1swYyxYw)Nrd1r[r_) rr%r&beginexecutetablesrZinsertrrIntegrityErrorrollback)r+r,transs r-test_integrity_errorz"ExceptionTest.test_integrity_errorus YY   DJJLE LL %%,,.q$0G  ""  %%,,.$'   NN    s B#C  Ccvtjj5} |jt t dJ#t j$r7}t|}t|jt|vsJYd}~nd}~wwxYwt|tsJ dddy#1swYyxYw)Numéil) rr%r&rirrr DBAPIErrorstrorig isinstance)r+r,errerr_strs r-test_exception_with_non_asciiz+ExceptionTest.test_exception_with_non_asciis YY    ,D 1  VN7$;<=u>> 1c(388}C000 1 gs+ ++ , , ,s.B/%AB-B B/ BB//B8N) r/r0r1rS run_deletesr2 classmethodrdr$duplicate_key_raises_integrity_errorrorwr3r4r-rWrW`sDKK  667 ,r4rWceZdZdZdZdZdZdZdZe jjdZ e jje jjdZe jjd Zy ) IsolationLevelTestTisolation_levelctjt}|d}|d}t|j d|g}|r|j Stj dy)Ndefault supported AUTOCOMMITz(no non-default isolation level available)rget_isolation_levelsrset differencer= skip_test)r+levelsrrss r- _get_non_default_isolation_levelz3IsolationLevelTest._get_non_default_isolation_levels\226:#;'  N % %|W&= > 557N   G Hr4cttjjjt j tdy)Nr)r rr%r'default_isolation_levelrr)r+s r-test_default_isolation_levelz/IsolationLevelTest.test_default_isolation_levels0 II   5 5  - -f 5i @ r4c|j}tjj5}|j }t |||j |t|j ||jj|jjt|j |dddy#1swYyxYw)Nr}) rrr%r&get_isolation_levelrexecution_optionsr r'reset_isolation_levelr)r*)r+ non_defaultr,existings r- test_non_default_isolation_levelz3IsolationLevelTest.test_non_default_isolation_levels;;= YY   6D//1H + &  " "; " ? ((*K 8 LL . .00  ((*H 5 6 6 6s BC  CcRtjt}|d}t|j dgD]}tj j 5}|j|t|j||j}|jt|j|dddtj j 5}t|j|ddddy#1swYPxYw#1swYxYw)Nrrr}r) rrrrrr%r&rr rrhrm)r+r all_levelslevelr,rns r-test_all_levelsz"IsolationLevelTest.test_all_levelss226:K( _//? E""$ 7&&u&=D,,.6  D,,.6 7""$ ,,.9%    7 7  sA'D(DD D& c |}ttjddd|jjddj t jtd5|jddddy#1swYyxYw) z4test for the new get_isolation_level_values() methodInvalid value 'FOO3' for isolation_level. Valid isolation levels for '' are , rr}N) rr ArgumentErrorr'namejoinrrrr)r+connection_no_transr)s r-#test_invalid_level_execution_optionz6IsolationLevelTest.test_invalid_level_execution_options~) "   ""''  55f=kJ    @  ( ( ( ? @ @ @s #A??Bc 4|td}ttjddd|jj ddj tjtd5|jd d d y #1swYy xYw) ztest for the new get_isolation_level_values() method and support for the dialect-level 'isolation_level' parameter. rr}optionsrrrrrN) dictrrrr'rrrrrr&)r+testing_engineengs r-test_invalid_level_engine_paramz2IsolationLevelTest.test_invalid_level_engine_paramszT%%@A "        55f=kJ     KKM   s 4BBcJtjt}|d}tt |dj |dgd}|d|i}|j 5}t|j|ddd|j 5}|j|t|j|ddd|j 5}t|j|dddy#1swYxYw#1swYIxYw#1swYyxYw)Nrrrrr~rr}) rrrsortedrrr&r rr)r+rrrrer,s r-%test_dialect_user_setting_is_restoredz8IsolationLevelTest.test_dialect_user_setting_is_restoreds226:# F;'(33Wl4KL   $5y#A B YY[ 7D ((*I 6 7YY[ 5D  " "7 " ; ((*G 4 5YY[ 7D ((*I 6 7 7 7 7 5 5 7 7s$%D-D DD  DD"N)r/r0r1r2 __requires__rrrrrrequiresget_isolation_level_valuesr#dialect_level_isolation_level_paramr independent_readonly_connectionsrr3r4r-r|r|sK'L I 6$, 00@1@$ 00 99:1* 66777r4r|cBeZdZdZdZdZedZddZdZ dZ d Z e jje jd gd e jd ddgd Ze jj"e jdddgdZy)AutocommitIsolationTestrX) autocommitTc ltd|tdtddtdtddy) N some_tabler[TFr\r_r`)test_needs_acidrarbs r-rdz%AutocommitIsolationTest.define_tabless/   4d% H 66": &  r4Fc|r7|jjj|d|j|j }|j |jjj ddd|jt|jt|jjjj|rdnd|j|j 5|j |jjjdddy#1swYyxYw)NT) checkfirstrz some datarg)rjrcreatecommitrhrirkrmr scalarrcr[delete)r+r,r ensure_tablerns r-_test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits)s  KK " " ) )$4 ) @ KKM  KK " " ) ) +A{-K   KKt{{5577::; <A   ZZ\ : LL//668 9 : : :s 4D>>Ec|}|jd}|j|d|jj|jj |j|dy)Nrr}TF)rrr'rr)r*)r+rr,c2s r-test_autocommit_onz*AutocommitIsolationTest.test_autocommit_on=sV"  # #L # A ##B- (()G)GH ##D%0r4c,|}|j|dy)NF)rr+rr,s r-test_autocommit_offz+AutocommitIsolationTest.test_autocommit_offFs" ##D%0r4c|}|jd}|j|d|jtjtd|j|dy)Nrr}TrF)rrrrrrs r-.test_turn_autocommit_off_via_default_iso_levelzFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_levelJsg#%%l%C ##D$/ (==fE  ##D%0r4autocommit_setting)falseengineoptionblock_rollbackcvi}t|rd|d<|jrd|d<||}|j}|jr|j d|j ||jxs |jdt jj|jd|jj 5}|jddd|js|s*tjt jgytjgy#1swYXxYw) NTskip_autocommit_rollbackrr~rr})rrm)wraps)boolrr&rrrr patchobjectr)rmcloserr mock_callscall)r+rrrkwrr,check_rollbacks r-test_autocommit_blockz-AutocommitIsolationTest.test_autocommit_blockXs   -1B) *  $ $$0B !+~~  $ $  " "< " @ ##   % % B);)B)B $ ZZ   OOZt/G/G    JJL   # #> ))DIIK= 9 ))2 .  s D//D8use_dialect_settingc|r |ddi}n|jd}tjt}|d}|j 5}|j |dddd|j 5}|j||j |dddd|j 5}|j |ddddy#1swYrxYw#1swYAxYw#1swYyxYw) z test #10147r~rrr}rTNF)rrrrr&r)r+rrrrrr,s r-#test_dialect_autocommit_is_restoredz;AutocommitIsolationTest.test_dialect_autocommit_is_restoredws (9<'HIA 22 ,3A226:# YY[ 4D  ' 'd 3 4YY[ 5D  " "7 " ;  ' 'e 4 5YY[ 4D  ' 'd 3 4 4 4 4 5 5 4 4s$C?%C$<C0C!$C-0C9N)F)r/r0r1rxrr2ryrdrrrrrrr variationrrrr3r4r-rrsK"LK  :(11 1 ..W+-JKW'$7/8L//8 66W,tUm<4=74r4rceZdZedZy) EscapingTestc D|j}td|tdtd}|j t j t j j5}|j|jtd|j|jtdt|jt|jjj!|jjt#dk(dt|jt|jjj!|jjt#dk(dd d d y #1swYy xYw) z|test that the DBAPI accommodates for escaped / nonescaped percent signs in a way that matches the compiler tr_r`z some % value)r_zsome %% other valuez'some % value'z'some %% other value'N)rcrrrrrr%rhrirkrr rrrr_wherer)r+mrr,s r-test_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_trips$ MM #q&4 5  YY__  $ LLT~%> ? LLT/D%E F  13388$**N3C$DD     13388$**N3J$KK &     s *D#FFN)r/r0r1rrr3r4r-rrsr4rc,eZdZdZdZdZdZdZdZy) WeCanSetDefaultSchemaWEventsTestT)default_schema_name_switchctjjj}t j }|j 5 dddt|jj|y#1swY*xYwr$)rr%r'default_schema_namerrr&r )r+rrs r-test_control_casez2WeCanSetDefaultSchemaWEventsTest.test_control_cases^$ii//CC$$& [[]    CKK + +-@A  s A44A=ctjjj}t j }t j|dd}|j5}|jj|}t|tjdddt|jj|y#1swY*xYw)Nr&cBtt|tjyr$rr test_schemar*connection_records r- on_connectzMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert..on_connect ,(&*<*< r4) rr%r'rrrr listens_forr&_get_default_schema_namer r)r+rrrr,what_it_should_bes r-test_wont_work_wo_insertz9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_inserts$ii//CC$$&   3 *  +  [[] 7d # D DT J  !6#5#5 6 7 CKK + +-@A  7 7s %6CC cxtj}tj|ddd}|j 5}|j j |}t|tjdddt|j jtjy#1swY8xYw)Nr&TrkcBtt|tjyr$rrs r-rzRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect..on_connectrr4) rrrrr&r'rr rrr)r+rrr,rs r-test_schema_change_on_connectz>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connects$$&   3 $ 7  8  [[] 7d # D DT J  !6#5#5 6 7 CKK + +V-?-?@  7 7s 6B00B9c"tj}tj|ddd}|j 5}|j }|j j|}t|tj|j|j j|}t|tjdddt|j jtjy#1swY8xYw)Nr&TrcBtt|tjyr$r)r*args r-rz\WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions..on_connectrr4) rrrrr&rhr'rr rrrmr)r+rrr,rnrs r-'test_schema_change_works_w_transactionszHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactionss$$&   3 $ 7  8  [[] 7dJJLE # D DT J  !6#5#5 6 NN  # D DT J  !6#5#5 6 7 CKK + +V-?-?@ 7 7s B DDN) r/r0r1r2rrrrrr3r4r-rrs$K2LBB" AAr4rc eZdZy)&FutureWeCanSetDefaultSchemaWEventsTestN)r/r0r1r3r4r-rrs r4rceZdZdZej dddddddd d d d d ddddddddddZeejjdZ ejdZ edZ edZy)DifficultParametersTestT)boring)zper cent)z per % cent)z%percent)zpar(ens))zpercent%(ens)yah)zcol:ons)_starts_with_underscore)zdot.s)zmore :: %colons%)_name)___name)z[BracketsAndCase]) 42numbers)z percent%signs)z has spaces)z /slashes/)z more/slashes)zq?marks)1param)z1col:on paramname)argnamesc V|}td|tdtdt|tdd}|j ||j |j jdd|d it|j|j|j|d k(}t|j|d t|j|j|j|t|k(}|j ||d ij}t|j|d t|j|j|j|j!d d g}|j |jy) Nrr[T)r]r`F)nullablerz some namezsome other_name)rrrrrrirkvaluesrrrr rrfirst_mappingin_)r+r r)rcrrstmtrows r-!test_round_trip_same_named_columnz9DifficultParametersTest.test_round_trip_same_named_columnse     4d 3 4e 4    188:,,dAt[-IJKacc$i &&qss4yK'?@ J  d #[1acc$i &&qss4yIdO'CD  k':;AAC CLL  ,acc$i && CCIMM;(9: ;  4 &&(r4c #$Ktd|tdttdtdtdtd}|j ||j |j dddd d d d d d ddd dddd g|yw)Nmytablemyidrr`descraa_desc)rrrrbb_descrrc_descr@d_desc)rrrrrrirk)r+rcr)rs r-multirow_fixturez(DifficultParametersTest.multirow_fixtureBs   67 # 66": & 66": &   z" NN C:C:C:C:    sBBc|}t|jjj|jjt |dk(}|j ||di}t|dy)Nxvaluerr)rrrrrrrr r+r r)r tbl1rress r- test_standalone_bindparam_escapez8DifficultParametersTest.test_standalone_bindparam_escapeYs_ dffkk"(( FFKK9Yc: : y#&67 C r4c n|}t|jjj|jjj t |ddgj|jj}|j||ddgij}t|ddgy)Nrrr#r@rr) rrrrrrrorder_byscalarsallr r%s r-*test_standalone_bindparam_escape_expandingzBDifficultParametersTest.test_standalone_bindparam_escape_expandingds  466;;  U466;;??9YsCj#IJ K Xdffkk "    C:'>?CCE C!Qr4N)r/r0r1r2r combinationstough_parametersrrunusual_column_name_charactersrrTr r(r-r3r4r-rrsK+w++$-2 77$)8$)L __,  r4rcleZdZdZdZedZejdZ dZ dZ dZ dZ d Zd Zy ) ReturningGuardsTestz=test that the various 'returning' flags are set appropriatelyTc htd|tdtddtdtdy)Nrr[TFr\r_r`rarbs r-rdz!ReturningGuardsTest.define_tablesxs,   4d% H 66": &  r4cB|jjfd}|S)Nc |jjj}|r|stttj dj jdj jd5j||dddi|dddi|d dd igdddyj||dddi|dddi|d dd ig}t|jgd y|s9ttj5j||dddidddyj||dddi}t|jd gy#1swYyxYw#1swYyxYw) NzDialect z\+zW with current server capabilities does not support .*RETURNING when executemany is usedrr_rfrd2rd3)r)r)rr8) returningrr[rrStatementErrorr'rdriverrir r,rrq)r executemany id_param_nameexpect_successresultr)rs r-goz(ReturningGuardsTest.run_stmt..gos>>!##&&)D%/**#J$6$6$;$;#F tf-K:s4"E 8E EE)rjr)r+r)r@rs ` @r-run_stmtzReturningGuardsTest.run_stmts KKMM- .^ r4c|jj}|j}||dd|jjy)NFr[)rjrrkr'insert_returningr+r)rArrs r-test_insert_singlez&ReturningGuardsTest.test_insert_singles4 KKMMxxzudJ$6$6$G$GHr4c|jj}|j}||dd|jjy)NTr[)rjrrkr'insert_executemany_returningrDs r-test_insert_manyz$ReturningGuardsTest.test_insert_manys7 KKMMxxz $j00MM r4cD|jj}|j|jdddddddddg|j j |j jtdk(}||d d|jjy Nrrfrgrr6rr7b_idF) rjrrirkupdaterrr[rr'update_returningrDs r-test_update_singlez&ReturningGuardsTest.test_update_single KKMM HHJ$'$'$'  xxz)F*; ;<ufj&8&8&I&IJr4cD|jj}|j|jdddddddddg|j j |j jtdk(}||d d|jjy Nrrfrgrr6rr7rKT) rjrrirkrLrrr[rr'update_executemany_returningrDs r-test_update_manyz$ReturningGuardsTest.test_update_many KKMM HHJ$'$'$'  xxz)F*; ;< $ 2 2 O O r4cD|jj}|j|jdddddddddg|j j |j jtdk(}||d d|jjyrJ) rjrrirkrrrr[rr'delete_returningrDs r-test_delete_singlez&ReturningGuardsTest.test_delete_singlerOr4cD|jj}|j|jdddddddddg|j j |j jtdk(}||d d|jjyrQ) rjrrirkrrrr[rr'delete_executemany_returningrDs r-test_delete_manyz$ReturningGuardsTest.test_delete_manyrTr4N)r/r0r1rSr2ryrdrrTrArErHrNrSrWrZr3r4r-r2r2ssVGK   __22hI K  $K  r4r2)/r;rrrrr r r r r rr assertionsrrr provisionrschemarrrrrrrrrr sql.compilerrutilr TestBaser"r6 TablesTestrWr|rrrFutureEngineMixinrrr2r3r4r-rds&&.!8$*x  *x((*Z5,H''5,p}7**}7@y4h11y4x8$$B@Ax'8'8@AF   @ rh//rjU (--U r4