ó ÃÌ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_statementscCsdS(N((R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytno_more_statementssN( t__name__t __module__tFalset 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 R R 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.pyR5Ys&       "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,R5t _all_paramsR#RtlisttdictRt enumerateR RRRt_failure_message( RRR,R5R6Rt 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.pyR9¬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 R RRR#R(R5R R9R=(((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 R/tregext orig_regexRR(RRJR((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(RK(RRH((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR=ÉscCst|jj|ƒƒS(N(tboolRJtmatch(RRR"((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR#ÐsN(R R RRR=R#(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRIÁ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( tsuperRNR5RRQRtAssertionErrorR,tcompiled_parameters(RRRPtreceived_paramsRO((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR5Üs  cCs¯tjdd|jƒ}|jjj}|dkrKtjdd|ƒ}nZd}|dkrfd}n*|dkr{d }n|d krd}ntjd||ƒ}||kS( Ns[\n\t]Rtpyformats :([\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 R R(RQR5R#(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRNÔ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|jkrndS(N(R^R_(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR s(R R RR 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 R RR (((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 RRRe(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR 9s (R R RR 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 R R (((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 R R(((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ƒ}x?|r\|jdƒ}|j|ƒ|jrMPq|jrqqW|rfn|js||jƒndS(Ni(ReR:RnRR RRR (RRbRdtobservedR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytassert_ds      (R R RRoRq(((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 RRRR~Rtengine.defaultRt engine.utilRtschemaRtobjectRRRRRIRNR]R`ReRfRgt namedtupleRjRltcontextmanagerR(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyts2   }. "