L iA ddlmZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z Gdd ZGd d eZGd d eZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddZGd d!ej4d!gd"ZGd#d$Zej:d%Zy)&) annotationsN)event)url)DefaultDialect)BaseDDLElementc$eZdZdZdZdZdZdZy) AssertRuleFNTcyNselfexecute_observeds b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/testing/assertsql.pyprocess_statementzAssertRule.process_statements cJd)Nz?All statements are complete, but pending assertion rules remainr rs rno_more_statementszAssertRule.no_more_statementss  % ur)__name__ __module__ __qualname__ is_consumed errormessageconsume_statementrrr rrr r sKL  rr c eZdZy) SQLMatchRuleNrrrr rrrr&srrceZdZddZdZy) CursorSQLNc.||_||_||_yr ) statementparamsr)rr#r$rs r__init__zCursorSQL.__init__+s" !2rc|jd}|j|jk7s%|j\|j|jk7rCd|_d|jd|jd|jd|j|_y|jj dd|_|jsd|_yy)NrTzTesting for exact SQL z parameters z received  ) statementsr#r$ parametersrrpopr)rrstmts rrzCursorSQL.process_statement0s**1- >>T^^ + KK # t(F%)D "NNKKNNOO     ' ' + +A .#D #..)-&/r)NTrrrr%rr rrr!r!*s 3 .rr!c:eZdZ d dZdZdZdZdZdZdZ y) CompiledSQLNc<||_||_||_||_yr )r#r$dialectenable_returning)rr#r$r0r1s rr%zCompiledSQL.__init__Gs!#  0rcNtjdd|j}||k(SN[\n\t])resubr#rrreceived_statementr+s r _compare_sqlzCompiledSQL._compare_sqlOs#vviT^^4!T))rcR|jdk(r^t}d|_|jr?dx|_x|_|_d|_d|_d|_ d|_ |jsJ|Stjj|jjSNdefaultT)r0rsupports_default_metavaluer1insert_returningupdate_returningdelete_returninguse_insertmanyvaluessupports_multivalues_insertupdate_returning_multifromdelete_returning_multifrominsert_executemany_returningrURLcreate get_dialect)rrr0s r_compile_dialectzCompiledSQL._compile_dialectSs <<9 $$&G26G .$$(7+C,/3,6:3592592 ;;;;N77>>$,,/;;=? ?rc`|j}|j|}d}d}d|jvr|jd}nd}t|jt r|jj ||}nH|jj |||jj|jj|}tjddt|}|j} | s|j|g} || fS| D cgc]} |j| |} } || fScc} w)zxreconstruct the statement and params in terms of a target dialect, which for CompiledSQL is just DefaultDialect.Nschema_translate_map)r0rL) cache_keyr0 column_keysfor_executemanyrLr4r5)extracted_parameters)contextrJexecution_options isinstance clauseelementrcompilecompiledrNrOr6r7strr)construct_params) rrrQcompare_dialectrMrPmap_rV_received_statementr)_received_parametersms rr[zCompiledSQL._received_statementmsi#**//0@A    "W%>%> >,,-CDDD &44n E'55=='%)>H (55==#'#,,88 ' 0 0 @ @%) >H!ffYCMB%00 )))=*$ #$888$ $)),@*$ $#$888$s D+c|j}|j|\}}|j|}|j||}|r||zt |}t |}|r\|rZt |j d} tt |D]!\} } | D]} | | vs | | | | k7s|| =nd}n|r|rZ|s|rd}|rd|_d|_ y|j||||dz|_ y)NrFT)r9received_parameters) rQr[ _all_paramsr:listdictr* enumeraterr_failure_message) rrrQr[r\r$ equivalent all_params all_receivedparamidxreceived param_keys rrzCompiledSQL.process_statements4"**484L4L 5 11!!'*&&'79LM !!&\ #$89  \ !23E)24 3E)F X). "I!* 9#+I#6% :J#J % "!-S 1!$&+ -!\.!&J #D  $D  $ 5 5 &!':';!D rc|jrHt|jr|j|}n |j}t|ts|g}|Syr )r$callablerSra)rrQr$s rr`zCompiledSQL._all_paramssE ;; $W-fd+ Mrczd|jjdddt|jdddSNzTesting for compiled statement %%% partial params zE, received %(received_statement)r with params %(received_parameters)r)r#replacereprrrexpected_paramss rrdzCompiledSQL._failure_messages7 &&sD1_%--c48   rr<) rrrr%r:rJr[rr`rdr rrr.r.Fs+JN1*@439j1f   rr.c"eZdZ ddZdZdZy)RegexSQLNctj|tj||_||_||_||_||_yr ) rr%r6rUregex orig_regexr$r0r1)rrzr$r0r1s rr%zRegexSQL.__init__s? d#ZZ&   0rczd|jjdddt|jdddS)Nz Testing for compiled statement ~rprqrrzE, received %(received_statement)r with params %(received_parameters)r)r{rsrtrus rrdzRegexSQL._failure_messages7 ''T2_%--c48   rcJt|jj|Sr )boolrzmatch)rrr9s rr:zRegexSQL._compare_sqlsDJJ$$%7899r)Nr=F)rrrr%rdr:r rrrxrxsFK1  :rrxc<eZdZdZdZfdZdZdZdZxZ S) DialectSQLc.|jjSr )rQr0rs rrJzDialectSQL._compile_dialects''///rc:tjdd|}||k(Sr3)r6r7)r real_stmt received_stmtr+s r_compare_no_spacezDialectSQL._compare_no_space svviY/$$rct||\}}|jD] }|j|j|s nt d|z||j jfS)NzICan't locate compiled statement %r in list of statements actually invoked)superr[r(rr#AssertionErrorrQcompiled_parameters)rrrreceived_paramsr __class__s rr[zDialectSQL._received_statements).)D * &  *44 I%%i&9&9=I !.0=>  .66JJJJrc|j}tjdd|j}|j dd}|dk(rtjdd|}n^d}|dk(rd }n=|d k(rd }n5|j d r$t jd |dk(rdndfd}tjd||}|j dd}|S)Nr4r5z::z!!pyformatz :([\w_]+)z%(\1)sqmark?formatz%snumericnumeric_dollar$:c"tSr )next)r]counternum_identifiers rreplz4DialectSQL._dialect_adjusted_statement..repl5s,-d7m_==r) paramstyler6r7r#rs startswith itertoolscount)rr0rr+rrrs @@r_dialect_adjusted_statementz&DialectSQL._dialect_adjusted_statement s'' vviT^^4||D$'  #66, 48DDW$x'&&y1#//!,(26F(FC>66,d3D||D$' rcV|j|jj}||k(Sr )rrQr0r8s rr:zDialectSQL._compare_sql?s.//  $ $ , , "T))rcd|j|jjjdddt |jdddSro)rrQr0rsrtrus rrdzDialectSQL._failure_messageEsS 00$,,44'#t$%_%--c48  r) rrrrJrr[rr:rd __classcell__rs@rrrs"0%K">*  rrceZdZdZdZdZy)CountStatementsc ||_d|_yNrr_statement_count)rrs rr%zCountStatements.__init__Ts !rc.|xjdz c_y)Nr)rrs rrz!CountStatements.process_statementXs "rcv|j|jk7r Jd|j|jfzy)Nz,desired statement count %d does not match %drrs rrz"CountStatements.no_more_statements[sC ::.. . H %%L 5 /rN)rrrr%rrr rrrrSs"#rrceZdZdZdZy)AllOfc$t||_yr )setrulesrrs rr%zAllOf.__init__ds Z rcXt|jD]k}d|_|j||jr0|jj ||jsd|_y|jrdd|_yt|jdj|_yNTr)rarrrrdiscardrrrules rrzAllOf.process_statementgs$ AD $D   " "#3 4 ""4(zz'+D$&&$(! A!%TZZ 0 3 @ @D rNr,r rrrrcs  Arrc*eZdZdZdZfdZxZS)EachOfc$t||_yr )rarrs rr%zEachOf.__init__ys %[ rcv|jsd|_d|_|jr|jd}|j||jr|jj dn|j r|j |_|jrn |jr|jsd|_yy)NTFr)rrrrr*rrs rrzEachOf.process_statement|szz#D %*D "jj::a=D  " "#3 4 q!""$($5$5!%%jjzz#D rc|jr7|jdjs|jdjy|jrt| yyr)rrrr)rrs rrzEachOf.no_more_statementssE ::djjm77 JJqM , , . ZZ G & (r)rrrr%rrrrs@rrrxs!$$))rrceZdZfdZxZS) Conditionalc<|r t||yt||yr )rr%)r conditionr else_rulesrs rr%zConditional.__init__s  G e $ G j )r)rrrr%rrs@rrrs **rrceZdZdZy)Orc|jD](}|j||js!d|_yt|jdj|_yr)rrrrarrs rrzOr.process_statementsXJJ AD  " "#3 4#'   A !%TZZ 0 3 @ @D rN)rrrrr rrrrsArrceZdZdZdZy)SQLExecuteObservedc||_||_|r||_g|_y|r|g|_g|_yg|_g|_yr )rQrTr)r()rrQrT multiparamsr$s rr%zSQLExecuteObserved.__init__sK * )DO  %hDO!DOrc,t|jSr )rWr(rs r__repr__zSQLExecuteObserved.__repr__s4??##rN)rrrr%rr rrrrs  $rrc eZdZy)SQLCursorExecuteObservedNrr rrrrs  rr)r#r)rQ executemanyceZdZdZdZdZy) SQLAssertercg|_yr ) accumulatedrs rr%zSQLAsserter.__init__s rc*|j|_|`yr )r_finalrs r_closezSQLAsserter._closes&&  rc2t|}t|j}|rO|jd}|j ||j rn |j rJ|j |rO|r Jd|z|j s|jyy)Nrz$Additional SQL statements remain: %s)rrarr*rrrr)rrrobservedr#s rassert_zSQLAsserter.assert_su~ $ QI  " "9 -""/d///u   LAHL L5!!  # # %"rN)rrrr%rrr rrrrs&rrc#Ktgtj|dfd}tj|dfd} tj|d|tj|d|j y#tj|d|tj|d|j wxYww)Nbefore_executec|||fddyr r )connrTrr$rRorigs rconnection_executez)assert_engine..connection_executes  f4Qrafter_cursor_executec,|syjr+jdj|urjd}n2t|ddd}jj||jjt ||||y)Nrrr)rrQrappendr(r) rcursorr#r)rQrobsasserterrs rcursor_executez%assert_engine..cursor_executes   $$R(00G;&&r*C$Wd1gtAwQHC  ' ' ,  $:w   r)rr listens_forremover)enginerrrrs @@r assert_enginers}H D v/0515 v56 7 * V3^D V-/AB  V3^D V-/ABsA CB?CACC) __future__r collections contextlibrr6r5rrrengine.defaultrschemarr rr!r.rxrrrrrrr namedtuplerrcontextmanagerrr rrrs# +#    : . .8d ,d N:{:4I I X j  AJA*)Z):*&*AA$$" K"= &&2 ((r