U ab9 @sbddlZddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z Gd d d eZGd d d eZGd ddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdd d eZGd!d"d"ed"d#d$d%d&gZGd'd(d(eZejd)d*ZdS)+N)event)util)url)DefaultDialect)_distill_cursor_params) _DDLCompilesc@s(eZdZdZdZdZddZddZdS) AssertRuleFNTcCsdSNselfexecute_observedr r ]C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\testing\assertsql.pyprocess_statementszAssertRule.process_statementcCsds tddS)NFz?All statements are complete, but pending assertion rules remain)AssertionErrorr r r rno_more_statementsszAssertRule.no_more_statements)__name__ __module__ __qualname__ is_consumed errormessageconsume_statementrrr r r rr s r c@s eZdZdS) SQLMatchRuleNrrrr r r rr$src@seZdZdddZddZdS) CursorSQLNTcCs||_||_||_dSr ) statementparamsr)r rrrr r r__init__)szCursorSQL.__init__cCsj|jd}|j|jks,|jdk rH|j|jkrHd|j|j|j|jf|_n|jdd|_|jsfd|_dS)Nrz5Testing for exact SQL %s parameters %s received %s %sT) statementsrr parametersrpoprr)r rstmtr r rr.s$    zCursorSQL.process_statement)NTrrrrrr r r rr(s rc@sFeZdZdddZddZddZd d Zd d Zd dZddZ dS) CompiledSQLNdefaultcCs||_||_||_dSr )rrdialect)r rrr'r r rrDszCompiledSQL.__init__cCstdd|j}||kSN[\n\t])resubr)r rreceived_statementr#r r r _compare_sqlIszCompiledSQL._compare_sqlcCsN|jdkrt}d|_|S|jdkr.ddi}ni}tj|jf|SdS)Nr&TZ postgresqlZimplicit_returning)r'rZsupports_default_metavaluerURLcreate get_dialect)r rr'rr r r_compile_dialectMs   zCompiledSQL._compile_dialectcs|j}||}d|jkr&|jd}nd}t|jtrH|jj||dn|jj||jj|jj |dt ddt }|j}|sg}nfdd|D}||fS) zxreconstruct the statement and params in terms of a target dialect, which for CompiledSQL is just DefaultDialect.schema_translate_mapN)r'r3)r' column_keysfor_executemanyr3r)r*csg|]}|qSr )construct_params).0mcompiledr r zsz3CompiledSQL._received_statement..)contextr2execution_options isinstance clauseelementrcompiler:r4r5r+r,r text_typer!r6)r rr<Zcompare_dialectZmap__received_statementr!_received_parametersr r9rrB\s0      zCompiledSQL._received_statementc Cs|j}||\}}||}|||}|r|dk rt|}t|}|r|rt|d} tt|D]8\} } | D] } | | ks| | | | krtqhqt|| =qFqhd}qqF|s|rd}|rd|_d|_ n| |||d|_ dS)NrFT)r-Zreceived_parameters) r<rB _all_paramsr.listdictr" enumeraterr_failure_message) r rr<rBrCrZ equivalent all_paramsZ all_receivedparamidxZreceivedZ param_keyr r rrs@  zCompiledSQL.process_statementcCs>|jr6t|jr||}n|j}t|ts2|g}|SdSdSr )rcallabler>rE)r r<rr r rrDs   zCompiledSQL._all_paramscCs"d|jddt|ddfS)NzzTesting for compiled statement %r partial params %s, received %%(received_statement)r with params %%(received_parameters)r%%%)rreplacereprr Zexpected_paramsr r rrHs  zCompiledSQL._failure_message)Nr&) rrrrr.r2rBrrDrHr r r rr%Cs $1 r%c@s&eZdZd ddZddZddZdS) RegexSQLNr&cCs,t|t||_||_||_||_dSr )rrr+r@regex orig_regexrr')r rSrr'r r rrs   zRegexSQL.__init__cCs"d|jddt|ddfS)Nz{Testing for compiled statement ~%r partial params %s, received %%(received_statement)r with params %%(received_parameters)rrMrN)rTrOrPrQr r rrHs  zRegexSQL._failure_messagecCst|j|Sr )boolrSmatch)r rr-r r rr.szRegexSQL._compare_sql)Nr&)rrrrrHr.r r r rrRs  rRcs4eZdZddZddZfddZddZZS) DialectSQLcCs|jjSr )r<r'r r r rr2szDialectSQL._compile_dialectcCstdd|}||kSr()r+r,)r real_stmt received_stmtr#r r r_compare_no_spaceszDialectSQL._compare_no_spacecsJtt||\}}|jD]}||j|rq>qtd|||jjfS)NzICan't locate compiled statement %r in list of statements actually invoked) superrWrBr rZrrr<Zcompiled_parameters)r rrYZreceived_paramsrX __class__r rrBs zDialectSQL._received_statementcCsttdd|j}|jjj}|dkr2tdd|}n:d}|dkrDd}n|dkrRd }n |d kr^d}td||}||kS) Nr)r*Zpyformatz :([\w_]+)z%(\1)sZqmark?formatz%snumeric)r+r,rr<r' paramstyle)r rr-r#rareplr r rr.s zDialectSQL._compare_sql)rrrr2rZrBr. __classcell__r r r\rrWs rWc@s$eZdZddZddZddZdS)CountStatementscCs||_d|_dSNr)count_statement_count)r rfr r rrszCountStatements.__init__cCs|jd7_dS)N)rgr r r rrsz!CountStatements.process_statementcCs(|j|jkr$ds$td|j|jfdS)NFz,desired statement count %d does not match %d)rfrgrrr r rrs  z"CountStatements.no_more_statementsN)rrrrrrr r r rrdsrdc@seZdZddZddZdS)AllOfcGst||_dSr )setrulesr rkr r rrszAllOf.__init__cCsjt|jD]H}d|_|||jrB|j||js.connection_executeZafter_cursor_executecsj|sdSjr*jdj|kr*jd}n&t|ddd}j||jt||||dS)Nrrhr)r~r<ruappendr r{)rcursorrr!r<r|ZobsZasserterrr rcursor_executes"  z%assert_engine..cursor_execute)r}rZ listens_forremover)enginerrr rr assert_engines   r) collections contextlibr+r*rrrrZengine.defaultrZ engine.utilrZschemarobjectr rrr%rRrWrdrirqrrrtru namedtupler{r}contextmanagerrr r r rs<      .