ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 4]c@sddlZddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z d efd YZd efd YZd efdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZdejdd d!d"d#gfd$YZd%efd&YZejd'ZdS((iNi(tevent(tutil(turl(tDefaultDialect(t_distill_params(t _DDLCompilest AssertRulecBs,eZeZdZeZdZdZ RS(cCsdS(N((tselftexecute_observed((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pytprocess_statementscCststddS(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#eZeZddZdZRS(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.|jjdt|_|jst|_ 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 CompiledSQLcBsMeZdddZdZdZdZdZdZdZ 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[|jdkrtS|jdkr5itd6}ni}tj|jj|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|jjtrZ|jjjd|d|jjd}nB|jjjd|d|jj d|jj d|jjd}t j ddt j|}|j}|s|jg}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|rt|jd} xdtt|D]I\} } x:| D]*} | | ks| | | | krPqqW|| =PqWt }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|jr-|j|}n |j}t|tsQ|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&eZddZdZdZRS(cCs>tj|tj||_||_||_d|_dS(NR(RRR!R0tregext orig_regexRR(RRKR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRs    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.pyRJs  t DialectSQLcBs,eZdZdZdZdZRS(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_spacescCsktt|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.pyR6s  cCstjdd|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.pyROs   tCountStatementscBs#eZdZdZdZRS(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|jfndS(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  tAllOfcBseZdZdZRS(cGst||_dS(N(tsettrules(RRb((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyRscCsxt|jD]d}d|_|j||jr^|jj||jsZt|_nPq|jsd|_PqqWt|jdj|_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#eZdZdZdZRS(cGst||_dS(N(R;Rb(RRb((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR(scCsxh|jrj|jd}|j||jrB|jjdn|jrZ|j|_n|jrPqqW|jst|_ndS(Ni(RbR RRRRR(RRRd((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/assertsql.pyR +s       cCsQ|jr.|jdj r.|jdjn|jrMtt|jndS(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  tOrcBseZdZRS(cCsTxM|jD])}|j||jr t|_Pq q Wt|jdj|_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@stSQLExecuteObservedcBseZdZRS(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#eZdZdZdZRS(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 cGst|}t|j}xT|rq|jd}|j||jrMPq|jrtsnt|jqqW|rtstdn|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#stgtj|dfd}tj|dfd}z VWdtj|d|tj|d|jXdS(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 dSjr9jdj|kr9jd}n1t|ddd}jj||jjt||||dS(Niiii(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   }. "