1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
U
¸ý°dO2ã@s`ddlZddlZddlZddlZddlmZddlmZddlmZddlm    Z    d8dd    „Z
d9d
d „Z Gd d „d ƒZ d:dd„Z d;dd„ZGdd„dƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZejZdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd<d(d)„Zd*d+„Zd=d,d-„Zd.d/„Zd>d0d1„Z d?d2d3„Z!d@d4d5„Z"d6d7„Z#dS)AéNé©Úconfigé)Úutil)Ú    decorator)Úinspect_getfullargspeccCs tƒ}t||ƒ}|j |¡|S©N)ÚcompoundÚ _as_predicateÚskipsÚadd©Ú    predicateÚreasonÚruleÚpred©rúTd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/testing/exclusions.pyÚskip_ifs
 rcCs tƒ}t||ƒ}|j |¡|Sr    )r
r Úfailsr rrrrÚfails_ifs
 rc@sŠeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zed d „ƒZ    d d„Z
dd„Z dd„Z dd„Z ejdd„ƒZdd„Zddd„Zd dd„ZdS)!r
cCstƒ|_tƒ|_dSr    )Úsetrr ©ÚselfrrrÚ__init__#szcompound.__init__cCs
| |¡Sr    )r ©rÚotherrrrÚ__add__'szcompound.__add__cCs&tƒ}|j |j¡|j |j¡|Sr    )r
r Úupdater)rrrrrÚas_skips*szcompound.as_skipscGsLtƒ}|j |j¡|j |j¡|D] }|j |j¡|j |j¡q&|Sr    ©r
rrr )rZothersÚcopyrrrrr 0sz compound.addcCs:tƒ}|j dd„|jDƒ¡|j dd„|jDƒ¡|S)Ncss|]}t|ƒVqdSr    ©Ú NotPredicate©Ú.0ÚfailrrrÚ    <genexpr><sz compound.not_.<locals>.<genexpr>css|]}t|ƒVqdSr    r#)r&Úskiprrrr(=sr!)rr"rrrÚnot_:sz compound.not_cCs | tj¡Sr    )Úenabled_for_configrÚ_currentrrrrÚenabled@szcompound.enabledcCs&|j |j¡D]}||ƒrdSqdS)NFT©r Úunionr)rrrrrrr+Dszcompound.enabled_for_configcs‡fdd„|j |j¡DƒS)Ncsg|]}|ˆƒr| ˆ¡‘qSr©Ú
_as_string)r&rrrrÚ
<listcomp>Lsþz4compound.matching_config_reasons.<locals>.<listcomp>r.©rrrrrÚmatching_config_reasonsKs
 þz compound.matching_config_reasonscCs |j |j¡|j |j¡dSr    )r rrrrrrÚ_extendRszcompound._extendcs<t|dƒr|j ˆ¡|St‡fdd„ƒ}||ƒ}ˆ|_|S)NÚ_sa_exclusion_extendcsˆjtj|f|ž|ŽSr    )Ú_dorr,)ÚfnÚargsÚkwrrrÚdecorate[sz#compound.__call__.<locals>.decorate)Úhasattrr6r5r)rr8r;Z    decoratedrrrÚ__call__Vs
 zcompound.__call__c
cshtƒ}|j |j |j¡¡z
dVWn0tk
rV}z| tj|¡W5d}~XYnX|     tj¡dSr    )
r
rrr r/Ú    ExceptionÚ_expect_failurerr,Ú_expect_success)rZ    all_failsÚexrrrÚfail_ifcs
 zcompound.fail_ifc    
Os|jD],}||ƒrdt ¡| |¡f}t |¡qz|||Ž}Wn4tk
rv}z|j|||jdW5d}~XYnX|j||jd|SdS)Nz    '%s' : %s)Úname)    r rZget_current_test_namer1Z    skip_testr>r?Ú__name__r@)    rÚcfgr8r9r:r)ÚmsgZ return_valuerArrrr7os
þ $z compound._doÚblockcCsF|jD](}||ƒrtd|| |¡|fƒqBq| t ¡d¡‚dS)Nz%s failed as expected (%s): %s r)rÚprintr1Úwith_tracebackÚsysÚexc_info)rrrArCr'rrrr?€s
ÿÿzcompound._expect_failurec    sH|js
dS|jD]2}|ˆƒrtd|d ‡fdd„|jDƒ¡fƒ‚qdS)Nz Unexpected success for '%s' (%s)ú and c3s|]}| ˆ¡VqdSr    r0r%rrrr(•sz+compound._expect_success.<locals>.<genexpr>)rÚAssertionErrorÚjoin)rrrCr'rrrr@‹s
ÿþÿÿzcompound._expect_successN)rG)rG)rDÚ
__module__Ú __qualname__rrr r r*Úpropertyr-r+r4r5r=Ú
contextlibÚcontextmanagerrBr7r?r@rrrrr
"s 
 
 
 
r
cCst|ƒ}tt|ƒ|ƒSr    )r rr$©rrrrrÚonly_ifœsrUcCst|ƒ}tt|ƒ|ƒSr    )r rr$rTrrrÚ succeeds_if¡srVc@s.eZdZed    dd„ƒZd
dd„Zd dd„ZdS) Ú    PredicateNcst|tƒrˆ |j|¡St|tƒr:|r6|jdkr6||_|St|ttfƒr`t‡fdd„|Dƒ|ƒSt|t    ƒrrt
|ŽSt|t ƒrèt   d|¡}|s˜td|ƒ‚| d¡}| d¡}| d¡rÔt    dd    „| d¡ d
¡Dƒƒnd}t
||||d St|ƒrüt||ƒSd std |ƒ‚dS)Ncsg|]}ˆ |¡‘qSr)Ú as_predicate)r&r©Úclsrrr2±sz*Predicate.as_predicate.<locals>.<listcomp>z.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rrrécss|]}t|ƒVqdSr    )Úint)r&Údrrrr(Àsz)Predicate.as_predicate.<locals>.<genexpr>Ú.)Ú descriptionFzunknown predicate type: %s)Ú
isinstancer
rXr+rWr_ÚlistrÚ OrPredicateÚtupleÚ SpecPredicateÚstrÚreÚmatchÚ
ValueErrorÚgroupÚsplitÚcallableÚLambdaPredicaterM)rZrr_ÚtokensÚdbÚopÚspecrrYrrX§s@
 
ÿ
 
ÿÿ
 
ÿ ý
 
zPredicate.as_predicateFcCsV||ƒ}|r| }|j|r&|jj ¡nd|r8|jj ¡nd|rBdnd|rLdnddœS)Nz <no driver>z <no database>zdoesn't supportz does support)ÚdriverZdatabaseZdoesnt_supportZ does_support)r_rnÚurlZget_driver_nameZget_backend_name)rrÚnegateZbool_rrrÚ_format_descriptionËsÿÿ
 
øzPredicate._format_descriptioncCs
tƒ‚dSr    )ÚNotImplementedError©rrrsrrrr1ÚszPredicate._as_string)N)F)NF)rDrOrPÚ classmethodrXrtr1rrrrrW¦s #
rWc@s(eZdZd    dd„Zdd„Zd
dd„ZdS) ÚBooleanPredicateNcCs||_|pd||_dS)Nz
boolean %s)Úvaluer_)rryr_rrrrßszBooleanPredicate.__init__cCs|jSr    )ryr3rrrr=ãszBooleanPredicate.__call__FcCs|j||dS)N©rs©rtrvrrrr1æszBooleanPredicate._as_string)N)F©rDrOrPrr=r1rrrrrxÞs
rxc    @sPeZdZd dd„Zejejejejej    ej
ej dd„dœZ dd„Z d d
d „ZdS)rdNcCs||_||_||_||_dSr    )rnrorpr_)rrnrorpr_rrrrëszSpecPredicate.__init__cCs||dko||dkS)Nrrr)ÚvalÚpairrrrÚ<lambda>ùózSpecPredicate.<lambda>)ú<ú>z==z!=z<=z>=ÚinZbetweencCs¶|dkr dS|j}d|jkr.|j d¡\}}n |jd}}|rL|j|krLdS|dk    rb|j|krbdS|jdk    r®|dks|tdƒ‚t|ƒ}t|jdƒr–|jp |j|j}|||j    ƒSdSdS)NFú+z%DBAPI version specs not supported yetr=T)
rnrjrCrqrorMÚ_server_versionr<Ú_opsrp)rrÚengineÚdialectrqÚversionÚoperrrrr=ü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)r_rtrornrprvrrrr1s
 
 
 
 zSpecPredicate._as_string)NNN)F)rDrOrPrÚoperatorÚltÚgtÚeqÚneÚleÚgeÚcontainsr†r=r1rrrrrdês
ø rdc@s(eZdZd    dd„Zdd„Zd
dd„ZdS) rlNcs`tˆƒ}|ds ‡fdd„|_nˆ|_|p,d|_|p6i|_|rF||_nˆjrVˆj|_nd|_dS)NrcsˆƒSr    r)rn©Úlambda_rrr*r€z*LambdaPredicate.__init__.<locals>.<lambda>rzcustom function)rr”r9r:r_Ú__doc__)rr”r_r9r:rprr“rr's
 
 
zLambdaPredicate.__init__cCs
| |¡Sr    r“r3rrrr=6szLambdaPredicate.__call__FcCs
| |¡Sr    r{rvrrrr19szLambdaPredicate._as_string)NNN)Fr|rrrrrl&s
rlc@s(eZdZd    dd„Zdd„Zd
dd„ZdS) r$NcCs||_||_dSr    )rr_)rrr_rrrr>szNotPredicate.__init__cCs | |¡ Sr    )rr3rrrr=BszNotPredicate.__call__FcCs(|jr| || ¡S|j || ¡SdSr    )r_rtrr1rvrrrr1EszNotPredicate._as_string)N)Fr|rrrrr$=s
r$c@s:eZdZd dd„Zdd„Zddd„Zd    d
„Zdd d „ZdS)rbNcCs||_||_dSr    )Ú
predicatesr_)rr–r_rrrrMszOrPredicate.__init__cCs|jD]}||ƒrdSqdS)NTF)r–)rrrrrrr=Qs
zOrPredicate.__call__Fcs*ˆr
d}nd}| ‡‡fdd„|jDƒ¡S)NrLz or c3s|]}|jˆˆdVqdS)rzNr0)r&Úp©rrsrrr(\sz(OrPredicate._eval_str.<locals>.<genexpr>)rNr–)rrrsZ conjunctionrr˜rÚ    _eval_strWs ÿzOrPredicate._eval_strcCs*|jdk    rd| |¡S|j|ddSdS)NzNot Trz)r_rtr™r3rrrÚ _negation_str`s
zOrPredicate._negation_strcCs0|r| |¡S|jdk    r"| |¡S| |¡SdSr    )ršr_rtr™rvrrrr1fs
 
 
 
zOrPredicate._as_string)N)F)F)rDrOrPrr=r™ršr1rrrrrbLs
 
 
    rbcCst|||ƒtjƒSr    )rdrr,)rnrorprrrÚ _is_excludedssr›cCs.| ¡}t|jddƒ}|dkr"d}| ¡|S)z#Return a server_version_info tuple.Zserver_version_infoNr)ÚconnectÚgetattrrˆÚclose)r‡Úconnr‰rrrr…ws r…cGstdd„|DƒƒS)NcSsg|]}t |¡‘qSr©rWrX©r&rnrrrr2„szdb_spec.<locals>.<listcomp>)rb©ÚdbsrrrÚdb_specƒsr¤cCsttddƒƒS)NFzmark as execute©rrxrrrrÚopen‡sr¦cCsttddƒƒS)NTzmarked as skipr¥rrrrÚclosed‹sr§cCsttd|p dƒƒS)NTzexpected to fail©rrx©rrrrrsrcCsttddƒƒS)NTzFuture featurer¨rrrrÚfuture“srªcCs
t||ƒSr    )r©rnrrrrÚfails_on—sr¬cGsttdd„|DƒƒƒS)NcSsg|]}t |¡‘qSrr r¡rrrr2œsz.fails_on_everything_except.<locals>.<listcomp>)rVrbr¢rrrÚfails_on_everything_except›sr­cCs
t||ƒSr    )rr«rrrr)Ÿsr)cs tt‡fdd„t |¡DƒƒƒS)Ncsg|]}t |ˆ¡‘qSrr r¡r©rrr2¦szonly_on.<locals>.<listcomp>)rUrbrZto_list)r£rrr©rÚonly_on£s
ÿÿr®cCstt|||ƒ|ƒSr    )rrd)rnrorprrrrÚexclude«sr¯cGs"|s tdƒ‚tdd„|Dƒƒ|ƒS)Nzno queries sent!cSsg|]}t |¡‘qSrr )r&Úqueryrrrr2±szagainst.<locals>.<listcomp>)rMrb)rZqueriesrrrÚagainst¯s ÿr±)N)N)N)N)N)N)N)N)N)$rRr‹rfrJÚrrrZ util.compatrrrr
rUrVrWrxrdrlr$rbrXr r›r…r¤r¦r§rrªr¬r­r)r®r¯r±rrrrÚ<module>    s@    
 
z
 
8 <$