ÿØÿà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@sQddlZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z d d lm Z d d lm Z d d lm Z d dlmZd dlmZd dlmZd dlmZd dlmZdejfdYZdejfdYZdejejfdYZdS(iNi(tconfig(tengines(tfixtures(teq_(t requirements(tColumn(tTablei(tDateTime(tfunc(tInteger(tselect(tsql(tString(ttesting(ttextt RowFetchTestcBsbeZeZedZedZdZdZdZ e j dZ dZ RS(cCs`td|tdtdttdtdtd|tdtdttdtdS(Ntplain_pktidt primary_keytdatai2t has_datesttoday(RRR tTrueR R(tclstmetadata((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt define_tablessc Cstjj|jjjidd6dd6idd6dd6idd6dd6gtjj|jjjidd6tjd d d d d d d 6gdS(NiRtd1Ritd2itd3iii iR(RtdbtexecutettablesRtinsertRtdatetime(R((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt insert_data&s  cCs_tjj|jjjj|jjjjj }t |ddt |dddS(NRiRR( RRRRRR torder_bytcRtfirstR(tselftrow((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_via_string6s 0cCs_tjj|jjjj|jjjjj }t |ddt |dddS(NiiR( RRRRRR R#R$RR%R(R&R'((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt test_via_int>s 0cCswtjj|jjjj|jjjjj }t ||jjjjdt ||jjjj ddS(NiR( RRRRRR R#R$RR%RR(R&R'((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_via_col_objectFs 0cCstjjt|jjjj|jjjjjdgj |jjjj }|j }t |j ddgt |ddS(NRR(RR(RRRR RRR$RtlabelR#RR%Rtkeys(R&tresultR'((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_row_with_dupe_namesNs ! c Cs|jj}t|jdjjgj}t|jj|jdg}t j j |j }t |dtjdddddddS(stest that a scalar select as a column is returned as such and that type conversion works OK. (this is half a SQLAlchemy Core test and half to catch database backends that may have unusual behavior with scalar selects.) txt somelabeliii iN(RRR taliasR$Rt as_scalarRR+RRRR%RR!(R&t datetabletsts2R'((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_row_w_scalar_select\s  $!(t__name__t __module__Rt __backend__t classmethodRR"R(R)R*Rt%duplicate_names_in_cursor_descriptionR.R6(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyRs   tPercentSchemaNamesTestcBsDeZdZdZeZedZdZdZ dZ RS(stests using percent signs, spaces in table and column names. This is a very fringe use case, doesn't work for MySQL or PostgreSQL. the requirement, "percent_schema_names", is marked "skip" by default. tpercent_schema_namescCs^td|tdttdt|j_tjdtjdtjd|j_dS(Ns percent%tablespercent%sspaces % more spaces( RRR Rt percent_tableR ttabletcolumntlightweight_percent_table(RR((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyRys  cCs|jj}xkidd6dd6idd6dd6idd6dd6idd6dd6gD]}tjj|j|qWW|jdS( Nispercent%i sspaces % more spacesii i i (RR>RRRR t _assert_table(R&R>tparams((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_single_roundtrips cCs|jj}tjj|jidd6dd6tjj|jidd6dd6idd6dd6idd6dd6g|jdS( Nispercent%i sspaces % more spacesii i i (RR>RRRR RB(R&R>((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_executemany_roundtrips    cCs|jj}|jj}xA||j||jfD]!}tttjj|j j |j dd d d d gtttjj|j j |j dj ddgj |j dddgtjj|j j |j dj}t|ddt|ddt||j ddt||j ddq7Wtjj|jjid |j d6tttjj|j j |j dddddgdS(Nspercent%ii ii i i sspaces % more spacesi(ii (ii (i i (i i (i i (i i (ii(ii(i i(i i(RR>RAR1RtlistRRRR R#R$twheretin_R%tupdatetvalues(R&R>RAR?R'((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyRBsD        %    (R=( R7R8t__doc__t __requires__RR9R:RRDRERB(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyR<ls tServerSideCursorsTestcBseZdZeZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZejdZRS(tserver_side_cursorscCs|jjjdkr|jS|jjjdkrPtdjj}t||S|jjjdkrtdjj}t||StSdS(Ntpsycopg2tpymysqlspymysql.cursorstmysqldbsMySQLdb.cursors( tenginetdialecttdrivertnamet __import__tcursorstSSCursort isinstancetFalse(R&tcursortsscursor((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt_is_server_sides  cCs#tjdi|d6|_|jS(NtoptionsRN(Rttesting_engineRR(R&RN((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt_fixtures cCstjj|jjdS(N(Rttesting_reapert close_allRRtdispose(R&((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttearDowns cCs:|jt}|jd}|j|js6tdS(Nsselect 1(R`RRR]R[tAssertionError(R&RRR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_global_stringscCs@|jt}|jtd}|j|js<tdS(Nsselect 1(R`RRRR]R[Re(R&RRR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_global_textscCsC|jt}|jtdg}|j|js?tdS(Ni(R`RRR R]R[Re(R&RRR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_global_exprscCsA|jt}|jtd}|j|j s=tdS(Nsselect 1(R`RZRRR]R[Re(R&RRR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_global_off_explicitscCsU|jt}tdgjdt}|j|}|j|jsQtdS(Nitstream_results( R`RZR texecution_optionsRRR]R[Re(R&RRR4R-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_stmt_optionscCsL|jt}|jjdtjd}|j|jsHtdS(NRjsselect 1( R`RZtconnectRkRRR]R[Re(R&RRR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_conn_options   cCsh|jt}tdgjdt}|jjdtj|}|j|j sdt dS(NiRj( R`RZR RkRRmRR]R[Re(R&RRR4R-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyt&test_stmt_enabled_conn_option_disabled$s!cCsV|jt}tdgjdt}|j|}|j|j sRtdS(NiRj( R`RR RkRZRR]R[Re(R&RRR4R-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_stmt_option_disabled/scCs|jt}tdgjdtj}|j|}|j|jsWt tdgd|}|j|}|j|j st dS(NiRjtfrom_obj( R`RZR RkRR1RR]R[Re(R&RRts1R-R5((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_aliases_and_ss5s!cCsO|jt}tdgj}|j|}|j|jsKtdS(Ni(R`RR twith_for_updateRR]R[Re(R&RRRrR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_for_update_exprAscCs:|jt}|jd}|j|js6tdS(NsSELECT 1 FOR UPDATE(R`RRR]R[Re(R&RRR-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_for_update_stringGscCsG|jt}td}|j|}|j|j sCtdS(Ns select 42(R`RZRRR]R[Re(R&RRR4R-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_text_no_ssLs cCsR|jt}tdjdt}|j|}|j|jsNtdS(Ns select 42Rj( R`RZRRkRRR]R[Re(R&RRR4R-((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_text_ss_optionRscCsj|j}|jttd|tdtdttdtd}|jdt|jj dd|jj ddt |j j |j jj jddg|jj|j jd kjd|j jd j t |j j |j jj jddg|jj t t tjd gj|jddS(Nt test_tableRRRi2t checkfirsttdata1tdata2iis updateds data2 updatedt*i(iR{(iR|(iR{(is data2 updated(RR`RRRR R tcreateR RRR R#R$RtfetchallRIRGRJRtdeleteRtcountt select_fromtscalar(R&tmdRy((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyttest_roundtripXs(  $ $$ (RN(R7R8RLRR9R]R`RdRfRgRhRiRlRnRoRpRsRuRvRwRxR tprovide_metadataR(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyRMs&           (R!tRRRt assertionsRRtschemaRRRRR R R R R Rt TablesTestRR<tTestBasetAssertsExecutionResultsRM(((sX/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/suite/test_results.pyts& Xn