ÿØÿà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@sddlZddlZddlZddlmZddlmZddlmZddlmZddZ dd Z d e fd YZ d Zd ZddZddZde fdYZdefdYZdefdYZdefdYZdefdYZdefdYZejZdZdZdZdZd Zdd!Zed"Z dd#Z!d$Z"dd%Z#dd&Z$dd'Z%d(Z&dS()iNi(tconfigi(tutil(t decorator(tinspect_getfullargspeccCs,t}t||}|jj||S(N(tcompoundt _as_predicatetskipstadd(t predicatetreasontruletpred((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytskip_ifs cCs,t}t||}|jj||S(N(RRtfailsR(RR R R ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytfails_ifs RcBseZdZdZdZdZedZdZdZ dZ dZ d Z e jd Zd Zd d Zd dZRS(cCs(t|_t|_t|_dS(N(tsetR Rttags(tself((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt__init__"s  cCs |j|S(N(R(Rtother((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt__add__'scGst}|jj|j|jj|j|jj|jxG|D]?}|jj|j|jj|j|jj|jqIW|S(N(RR tupdateRR(RtotherstcopyR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR*s  cCsZt}|jjd|jD|jjd|jD|jj|j|S(Ncss|]}t|VqdS(N(t NotPredicate(t.0tfail((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pys 7scss|]}t|VqdS(N(R(Rtskip((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pys 8s(RR RRR(RR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytnot_5s  cCs|jtjS(N(tenabled_for_configRt_current(R((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytenabled<scCs8x1|jj|jD]}||rtSqWtSdS(N(RtunionR tFalsetTrue(RRR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR@s cCs;g|jj|jD]!}||r|j|^qS(N(RR R t _as_string(RRR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytmatching_config_reasonsGscCs0t|jj| o,| p,|jj|S(N(tboolRt intersection(Rt include_tagst exclude_tags((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt include_testNscCs=|jj|j|jj|j|jj|jdS(N(RRR R(RR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt_extendTscsQt|dr#|jj|Stfd}||}|_|S(Nt_sa_exclusion_extendcsjtj|||S(N(t_doRR(tfntargstkw(R(sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytdecorate^s(thasattrR+R*R(RR-R0t decorated((RsP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt__call__Ys  ccsnt}|jj|jj|jy dVWn&tk rY}|jtj|nX|j tjdS(N( RR RRR t Exceptiont_expect_failureRRt_expect_success(Rt all_failstex((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytfail_iffs  c OsxI|jD]>}||r d|j|j|f}tj|q q Wy|||}Wn,tk r}|j||d|jnX|j|d|j|SdS(Ns '%s' : %stname(Rt__name__R#Rt skip_testR4R5R6( RtcfgR-R.R/Rtmsgt return_valueR8((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR,rs tblockcCsVxO|jD]7}||r d||j|t|fGHPq q Wtj|dS(Ns%s failed as expected (%s): %s (R R#tstrRtraise_from_cause(RRR8R:R((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR5s  csg|js dSxS|jD]}|sPqqWtd|djfd|jDfdS(Ns Unexpected success for '%s' (%s)s and c3s|]}|jVqdS(N(R#(RR(R(sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pys s(R tAssertionErrortjoin(RRR:R((RsP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR6s  (R;t __module__RRRRtpropertyRRR$R)R*R3t contextlibtcontextmanagerR9R,R5R6(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR!s          cCs t|gS(N(R(ttagname((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt requires_tagscCst}|jj||S(N(RRR(ttagnamestcomp((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRs cCst|}tt||S(N(RR R(RR ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytonly_ifs cCst|}tt||S(N(RRR(RR ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt succeeds_ifs t PredicatecBs5eZeddZedZdedZRS(cCst|tr"|j|j|St|trV|rR|jdkrR||_n|St|ttfrt g|D]}|j|^qu|St|t rt |St|t j r[tjd|}|std|n|jd}|jd}|jdr?t d|jdjdDnd}t |||d|St j|rwt||Ststd |dS( Ns.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?s(Couldn't locate DB name in predicate: %riiicss|]}t|VqdS(N(tint(Rtd((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pys st.t descriptionsunknown predicate type: %s(t isinstanceRt as_predicateRRORStNonetlistRt OrPredicatettuplet SpecPredicateRt string_typestretmatcht ValueErrortgrouptsplittcallabletLambdaPredicateR!RC(tclsRRSR ttokenstdbtoptspec((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRUs2 &  7 cCs||}|r| }n|ji|r=|jjjndd6|r\|jjjndd6|rodndd6|rdndd6S( Ns tdrivers tdatabasesdoesn't supports does supporttdoesnt_supportt does_support(RSReturltget_driver_nametget_backend_name(RRtnegatetbool_((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt_format_descriptions   cCs tdS(N(tNotImplementedError(RRRo((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR#sN(R;REt classmethodRVRUR!RqR#(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyROs# tBooleanPredicatecBs)eZddZdZedZRS(cCs ||_|pd||_dS(Ns boolean %s(tvalueRS(RRuRS((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRs cCs|jS(N(Ru(RR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR3scCs|j|d|S(NRo(Rq(RRRo((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR#sN(R;RERVRR3R!R#(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRts  RZcBseZd d d dZiejd6ejd6ejd6ejd6ej d6ej d6ej d6dd 6Z d Z ed ZRS( cCs(||_||_||_||_dS(N(ReRfRgRS(RReRfRgRS((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRs   ts==s!=s<=s>=tincCs||dko||dkS(Nii((tvaltpair((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytttbetweencCs|j}d|jkr3|jjd\}}n|jd}}|r\|j|kr\tS|dk r{|j|kr{tS|jdk r|dkstdt|}t |jdr|jp|j |j}|||j St SdS(Nt+s%DBAPI version specs not supported yetR3( ReR`RVR:R!RhRfRCt_server_versionR1t_opsRgR"(RRtenginetdialectRhtversiontoper((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR3 s  +cCs|jdk r|j|S|jdkrJ|r<d|jSd|jSn:|rjd|j|j|jfSd|j|j|jfSdS(Nsnot %ss%ss not %s %s %ss%s %s %s(RSRVRqRfReRg(RRRo((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR#!s  N(R;RERVRtoperatortlttgtteqtnetletgetcontainsRR3R!R#(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRZs         RbcBs/eZddddZdZedZRS(cst}|ds+fd|_n |_|p=d|_|pLi|_|rd||_n!jr|j|_n d|_dS(NicsS(N((Re(tlambda_(sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR{4R|scustom function((RRR.R/RSt__doc__(RRRSR.R/Rg((RsP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR1s     cCs |j|S(N(R(RR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR3@scCs |j|S(N(Rq(RRRo((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR#CsN(R;RERVRR3R!R#(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRb0s RcBs)eZddZdZedZRS(cCs||_||_dS(N(RRS(RRRS((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRHs cCs|j| S(N(R(RR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR3LscCs2|jr|j|| S|jj|| SdS(N(RSRqRR#(RRRo((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR#Os N(R;RERVRR3R!R#(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRGs  RXcBs>eZddZdZedZdZedZRS(cCs||_||_dS(N(t predicatesRS(RRRS((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRWs cCs(x!|jD]}||r tSq WtS(N(RR"R!(RRR ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR3[s cs8rd}nd}|jfd|jDS(Ns and s or c3s$|]}|jdVqdS(RoN(R#(Rtp(RRo(sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pys gs(RDR(RRRot conjunction((RRosP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt _eval_stras  cCs7|jdk r d|j|S|j|dtSdS(NsNot Ro(RSRVRqRR"(RR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt _negation_strjscCs@|r|j|S|jdk r/|j|S|j|SdS(N(RRSRVRqR(RRRo((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR#ps   N( R;RERVRR3R!RRR#(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRXVs    cCst|||tjS(N(RZRR(ReRfRg((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt _is_excluded}scCsD|j}t|jdd}|dkr6d}n|j|S(s#Return a server_version_info tuple.tserver_version_infoN((tconnecttgetattrRRVtclose(RtconnR((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRs     cGs&tg|D]}tj|^q S(N(RXRORU(tdbsRe((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytdb_specscCstttdS(Nsmark as execute(R RtR!(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytopenscCstttdS(Nsmarked as skip(R RtR"(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytclosedscCsttt|pdS(Nsexpected to fail(RRtR"(R ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyR scGstt|dS(NsFuture feature(RRb(R-targ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytfuturescCs t||S(N(R(ReR ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytfails_onscGs,ttg|D]}tj|^q S(N(RNRXRORU(RRe((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytfails_on_everything_exceptscCs t||S(N(R (ReR ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyRscCs8ttgtj|D]}tj||^qS(N(RMRXRtto_listRORU(RR Re((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytonly_onscCstt||||S(N(R RZ(ReRfRgR ((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytexcludescGs>|stdtg|D]}tj|^q|S(Nsno queries sent!(RCRXRORU(Rtqueriestquery((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pytagainsts%('RGRR\R|RRRt util.compatRRVR RtobjectRRJRRMRNRORtRZRbRRXRURRRRRRR RRRRRRR(((sP/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/exclusions.pyt sB     ~    8 9$