ÿØÿà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@s/ddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z d d lm Z d d lm Z d d lm Z d d lm Z d dlmZd dlmZdejfdYZdejfdYZdejfdYZdS(i(t assert_raises(tconfig(teq_(tfixtures(tprovide_metadata(t requirements(tColumn(tTablei(texc(tInteger(tliteral_column(tselect(tString(tcompatt ExceptionTestcBsDeZdZdZeZedZej dZ dZ RS(sTest basic exception wrapping. DBAPIs vary a lot in exception behavior so to actually anticipate specific exceptions from real round trips, we need to be conservative. teachc Cs;td|tdtdtdttdtddS(Nt manual_pktidt primary_keyt autoincrementtdatai2(RRR tTruetFalseR (tclstmetadata((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt define_tabless c Cstjjz}|j}|j|jjjidd6dd6tt j |j|jjjidd6dd6|j WdQXdS(NiRtd1R( RtdbtconnecttbegintexecutettablesRtinsertRRtIntegrityErrortrollback(tselftconnttrans((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyttest_integrity_error(s $c Cstjj}y,|jttdgts=tWnCtj k r}t |}t |j t |kstnXt j rt|t stnt|t stWdQXdS(Numéil(RRRRR R RtAssertionErrorRt DBAPIErrortstrtorigR tpy2kt isinstance(R#R$terrterr_str((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyttest_exception_with_non_ascii;s % ( t__name__t __module__t__doc__t run_deletesRt __backend__t classmethodRRt$duplicate_key_raises_integrity_errorR&R/(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyRs  tAutocommitTestcBsDeZdZdZeZedZdZdZ dZ RS(Rt autocommitc CsAtd|tdtdtdttdtddtdS(Nt some_tableRRRRi2ttest_needs_acid(RRR RRR (RR((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyRZs cCs|j}|j|jjjidd6dd6|jt|jt|jjj j g|rpdnd|j|jjj dS(NiRs some dataR( RRRR9R R"RtscalarR tcRtNonetdelete(R#R$R8R%((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyt_test_conn_autocommitsds $ !cCsOtjj}|jdd}|j|t|j|j|tdS(Ntisolation_levelt AUTOCOMMIT(RRRtexecution_optionsR?Rt invalidateR(R#R$tc2((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyttest_autocommit_onrs  cCs#tjj}|j|tdS(N(RRRR?R(R#R$((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyttest_autocommit_offys(R8( R0R1R3t __requires__RR4R5RR?RERF(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyR7Rs  t EscapingTestcBseZedZRS(c Cs|j}td|tdtd}|jtjtjj}|j|j t dd|j|j t ddt |j t |jjgj|jjtdkdt |j t |jjgj|jjtdkdWdQXdS( s|test that the DBAPI accommodates for escaped / nonescaped percent signs in a way that matches the compiler ttRi2s some % valuessome %% other values'some % value's'some %% other value'N(RRRR tcreateRRRRR tdictRR;R R<RtwhereR (R#tmRIR$((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyttest_percent_sign_round_trips  !(R0R1RRN(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyRH~sN(tRRRRRRtschemaRRRR R R R tutilR t TablesTestRR7tTestBaseRH(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_dialect.pyts ?,