U a5@sxddlZddlZddlZddlZddlmZddlmZddlmZddlm Z dddZd?ddZGddde ZGdddeZGdddeZGdddeZGdddeZGd d!d!eZejZd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd@d,d-Zed.d/Z dAd0d1Z!d2d3Z"dBd4d5Z#dCd6d7Z$dDd8d9Z%d:d;Z&dS)ENconfig)util) decorator)inspect_getfullargspeccCs t}t||}|j||SN)compound _as_predicateskipsadd predicatereasonrulepredr^C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\testing\exclusions.pyskip_ifs  rcCs t}t||}|j||Sr )r r failsr rrrrfails_ifs  rc@seZdZddZddZddZddZd d Zed d Z d dZ ddZ ddZ ddZ ddZejddZddZd!ddZd"ddZd S)#r cCst|_t|_t|_dSr )setrr tagsselfrrr__init__#szcompound.__init__cCs ||Sr )r rotherrrr__add__(szcompound.__add__cCs4t}|j|j|j|j|j|j|Sr )r r updaterr)rrrrras_skips+s zcompound.as_skipscGsht}|j|j|j|j|j|j|D].}|j|j|j|j|j|jq4|Sr r rr r r)rZotherscopyrrrrr 2sz compound.addcCsHt}|jdd|jD|jdd|jD|j|j|S)Ncss|]}t|VqdSr  NotPredicate.0failrrr ?sz compound.not_..css|]}t|VqdSr r$)r'skiprrrr)@sr")rr#rrrnot_=s z compound.not_cCs |tjSr )enabled_for_configr_currentrrrrenabledDszcompound.enabledcCs&|j|jD]}||rdSqdS)NFTr unionr)rrrrrrr,Hszcompound.enabled_for_configcsfdd|j|jDS)Ncsg|]}|r|qSr _as_string)r'rrrr Psz4compound.matching_config_reasons..r/rrrrrmatching_config_reasonsOs  z compound.matching_config_reasonscCs$t|j| o | p |j|Sr )boolr intersection)rZ include_tags exclude_tagsrrr include_testVszcompound.include_testcCs.|j|j|j|j|j|jdSr )r r rrrrrr_extend\szcompound._extendcs<t|dr|j|Stfdd}||}|_|S)N_sa_exclusion_extendcsjtj|f||Sr )_dorr-)fnargskwrrrdecoratefsz#compound.__call__..decorate)hasattrr;r:r)rr=r@Z decoratedrrr__call__as  zcompound.__call__c csht}|j|j|jz dVWn0tk rV}z|tj|W5d}~XYnX| tjdSr ) r rr r r0 Exception_expect_failurerr-_expect_success)rZ all_failsexrrrfail_ifns  zcompound.fail_ifc Os|jD],}||rdt||f}t|qz|||}Wn4tk rv}z|j|||jdW5d}~XYnX|j||jd|SdS)Nz '%s' : %s)name) r rZget_current_test_namer2Z skip_testrCrD__name__rE) rcfgr=r>r?r*msgZ return_valuerFrrrr<zs  $z compound._doblockcCsl|jD]J}||rtjr,t|jddd}nt|}td||||fqhqtj|t dddS)Nzutf-8ignore)errorsz%s failed as expected (%s): %s r)with_traceback) rrZpy2kunicodeencodestrprintr2Zraise_sysexc_info)rrrFrHr(Zstr_exrrrrDs zcompound._expect_failurec sH|js dS|jD]2}|rtd|dfdd|jDfqdS)Nz Unexpected success for '%s' (%s) and c3s|]}|VqdSr r1r&rrrr)sz+compound._expect_success..)rAssertionErrorjoin)rrrHr(rrrrEs zcompound._expect_successN)rL)rL)rI __module__ __qualname__rrr!r r+propertyr.r,r5r9r:rB contextlibcontextmanagerrGr<rDrErrrrr "s"     r cCs t|gSr )r)tagnamerrr requires_tagsr_cCst}|j||Sr )r rr )Ztagnamescomprrrrs rcCst|}tt||Sr )r rr%rrrrronly_ifsrbcCst|}tt||Sr )r rr%rarrr succeeds_ifsrcc@s.eZdZed ddZd ddZd ddZdS) PredicateNcst|tr|j|St|tr:|r6|jdkr6||_|St|ttfr`tfdd|D|St|t rrt |St|t j rt d|}|std||d}|d}|drt dd |dd Dnd}t ||||d St|rt||Sd std |dS)Ncsg|]}|qSr) as_predicate)r'rclsrrr3sz*Predicate.as_predicate..z.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rrrcss|]}t|VqdSr )int)r'drrrr)sz)Predicate.as_predicate...) descriptionFzunknown predicate type: %s) isinstancer rer,rdrllistr OrPredicatetuple SpecPredicater string_typesrematch ValueErrorgroupsplitcallableLambdaPredicaterW)rgrrltokensdbopspecrrfrres@         zPredicate.as_predicateFcCsV||}|r| }|j|r&|jjnd|r8|jjnd|rBdnd|rLdnddS)Nz z zdoesn't supportz does support)driverZdatabaseZdoesnt_supportZ does_support)rlr{urlZget_driver_nameZget_backend_name)rrnegateZbool_rrr_format_descriptions  zPredicate._format_descriptioncCs tdSr )NotImplementedErrorrrrrrrr2szPredicate._as_string)N)F)NF)rIrYrZ classmethodrerr2rrrrrds # rdc@s(eZdZd ddZddZd ddZdS) BooleanPredicateNcCs||_|pd||_dS)Nz boolean %s)valuerl)rrrlrrrrszBooleanPredicate.__init__cCs|jSr )rr4rrrrBszBooleanPredicate.__call__FcCs|j||dS)Nrrrrrrr2szBooleanPredicate._as_string)N)FrIrYrZrrBr2rrrrrs rc @sPeZdZd ddZejejejejej ej ej dddZ ddZ d d d ZdS)rqNcCs||_||_||_||_dSr )r{r|r}rl)rr{r|r}rlrrrrszSpecPredicate.__init__cCs||dko||dkS)Nrrr)valpairrrrzSpecPredicate.)<>z==z!=z<=z>=inZbetweencCs|dkr dS|j}d|jkr.|jd\}}n |jd}}|rL|j|krLdS|dk rb|j|krbdS|jdk r|dks|tdt|}t|jdr|jp|j|j}|||j SdSdS)NF+z%DBAPI version specs not supported yetrBT) r{rwrHr~r|rW_server_versionrA_opsr})rrenginedialectr~versionoperrrrrBs"    zSpecPredicate.__call__FcCsh|jdk r||S|jdkr8|r,d|jSd|jSn,|rPd|j|j|jfSd|j|j|jfSdS)Nznot %sz%sz not %s %s %sz%s %s %s)rlrr|r{r}rrrrr24s     zSpecPredicate._as_string)NNN)F)rIrYrZroperatorltgteqnelegecontainsrrBr2rrrrrqs  rqc@s(eZdZd ddZddZd ddZdS) ryNcs`t}|ds fdd|_n|_|p,d|_|p6i|_|rF||_njrVj|_nd|_dS)NrcsSr r)r{lambda_rrrGrz*LambdaPredicate.__init__..rzcustom function)rrr>r?rl__doc__)rrrlr>r?r}rrrrDs   zLambdaPredicate.__init__cCs ||Sr rr4rrrrBSszLambdaPredicate.__call__FcCs ||Sr rrrrrr2VszLambdaPredicate._as_string)NNN)FrrrrrryCs ryc@s(eZdZd ddZddZd ddZdS) r%NcCs||_||_dSr )rrl)rrrlrrrr[szNotPredicate.__init__cCs || Sr )rr4rrrrB_szNotPredicate.__call__FcCs(|jr||| S|j|| SdSr )rlrrr2rrrrr2bszNotPredicate._as_string)N)Frrrrrr%Zs r%c@s:eZdZd ddZddZdddZd d Zdd d ZdS)roNcCs||_||_dSr ) predicatesrl)rrrlrrrrjszOrPredicate.__init__cCs|jD]}||rdSqdS)NTF)r)rrrrrrrBns zOrPredicate.__call__Fcs*r d}nd}|fdd|jDS)NrVz or c3s|]}|jdVqdS)rNr1)r'prrrrr)ysz(OrPredicate._eval_str..)rXr)rrrZ conjunctionrrr _eval_strts zOrPredicate._eval_strcCs*|jdk rd||S|j|ddSdS)NzNot Tr)rlrrr4rrr _negation_str}s zOrPredicate._negation_strcCs0|r||S|jdk r"||S||SdSr )rrlrrrrrrr2s    zOrPredicate._as_string)N)F)F)rIrYrZrrBrrr2rrrrrois   rocCst|||tjSr )rqrr-)r{r|r}rrr _is_excludedsrcCs.|}t|jdd}|dkr"d}||S)z#Return a server_version_info tuple.Zserver_version_infoNr)connectgetattrrclose)rconnrrrrrs rcGstdd|DS)NcSsg|]}t|qSrrdrer'r{rrrr3szdb_spec..)rodbsrrrdb_specsrcCsttddS)NFzmark as executerrrrrropensrcCsttddS)NTzmarked as skiprrrrrclosedsrcCsttd|p dS)NTzexpected to fail)rrrrrrrsrcGstt|dS)NzFuture feature)rry)r=argrrrfuturesrcCs t||Sr )rr{rrrrfails_onsrcGsttdd|DS)NcSsg|]}t|qSrrrrrrr3sz.fails_on_everything_except..)rcrorrrrfails_on_everything_exceptsrcCs t||Sr )rrrrrr*sr*cs ttfddt|DS)Ncsg|]}t|qSrrrrrrr3szonly_on..)rbrorZto_list)rrrrronly_ons rcCstt||||Sr )rrq)r{r|r}rrrrexcludesrcGs"|s tdtdd|D|S)Nzno queries sent!cSsg|]}t|qSrr)r'queryrrrr3szagainst..)rWro)rZqueriesrrragainsts r)N)N)N)N)N)N)N)N)N)'r\rrsrTrrrZ util.compatrrrobjectr r_rrbrcrdrrqryr%rorer rrrrrrrrrr*rrrrrrr sH        8 <$