B 4]1@spddlZddlZddlZddlmZddlmZddlmZddlmZdddZd?ddZGddde ZGdddeZGdddeZGdddeZGdddeZGd d!d!eZejZd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd@d,d-Zed.d/ZdAd0d1Z d2d3Z!dBd4d5Z"dCd6d7Z#dDd8d9Z$d:d;Z%dS)EN)config)util) decorator)inspect_getfullargspeccCs t}t||}|j||S)N)compound _as_predicateskipsadd) predicatereasonrulepredrP/opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/testing/exclusions.pyskip_ifs  rcCs t}t||}|j||S)N)rr failsr )r r rrrrrfails_ifs  rc@seZdZddZddZddZddZed d Zd d Z d dZ ddZ ddZ ddZ ejddZddZdddZd ddZdS)!rcCst|_t|_t|_dS)N)setrr tags)selfrrr__init__"szcompound.__init__cCs ||S)N)r )rotherrrr__add__'szcompound.__add__cGslt}|j|j|j|j|j|jx6|D].}|j|j|j|j|j|jq6W|S)N)rrupdater r)rZotherscopyrrrrr *s z compound.addcCsHt}|jdd|jD|jdd|jD|j|j|S)Ncss|]}t|VqdS)N) NotPredicate).0failrrr 7sz compound.not_..css|]}t|VqdS)N)r)rskiprrrr 8s)rrrr r)rrrrrnot_5s z compound.not_cCs |tjS)N)enabled_for_configr_current)rrrrenabled<szcompound.enabledcCs,x&|j|jD]}||rdSqWdSdS)NFT)r unionr)rrr rrrr#@szcompound.enabled_for_configcsfdd|j|jDS)Ncsg|]}|r|qSr) _as_string)rr )rrr Isz4compound.matching_config_reasons..)r r&r)rrr)rrmatching_config_reasonsGs z compound.matching_config_reasonscCs$t|j| o | p |j|S)N)boolr intersection)rZ include_tagsZ exclude_tagsrrr include_testNszcompound.include_testcCs.|j|j|j|j|j|jdS)N)r rrr)rrrrr_extendTszcompound._extendcs<t|dr|j|Stfdd}||}|_|S)N_sa_exclusion_extendcsjtj|f||S)N)_dorr$)fnargskw)rrrdecorate^sz#compound.__call__..decorate)hasattrr.r-r)rr0r3Z decoratedr)rr__call__Ys  zcompound.__call__c csht}|j|j|jy dVWn0tk rV}z|tj|Wdd}~XYnX| tjdS)N) rrrr r& Exception_expect_failurerr$_expect_success)rZ all_failsexrrrfail_iffs  zcompound.fail_ifc Osx4|jD]*}||rd|j||f}t|qWy|||}Wn4tk rx}z|j|||jdWdd}~XYnX|j||jd|SdS)Nz '%s' : %s)name)r __name__r'rZ skip_testr6r7r8) rZcfgr0r1r2r!msgZ return_valuer9rrrr/rs $z compound._doblockcCsDx>|jD]*}||rtd|||t|fPqWt|dS)Nz%s failed as expected (%s): %s )rprintr'strrZraise_from_cause)rrr9r;rrrrr7s zcompound._expect_failurecsN|js dSx>|jD]}|sPqWtd|dfdd|jDfdS)Nz Unexpected success for '%s' (%s)z and c3s|]}|VqdS)N)r')rr)rrrr sz+compound._expect_success..)rAssertionErrorjoin)rrr;rr)rrr8s zcompound._expect_successN)r>)r>)r< __module__ __qualname__rrr r"propertyr%r#r)r,r-r5 contextlibcontextmanagerr:r/r7r8rrrrr!s     rcCs t|gS)N)r)Ztagnamerrr requires_tagsrHcCst}|j||S)N)rrr)Ztagnamescomprrrrs rcCst|}tt||S)N)r rr)r r rrronly_ifsrJcCst|}tt||S)N)r rr)r r rrr succeeds_ifsrKc@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||SdS) Ncsg|]}|qSr) as_predicate)rr)clsrrr(sz*Predicate.as_predicate..z.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rrrcss|]}t|VqdS)N)int)rdrrrr sz)Predicate.as_predicate...) description) isinstancerrMr#rLrSlistr OrPredicatetuple SpecPredicaterZ string_typesrematch ValueErrorgroupsplitcallableLambdaPredicate)rNr rStokensdbopspecr)rNrrMs2       (  zPredicate.as_predicateFcCsV||}|r| }|j|r&|jjnd|r8|jjnd|rBdnd|rLdnddS)Nz z zdoesn't supportz does support)driverZdatabaseZdoesnt_supportZ does_support)rSraZurlZget_driver_nameZget_backend_name)rrnegateZbool_rrr_format_descriptions zPredicate._format_descriptioncCs tdS)N)NotImplementedError)rrrerrrr'szPredicate._as_string)N)F)NF)r<rCrD classmethodrMrfr'rrrrrLs # rLc@s(eZdZd ddZddZd ddZdS) BooleanPredicateNcCs||_|pd||_dS)Nz boolean %s)valuerS)rrjrSrrrrszBooleanPredicate.__init__cCs|jS)N)rj)rrrrrr5szBooleanPredicate.__call__FcCs|j||dS)N)re)rf)rrrerrrr'szBooleanPredicate._as_string)N)F)r<rCrDrr5r'rrrrris ric @sPeZdZd ddZejejejejej ej ej dddZ ddZ d d d ZdS)rXNcCs||_||_||_||_dS)N)rarbrcrS)rrarbrcrSrrrrszSpecPredicate.__init__cCs||dko||dkS)Nrrr)valZpairrrrzSpecPredicate.)<>z==z!=z<=z>=inZbetweencCs|j}d|jkr"|jd\}}n |jd}}|r@|j|kr@dS|dk rV|j|krVdS|jdk rt|}t|jdrz|jp|j|j}|||jSdSdS)N+Fr5T) rar]r;rdrb_server_versionr4_opsrc)rrenginedialectrdversionZoperrrrr5 s    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)rSrfrbrarc)rrrerrrr'!s     zSpecPredicate._as_string)NNN)F)r<rCrDroperatorltgteqnelegecontainsrsr5r'rrrrrXs  rXc@s(eZdZd ddZddZd ddZdS) r_Ncs`t}|ds fdd|_n|_|p,d|_|p6i|_|rF||_njrVj|_nd|_dS)NrcsS)Nr)ra)lambda_rrrl4rmz*LambdaPredicate.__init__..rzcustom function)rrr1r2rS__doc__)rrrSr1r2rcr)rrr1s   zLambdaPredicate.__init__cCs ||S)N)r)rrrrrr5@szLambdaPredicate.__call__FcCs ||S)N)rf)rrrerrrr'CszLambdaPredicate._as_string)NNN)F)r<rCrDrr5r'rrrrr_0s r_c@s(eZdZd ddZddZd ddZdS) rNcCs||_||_dS)N)r rS)rr rSrrrrHszNotPredicate.__init__cCs || S)N)r )rrrrrr5LszNotPredicate.__call__FcCs(|jr||| S|j|| SdS)N)rSrfr r')rrrerrrr'OszNotPredicate._as_string)N)F)r<rCrDrr5r'rrrrrGs rc@s:eZdZd ddZddZdddZd d Zdd d ZdS)rVNcCs||_||_dS)N) predicatesrS)rrrSrrrrWszOrPredicate.__init__cCs x|jD]}||rdSqWdS)NTF)r)rrrrrrr5[s zOrPredicate.__call__Fcs*r d}nd}|fdd|jDS)Nz and z or c3s|]}|jdVqdS))reN)r')rp)rrerrr gsz(OrPredicate._eval_str..)rBr)rrreZ conjunctionr)rrer _eval_stras zOrPredicate._eval_strcCs*|jdk rd||S|j|ddSdS)NzNot T)re)rSrfr)rrrrr _negation_strjs zOrPredicate._negation_strcCs0|r||S|jdk r"||S||SdS)N)rrSrfr)rrrerrrr'ps    zOrPredicate._as_string)N)F)F)r<rCrDrr5rrr'rrrrrVVs   rVcCst|||tjS)N)rXrr$)rarbrcrrr _is_excluded}srcCs.|}t|jdd}|dkr"d}||S)z#Return a server_version_info tuple.Zserver_version_infoNr)Zconnectgetattrruclose)rtZconnrvrrrrrs rrcGstdd|DS)NcSsg|]}t|qSr)rLrM)rrarrrr(szdb_spec..)rV)dbsrrrdb_specsrcCsttddS)NFzmark as execute)rrirrrropensrcCsttddS)NTzmarked as skip)rrirrrrclosedsrcCsttd|p dS)NTzexpected to fail)rri)r rrrrsrcGstt|dS)NzFuture feature)rr_)r0argrrrfuturesrcCs t||S)N)r)rar rrrfails_onsrcGsttdd|DS)NcSsg|]}t|qSr)rLrM)rrarrrr(sz.fails_on_everything_except..)rKrV)rrrrfails_on_everything_exceptsrcCs t||S)N)r)rar rrrr!sr!cs ttfddt|DS)Ncsg|]}t|qSr)rLrM)rra)r rrr(szonly_on..)rJrVrZto_list)rr r)r ronly_onsrcCstt||||S)N)rrX)rarbrcr rrrexcludesrcGstdd|D|S)NcSsg|]}t|qSr)rLrM)rZqueryrrrr(szagainst..)rV)rZqueriesrrragainstsr)N)N)N)N)N)N)N)N)N)&rFrwrYrrrZ util.compatrrrobjectrrHrrJrKrLrirXr_rrVrMr rrrrrrrrrrr!rrrrrrr sB      ~  8 9$