T2Q4" ddlZddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z Gd d eZGd d eZGd deZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGdd ejd gd!ZGd"d#eZejd$ZdS)%N)event)util)url)DefaultDialect)_distill_params) _DDLCompilesc&eZdZdZdZdZdZdZdS) AssertRuleFNTcdSNselfexecute_observeds /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/sqlalchemy/testing/assertsql.pyprocess_statementzAssertRule.process_statements cJd)NFz?All statements are complete, but pending assertion rules remainrrs rno_more_statementszAssertRule.no_more_statementss  %  ur)__name__ __module__ __qualname__ is_consumed errormessageconsume_statementrrrrrr r sBKL        rr ceZdZdS) SQLMatchRuleNrrrrrrrr$sDrrc eZdZdZddZdZdS) CursorSQLFNc"||_||_dSr ) statementparams)rr$r%s r__init__zCursorSQL.__init__+s" rc"|jd}|j|jks|j9|j|jkr)d|jd|jd|jd|j|_dS|jdd|_|js d|_dSdS)NrzTesting for exact SQL z parameters z received  T) statementsr$r% parametersrpoprr)rrstmts rrzCursorSQL.process_statement/s*1- >T^ + + K # t(F(F NNNKKKNNNOO       ' + +A . . .#D #. .)-&&& . .rr )rrrrr&rrrrr"r"(s=.....rr"c:eZdZd dZdZdZdZdZdZd Z dS) CompiledSQLNdefaultc0||_||_||_dSr )r$r%dialect)rr$r%r1s rr&zCompiledSQL.__init__Es"  rcDtjdd|j}||kSN[\n\t])resubr$)rrreceived_statementr,s r _compare_sqlzCompiledSQL._compare_sqlJs"viT^44!T))rc|jdkrtS|jdkrddi}ni}tj|jdi|S)Nr/ postgresqlimplicit_returningTr)r1rrURL get_dialect)rrr%s r_compile_dialectzCompiledSQL._compile_dialectNsi <9 $ $!## #||++.56374<((4466@@@@ @rc>|j}||}t|jjt r:|jj||jdnO|jj||jj |jj |jdtj ddtj}|j}|sg}nfd|D}||fS)zxreconstruct the statement and params in terms of a target dialect, which for CompiledSQL is just DefaultDialect.schema_translate_map)r1rA)r1 column_keysinlinerAr4r5c:g|]}|Sr)construct_params).0mcompileds r z3CompiledSQL._received_statement..us4$$$12))!,,$$$r)contextr? isinstancerHr$r compileexecution_optionsgetrBrCr6r7r text_typer*rE)rrrJcompare_dialect_received_statementr*_received_parametersrHs @rrQzCompiledSQL._received_statementYsF#*//0@AA g&0, ? ? '199'%,%>%B%B*&&:HH'199'#,8'.%,%>%B%B*&& :H!fYDN84L4LMM%0  $,$=$=$?$?#@ $$$$6@$$$ #$888rc0|j}||\}}||}|||}|r|t |}t |}|ro|rmt |d} tt |D]'\} } | D]} | | vs| | | | krn|| =n(d}n|r|m|s|rd}|rd|_d|_ dS| |||dz|_ dS)NrFT)r8received_parameters) rJrQ _all_paramsr9listdictr+ enumeraterr_failure_message) rrrJrQrRr% equivalent all_params all_receivedparamidxreceived param_keys rrzCompiledSQL.process_statement{s"*484L4L 5 5 11!!'**&&'79LMM  '!!&\\ #$899  \ !2!233E)24 3E3E)F)F X). " "I!* 9 9#+I#6% :J#J#J %$K !-S 1!E !&&+ -!\.''!&J  #D  $D    $ 5 5f = =&9';AA!D   rc|jrPtj|jr||}n|j}t|ts|g}|SdSr )r%rcallablerKrV)rrJr%s rrUzCompiledSQL._all_paramss] ; }T[)) %W--fd++ " M4rcd|jdddt|dddS)NzTesting for compiled statement %%% partial params E, received %(received_statement)r with params %(received_parameters)r)r$replacereprrexpected_paramss rrYzCompiledSQL._failure_messagesL &&sD1111_%%--c48888   rNr/) rrrr&r9r?rQrrUrYrrrr.r.Ds *** A A A 9 9 9D///b         rr.c"eZdZddZdZdZdS)RegexSQLNr/ct|tj||_||_||_||_dSr )rr&r6rLregex orig_regexr%r1)rrpr%r1s rr&zRegexSQL.__init__s@d###Z&&   rcd|jdddt|dddS)Nz Testing for compiled statement ~rdrerfrg)rqrhrirjs rrYzRegexSQL._failure_messagesL ''T2222_%%--c48888   rcPt|j|Sr )boolrpmatch)rrr8s rr9zRegexSQL._compare_sqls!DJ$$%788999rrl)rrrr&rYr9rrrrnrnsF    :::::rrnc0eZdZdZdZfdZdZxZS) DialectSQLc|jjSr )rJr1rs rr?zDialectSQL._compile_dialects'//rc:tjdd|}||kSr3)r6r7)r real_stmt received_stmtr,s r_compare_no_spacezDialectSQL._compare_no_spaces viY//$$rctt||\}}|jD]}||j|rn t d|z||jjfS)NzICan't locate compiled statement %r in list of statements actually invoked) superrwrQr)r|r$AssertionErrorrJcompiled_parameters)rrr{received_paramsrz __class__s rrQzDialectSQL._received_statements). * *  . / / '  *4  I%%i&9=II  !.0=>  .6JJJrctjdd|j}|jjj}|dkrtjdd|}n2d}|dkrd}n|dkrd }n|d krd}tjd||}||kS) Nr4r5pyformatz :([\w_]+)z%(\1)sqmark?formatz%snumeric)r6r7r$rJr1 paramstyle)rrr8r,rrepls rr9zDialectSQL._compare_sqlsviT^44&-5@  # #6, 488DDDW$$x''y((6,d33D!T))r)rrrr?r|rQr9 __classcell__rs@rrwrwsj000%%%KKKKK"*******rrwc eZdZdZdZdZdS)CountStatementsc"||_d|_dSNrcount_statement_count)rrs rr&zCountStatements.__init__ s !rc&|xjdz c_dS)N)rrs rrz!CountStatements.process_statements "rcX|j|jkrJd|j|jfzdS)NFz,desired statement count %d does not match %drrs rrz"CountStatements.no_more_statementssD :. . . H %L  5 / .rN)rrrr&rrrrrrr sA"""###rrceZdZdZdZdS)AllOfc.t||_dSr )setrulesrrs rr&zAllOf.__init__sZZ rc:t|jD]a}d|_|||jr+|j||jsd|_dS|js d|_dSbt|jdj|_dSNTr)rVrrrrdiscardrrrules rrzAllOf.process_statements$$ A AD $D   " "#3 4 4 4  ""4(((z,'+D$& $(!  !%TZ 0 0 3 @D   rN)rrrr&rrrrrrs7   AAAAArrc*eZdZdZdZfdZxZS)EachOfc.t||_dSr )rVrrs rr&zEachOf.__init__/s%[[ rc|jrf|jd}|||jr|jdn|jr |j|_|jrn|jf|js d|_dSdS)NrT)rrrr+rrrs rrzEachOf.process_statement2sj :a=D  " "#3 4 4 4 6 q!!!!" 6$($5!% j z $#D    $ $rc|jr3|jdjs!|jddS|jr)tt|dSdSr)rrrr~r)rrs rrzEachOf.no_more_statements@sq : 5djm7 5 JqM , , . . . . . Z 5 &$   2 2 4 4 4 4 4 5 5r)rrrr&rrrrs@rrr.sV!!! $ $ $555555555rrceZdZdZdS)Orc|jD](}|||jr d|_dS)t|jdj|_dSr)rrrrVrrs rrzOr.process_statementHskJ A AD  " "#3 4 4 4 #'  !%TZ 0 0 3 @D   rN)rrrrrrrrrGs(AAAAArrceZdZdZdS)SQLExecuteObservedcZ||_||_t|||_g|_dSr )rJ clauseelementrr*r))rrJr multiparamsr%s rr&zSQLExecuteObserved.__init__Ss- *)+v>>rN)rrrr&rrrrrRs#rrceZdZdS)SQLCursorExecuteObservedNr rrrrrZs  Drr)r$r*rJ executemanyc eZdZdZdZdZdS) SQLAssertercg|_dSr ) accumulatedrs rr&zSQLAsserter.__init__dsrc"|j|_|`dSr )r_finalrs r_closezSQLAsserter._closegs&    rc*t|}t|j}|rJ|d}|||jrn|jrJ|j|J|r Jd|js|dSdS)NrFz Additional SQL statements remain)rrVrr+rrrr)rrrobservedr$s rassert_zSQLAsserter.assert_ksu~ $$ 0 QI  " "9 - - - 0" 0/d///u  0  & << < <5! &  # # % % % % % & &rN)rrrr&rrrrrrrcsA&&&&&rrc#Ktgtj|dfd}tj|dfd} Vtj|d|tj|d|dS#tj|d|tj|d|wxYw)Nbefore_executec|||fdd<dSr r)connrrr%origs rconnection_executez)assert_engine..connection_executes f4QQQrafter_cursor_executec2|sdSjr"jdj|urjd}n>t|ddd}j||jt ||||dS)Nrrr)rrJrappendr)r) rcursorr$r*rJrobsasserterrs rcursor_executez%assert_engine..cursor_executes  F   -$R(0G;;&r*CC$Wd1gtAwQHHC  ' ' , , ,  $:w        r)rr listens_forremover)enginerrrrs @@r assert_enginer|s}}H D v/005555105  v566     76 * V3^DDD V-/ABBB  V3^DDD V-/ABBBs BAC) collections contextlibr6r5rrrrengine.defaultr engine.utilrschemar objectr rr"r.rnrwrrrrr namedtuplerrcontextmanagerrrrrrs ++++++))))))!!!!!!               :   ..... ...8} } } } } ,} } } @:::::{:::.+*+*+*+*+*+*+*+*\     j    AAAAAJAAA*55555Z5552AAAAAAAA     K"===   &&&&&&&&&2 &&&&&r