ó ÃÌ4]c@sÐddlZddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z d efd „ƒYZd efd „ƒYZd efd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdejdd d!d"d#gƒfd$„ƒYZd%efd&„ƒYZejd'„ƒZdS((iÿÿÿÿNi(tevent(tutil(turl(tDefaultDialect(t_distill_params(t _DDLCompilest AssertRulecBs,eZeZdZeZd„Zd„Z RS(cCsdS(N((tselftexecute_observed((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytprocess_statementscCststdƒ‚dS(Ns?All statements are complete, but pending assertion rules remain(tFalsetAssertionError(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytno_more_statementss N( t__name__t __module__R t is_consumedtNonet errormessagetTruetconsume_statementR R (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRs  t SQLMatchRulecBseZRS((R R(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR$st CursorSQLcBs#eZeZdd„Zd„ZRS(cCs||_||_dS(N(t statementtparams(RRR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyt__init__+s cCsš|jd}|j|jks@|jdk rh|j|jkrhd|j|j|j|jf|_n.|jjdƒt|_|js–t|_ ndS(Nis5Testing for exact SQL %s parameters %s received %s %s( t statementsRRRt parametersRtpopRRR(RRtstmt((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR /s !  N(R RR RRRR (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR(s t CompiledSQLcBsMeZddd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS( tdefaultcCs||_||_||_dS(N(RRtdialect(RRRR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyREs  cCs"tjdd|jƒ}||kS(Ns[\n\t]t(tretsubR(RRtreceived_statementR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyt _compare_sqlJscCs[|jdkrtƒS|jdkr5itd6}ni}tj|jƒjƒ|SdS(NRt postgresqltimplicit_returning(RRRRtURLt get_dialect(RRR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyt_compile_dialectNs c Cs|j}|j|ƒ}t|jjtƒrZ|jjjd|d|jjdƒƒ}nB|jjjd|d|jj d|jj d|jjdƒƒ}t j ddt j|ƒƒ}|j}|sÛ|jƒg}n"g|D]}|j|ƒ^qâ}||fS(sxreconstruct the statement and params in terms of a target dialect, which for CompiledSQL is just DefaultDialect.Rtschema_translate_mapt column_keystinlines[\n\t]R (tcontextR)t isinstancetcompiledRRtcompiletexecution_optionstgetR+R,R!R"Rt text_typeRtconstruct_params( RRR-tcompare_dialectR/t_received_statementRt_received_parameterstm((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR6Ys&       "c CsV|j}|j|ƒ\}}|j|ƒ}|j||ƒ}|r|dk rt|ƒ}t|ƒ}xŒ|r÷|r÷t|jdƒƒ} xdtt|ƒƒD]I\} } x:| D]*} | | ksÙ| | | | kr³Pq³q³W|| =Pq Wt }PqlW|s|rt }qqn|r.t |_ d|_ n$|j |ƒi|d6|d6|_ dS(NiR#treceived_parameters(R-R6t _all_paramsR$RtlisttdictRt enumerateR RRRt_failure_message( RRR-R6R7Rt equivalentt all_paramst all_receivedtparamtidxtreceivedt param_key((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR {s8         cCs]|jrUtj|jƒr-|j|ƒ}n |j}t|tƒsQ|g}n|SdSdS(N(RRtcallableR.R;R(RR-R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR:¬s   cCsd|jjddƒ|fS(NszTesting for compiled statement %r partial params %r, received %%(received_statement)r with params %%(received_parameters)rt%s%%(Rtreplace(Rtexpected_params((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR>¸sN( R RRRR$R)R6R R:R>(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRDs  " 1 tRegexSQLcBs&eZdd„Zd„Zd„ZRS(cCs>tj|ƒtj|ƒ|_||_||_d|_dS(NR(RRR!R0tregext orig_regexRR(RRKR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRÂs    cCsd|j|fS(Ns{Testing for compiled statement ~%r partial params %r, received %%(received_statement)r with params %%(received_parameters)r(RL(RRI((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR>ÉscCst|jj|ƒƒS(N(tboolRKtmatch(RRR#((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR$ÐsN(R RRRR>R$(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRJÁs  t DialectSQLcBs,eZd„Zd„Zd„Zd„ZRS(cCs |jjS(N(R-R(RR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR)ÕscCstjdd|ƒ}||kS(Ns[\n\t]R (R!R"(Rt real_stmtt received_stmtR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyt_compare_no_spaceØscCsktt|ƒj|ƒ\}}x:|jD]}|j|j|ƒr(Pq(q(Wtd|ƒ‚||jjfS(NsICan't locate compiled statement %r in list of statements actually invoked( tsuperROR6RRRRR R-tcompiled_parameters(RRRQtreceived_paramsRP((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR6Üs  cCs¯tjdd|jƒ}|jjj}|dkrKtjdd|ƒ}nZd}|dkrfd}n*|dkr{d }n|d krd}ntjd||ƒ}||kS( Ns[\n\t]R tpyformats :([\w_]+)s%(\1)stqmarkt?tformats%stnumeric(R!R"RR-Rt paramstyleR(RRR#RR[trepl((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR$ís       (R RR)RRR6R$(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyROÔs   tCountStatementscBs#eZd„Zd„Zd„ZRS(cCs||_d|_dS(Ni(tcountt_statement_count(RR^((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRs cCs|jd7_dS(Ni(R_(RR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR scCs;|j|jkr7ts7td|j|jfƒ‚ndS(Ns,desired statement count %d does not match %d(R^R_R R (R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR s (R RRR R (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR]s  tAllOfcBseZd„Zd„ZRS(cGst|ƒ|_dS(N(tsettrules(RRb((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRscCs•xŽt|jƒD]d}d|_|j|ƒ|jr^|jj|ƒ|jsZt|_nPq|jsd|_PqqWt|jƒdj|_dS(Ni(R;RbRRR RtdiscardR(RRtrule((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR s       (R RRR (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR`s tEachOfcBs#eZd„Zd„Zd„ZRS(cGst|ƒ|_dS(N(R;Rb(RRb((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR(scCs„xh|jrj|jd}|j|ƒ|jrB|jjdƒn|jrZ|j|_n|jrPqqW|js€t|_ndS(Ni(RbR RRRRR(RRRd((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR +s       cCsQ|jr.|jdj r.|jdjƒn|jrMtt|ƒjƒndS(Ni(RbRR RSRe(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR 9s (R RRR R (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRe's  tOrcBseZd„ZRS(cCsTxM|jD])}|j|ƒ|jr t|_Pq q Wt|jƒdj|_dS(Ni(RbR RRR;R(RRRd((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR As    (R RR (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRf@stSQLExecuteObservedcBseZd„ZRS(cCs1||_||_t||ƒ|_g|_dS(N(R-t clauseelementRRR(RR-Rht multiparamsR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRLs  (R RR(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRgKstSQLCursorExecuteObservedRRR-t executemanycBseZRS((R R(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRjSst SQLAssertercBs#eZd„Zd„Zd„ZRS(cCs g|_dS(N(t accumulated(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR]scCs|j|_|`dS(N(Rmt_final(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyt_close`s cGs§t|Œ}t|jƒ}xT|rq|jdƒ}|j|ƒ|jrMPq|jrtsnt|jƒ‚qqW|rts£tdƒ‚n|js£|j ƒndS(Nis Additional SQL statements remain( ReR;RnRR RRR R R (RRbRdtobservedR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytassert_ds      (R RRRoRq(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRl\s  c#s•tƒ‰g‰tj|dƒ‡fd†ƒ}tj|dƒ‡‡fd†ƒ}z ˆVWdtj|d|ƒtj|d|ƒˆjƒXdS(Ntbefore_executecs|||fˆ(dS(N((tconnRhRiR(torig(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytconnection_execute{stafter_cursor_executecs|s dSˆjr9ˆjdj|kr9ˆjd}n1t|ˆdˆdˆdƒ}ˆjj|ƒ|jjt||||ƒƒdS(Niÿÿÿÿiii(RmR-RgtappendRRj(RstcursorRRR-Rktobs(tasserterRt(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytcursor_executes ! (RlRt listens_fortremoveRo(tengineRuR{((RzRtsO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyt assert_engineus !$ (t collectionst contextlibR!R RRR~Rtengine.defaultRt engine.utilRtschemaRtobjectRRRRRJROR]R`ReRfRgt namedtupleRjRltcontextmanagerR(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyts2   }. "