python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_functools.cpython-312.pyc

Αe. ddlZddlZddlZddlZddlZddlmZddlZddlm	Z	ddl
Z
ddlmZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZddlZddlmZddlmZddlmZddlZej8d	d
gZej8d	d
gZej8d
dgZej@gZ!ere!jEej@ejFdZ$dZ%dZ&Gdde'Z(Gdde'Z)Gdde*Z+GddZ,ejZedGdde,ej\Z/Gdde,ej\Z0erGdd ej@Z1Gd!d"ej@Z2ejZedGd#d$e/Z3Gd%d&e0Z4Gd'd(ej\Z5Gd)d*ej\Z6Gd+d,e6Z7Gd-d.Z8ejZedGd/d0e8ej\Z9Gd1d2e8ej\Z:Gd3d4Z;ejZedGd5d6e;ej\Z<Gd7d8e;ej\Z=Gd9d:ej\Z>ej~Gd;d<Z@Gd=d>ZAGd?d@ZBejdAZDerejdBZEGdCdDeBej\ZFejZedGdEdFeBej\ZGGdGdHej\ZHGdIdJZIGdKdLZJGdMdNZKGdOdPej\ZLeMdQk(rejyy)RN)permutations)choice)support)proxy)	Signature)
import_helper)threading_helper	functools
_functools)blocked)freshdecimal_decimalc#Ktj|}|tj|<	d|tj|<y#|tj|<wxYwwN)sysmodules)namereplacementoriginal_modules   G/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_functools.pyreplaced_moduler'sFkk$'O#CKK,
+DODs'AAAAAc
||fS)z,capture all positional and keyword arguments)argskws  rcapturer0s8Oc^|j|j|j|jfS)z* return the signature of a partial object )funcrkeywords__dict__)parts r	signaturer$5s!IItyy$--??rceZdZy)MyTupleN__name__
__module____qualname__rrrr&r&9rr&ceZdZdZy)BadTuplec0t|t|zSr)listselfothers  r__add__zBadTuple.__add__=sDzDK''rN)r(r)r*r3rrrr-r-<s(rr-ceZdZy)MyDictNr'rrrr5r5@r+rr5ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZy)TestPartialc	8|jtdddd}|jt||j	|dddd	
dtddd	f|jtd
}|j	t|gdgdy)N
ab(r?cr9r:r@rAr>r?rEc|dzS)Nr;rxs r<lambda>z1TestPartial.test_basic_examples.<locals>.<lambda>Ks
"r)r;r<rBrC)partialr
assertTruecallableassertEqualdictmapr/r1ps  rtest_basic_exampleszTestPartial.test_basic_examplesFsLL!Q"L3$1a2,&rR2(>?	ALLn-a	l+-=>rc|jtdddd}|j|jt|j|jd|j|j
t
ddy)Nr9r:r;r<r=r9r:)rLrrOr rr!rPrRs  rtest_attributeszTestPartial.test_attributesNs]LL!Q"L3)(TB"%56rc|jt|j	|jd|jdy#t$rYywxYw)Nr:z%First arg not checked for callability)assertRaises	TypeErrorrLfailr1s rtest_argument_checkingz"TestPartial.test_argument_checkingUsN)T\\2	?DLLO
II=>		sA

	AAcdd}ddi}|j|d}|j|d	i|d|j|ddi|d|j|ddiy)
Nc|Srrr=s  rr zBTestPartial.test_protection_of_callers_dict_argument.<locals>.func`sHrr>r@r>r?)r;r<r)rLrO)r1r drSs    r(test_protection_of_callers_dict_argumentz4TestPartial.test_protection_of_callers_dict_argument^sg	
GLLL#Q#SG$	ASG$rcddi}|jtfi|}|j|dddifd|d<|j|dddify)Nr>r@rr`rLrrO)r1rdrSs   rtest_kwargs_copyzTestPartial.test_kwargs_copyis_!HDLL&A&rC8n-#rC8n-rc,|jt}|j|dif|j|dddif|jtdd}|j|dif|j|dddify)Nrr9r:rVr@rArFrgrRs  rtest_arg_combinationsz!TestPartial.test_arg_combinationsrs
LL!r2h'1Q%-LL!Q'ubk*1Q)R1rc|jt}|j|ji|j|dif|j|ddddif|jtd}|j|jddi|j|dddif|j|dddddf|j|ddddddfy)	Nrr9rar>r:rcr=r@)rLrrOr!rRs  rtest_kw_combinationsz TestPartial.test_kw_combinations|s
LL!R(r2h'Q"s1g/LLAL&c!W-rC7m,Q"1!n!56Q!rq>&:;rcdD]D}|jtg|}|dz}|d\}}|j||k(xr|ik(Fy)N)rrrr9)rr9r:)rr9r:r@rIrJrLrrM)r1rrSexpectedgotemptys      rtest_positionalzTestPartial.test_positionalsU9	=DW,t,Af}H3JCOOHO;<		=rcdD]E}|jt|}|dd}|d\}}|j||k(xr|dk(Gy)N)r>rNg@ra)r>rJrIrrp)r1r>rSrqrsrrs      rtest_keywordzTestPartial.test_keywordsS$	=AW*A$'HTJE3OOHO;<		=rc|jtdd}|dd\}}|j|dk(xr|dddk(|\}}|j|dk(xr|d	dik(y)
Nrr9rar:rcror=rnr>rp)r1rSargs1kw1args2kw2s      rtest_no_side_effectsz TestPartial.test_no_side_effectsskLL!qL)qAY
s?3qQ-+?@S
s
8##a.9rcDd}|jt|j|dd|jt|j|dd|jt|j|dd|jt|j|ddy)Nc||zyrrrJys  rfz-TestPartial.test_error_propagation.<locals>.fs	
Err9r)r)rYZeroDivisionErrorrLr1rs  rtest_error_propagationz"TestPartial.test_error_propagations	+T\\!Q-BC+T\\!Q-?C+T\\!_aC+T\\!q\-A1Erc|jtd}t|}|j|j|jd}tj|jtt|dy)N)baser )
rLintrrOr r
gc_collectrYReferenceErrorgetattrr1rrSs   rtest_weakrefzTestPartial.test_weakrefsZLL2L&!H(.'1f=rcttttd}|j	tj
d}|j
||d|j	dj
}|j
||dy)Nr;
0123456789)r/rQstrrangerLjoinrO)r1datars   r#test_with_bound_and_unbound_methodsz/TestPartial.test_with_bound_and_unbound_methodsseCU2Y'(||CHHb)d\2||BGG$d\2rc|j}|td}||d}|tdd}|jt|t|yNasdfTbar)rLr$rO)r1rLinnernestedflats     rtest_nested_optimizationz$TestPartial.test_nested_optimizationsJ,,	6*D)y&d36*IdO<rc|j}d}||d}||d}d|_|j|jdy)Nc|Srrrs rfooz;TestPartial.test_nested_partial_with_attribute.<locals>.foosJrfirstsecondspam)rLnew_attrrO)r1rLrrSp2s     r"test_nested_partial_with_attributez.TestPartial.test_nested_partial_with_attributesE,,	
C!
Q
!f-rcfttf}djd|D}ttd}dj|dj|g}|jtvrd}n|jj
}|jt}|j|dtdt||jtg|}|j|dtd|dt||jtfi|}|jt||Dcgc]}|dtd|dc}|jtg|i|}|jt||Dcgc]}|dtd|d|dc}ycc}wcc}w)	Nz, c32K|]}t|ywr)repr).0r>s  r	<genexpr>z(TestPartial.test_repr.<locals>.<genexpr>s4!d1g4sr=za={a!r}, b={b!r}zb={b!r}, a={a!r}functools.partial())
objectr
format_maprL_partial_typesr(rrOrassertIn)r1r	args_reprkwargskwargs_reprsrrkwargs_reprs        r	test_reprzTestPartial.test_reprs&(#II4t44	xfh/*55f=*55f=?<<>)&D<<((DLL!D67+Q/a9DLL(4(D67+R	{!<d1gFDLL+F+

d1g*68&q2k]!<8	9
DLL24262

d1g*68&q2i[;-qI8	9	8
8s8F)
F.
c|jtvrd}n|jj}|jt}|j	|diif	|jt
||d|j	tdiif|jt}|j	t|fiif	|jt
||dtd|j	tdiif|jt}|j	tdd|iif	|jt
||dtd|j	tdiify#|j	tdiifwxYw#|j	tdiifwxYw#|j	tdiifwxYw)Nrrz(...)rz, ...)r>z, a=...))rLrr(r__setstate__rOr)r1rrs   rtest_recursive_reprzTestPartial.test_recursive_reprsp<<>)&D<<((DLL!	2r2'	2T!W4&9:
NNGRR01LL!	!r2./	2T!WtW&FG
NNGRR01LL!	c1Xr23	2T!Ww&HI
NNGRR01
NNGRR01
NNGRR01
NNGRR01s$E,>%F
-%F(,F
F%(Gcztd|j5|jtdgdg}g|_ttjdzD]O}t
jt
j||}|jt|t|Q	dddy#1swYyxYw)Nr
rTrr9)rmodulerLr$attrrpickleHIGHEST_PROTOCOLloadsdumpsrOr1rprotof_copys    rtest_picklezTestPartial.test_pickles
[$++
6	BYtf=AAFv66:;
Bfll1e&<=  6!2IaLA
B	B	B	BsBB11B:c|jtdgdg}g|_tj|}|j	t|t||j|j|j|j|j|j|j|j|jyr)rLr$rcopyrOassertIsrr!r1rrs   r	test_copyzTestPartial.test_copy
sLLVH4&L916*IaL9

fkk166*

fkk166*

fooqzz2rcL|jtdgdg}g|_tj|}|jt|t||j
|j|j|j
|j|j|j
|jd|jd|j
|j|j|j
|jd|jdy)NrTrrr)	rLr$rrdeepcopyrOassertIsNotrr!rs   r
test_deepcopyzTestPartial.test_deepcopysLLVH4&L9q!6*IaL9aff-aff-Q3!**5/E1BCrc	|jt}|jtdt	dt	gf|jt|tdt	dt	gf|j|dddddd	f|jtdt	ddf|jt|tdt	dif|j|dddddd	f|jtdddf|j|dddd
dif|j|ddif|j|dif|jtdidf|jt|tdiif|j|dddd
dif|j|ddif|j|dify)
Nr9r;rarr:r<rcrVr=r?r)r:)rLr$rrrPrOrs  r
test_setstatezTestPartial.test_setstatesLL#	tbz4R=AB1!4Tr]C	E1fBR.@%AB	tbz4891tbz2'FG1fBR.@%AB	tT231fsBi%891|,tRj)	R./1R'<=1dS"I%671bz*r2h'rc	d|jt}|jt|jt
dif|jt|jt
diidf|jt|jt
didg|jt|jddidf|jt|jt
didf|jt|jt
gidf|jt|jt
dgdfy)Nr)rLr$rYrZrrrs  rtest_setstate_errorsz TestPartial.test_setstate_errors7sLL#)Q^^gr25FG)Q^^gr2r45PQ)Q^^gr2t5LM)Q^^dBD5IJ)Q^^gtR5NO)Q^^gr2t5LM)Q^^gr2t5LMrc||jt}|jtt	dtddft|}|j
|tdtdif|jt|dt|jt|dt|}|j
|dddif|jt|dt|jt|dt|jttdidft|}|j
|tdiif|jt|dt|d}|j
|dif|jt|dty)	Nrr;rar9r:r>rrV)rLr$rrr&r5rOrPrtypetupler-)r1rsrs    rtest_setstate_subclassesz$TestPartial.test_setstate_subclassesAsOLL#	dCDaLWdD2J;<

d1Q4j%(

d1Q4j$'
CTC9-.

d1Q4j%(

d1Q4j$'	$T:;aLWdB34

d1Q4j%(
aDVRL)

d1Q4j%(rc
td|j5|jt}|j	|diif	ttjdzD]6}|jt5t
j||ddd8	|j	tdiif|jt}|j	t|fiif	ttjdzD]d}t
jt
j||}	|j|jd||j	tdiiff	|j	tdiif|jt}|j	tdd|iif	ttjdzD]d}t
jt
j||}	|j|jd||j	tdiiff	|j	tdiif	dddy#1swYxYw#|j	tdiifwxYw#|j	tdiifwxYw#|j	tdiifwxYw#|j	tdiifwxYw#|j	tdiifwxYw#1swYyxYw)Nr
rr9rr>)rrrLrrrrrrYRecursionErrorrrrrr!rs    rtest_recursive_picklez!TestPartial.test_recursive_pickleUs
[$++
6 	6W%A
NNAr2r?+
6"6#:#:Q#>?/E**>:/Q.///R45W%A
NNGaT2r23
6"6#:#:Q#>?CE#\\&,,q%*@AFC

fkk!nf=++Wb"b,ABCR45W%A
NNGR#q267
6"6#:#:Q#>?CE#\\&,,q%*@AFC

fooc&:FC++Wb"b,ABCR45A 	6 	6
//R45++Wb"b,ABR45++Wb"b,ABR45A 	6 	6s+K:4I$7I
I$AK:"AJ +J
J &A	K:0AK9J>K4K:I!I$$I??K:JJ  J;;K:>KKK77K::LcGdd}|jt}|jt|j|y)NceZdZdZdZy)7TestPartial.test_setstate_refcount.<locals>.BadSequencecy)NrArr\s r__len__z?TestPartial.test_setstate_refcount.<locals>.BadSequence.__len__{rcb|dk(rtS|dk(rttdS|dvriSt)Nrr9i@B)r:r@)maxrr
IndexError)r1keys  r__getitem__zCTestPartial.test_setstate_refcount.<locals>.BadSequence.__getitem__}s6!8JAX w00F]I  rN)r(r)r*rrrrrBadSequencerzs

!rr)rLrrYrZr)r1rrs   rtest_setstate_refcountz"TestPartial.test_setstate_refcountys4
	!
	!
LL )Q^^[]CrN)r(r)r*rTrWr]rerhrjrlrtrvr|rrrrrrrrrrrrrrrrrrr7r7Ds?7?	%.2<==:F>3=
.9626B3	D(2N)(!6HDrr7z requires the C _functools modulec>eZdZereZej
ZdZdZdZy)TestPartialCc
t|jtdddd}|jtt|dt
|jtt|dd|jtt|d	t
dd|jt}	|`|jd
y#t$rYywxYw)Nr9r:r;r<r=r rrVr!z-partial object allowed __dict__ to be deleted)rLrrYAttributeErrorsetattrrQrPhexr"r[rZrRs  rtest_attributes_unwritablez'TestPartialC.test_attributes_unwritablesLL!Q"L3.'1fcB.'1ffE.'1j$a.QLL	G

IIEF		sB++	B76B7c|jt}d|jd<t|}|j	d||j	d||jt5|dddy#1swYyxYw)Nvaluei1234z'value')rLrr!rrrYrZ)r1rSrs   r'test_manually_adding_non_string_keywordz4TestPartialC.test_manually_adding_non_string_keywordskLL!"

4G

fa 

i#


y
)	
C			s)A::Bc|jtGfddt}dgj|<t	}|jd||jd|y)NceZdZfdZy)@TestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDictc&dgj|<y)Nsth2astr)r!rRs r__str__zHTestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDict.__str__s$*8

4 rN)r(r)r*r)rSsrMutatesYourDictrs
rrsthrz['sth'])rLrrr!rr)r1rrrSs   @rtest_keystr_replaces_valuez'TestPartialC.test_keystr_replaces_valuesWLL!	f	*/

?$%G

fa 

i#rN)	r(r)r*c_functoolsrrLrrrrrrrrs%%%
G
$rrc(eZdZeZej
Zy)
TestPartialPyN)r(r)r*py_functoolsrrLrrrrrs
F""GrrceZdZy)CPartialSubclassNr'rrrrrsrrceZdZy)PyPartialSubclassNr'rrrrrr+rrceZdZereZdZy)TestPartialCSubclassN)r(r)r*rrrLrrrrr
r
s" $rr
ceZdZeZy)TestPartialPySubclassN)r(r)r*rrLrrrrrsGrrcreZdZGddeZeZdZdZdZdZ	dZ
dZd	Zd
Z
dZdZd
Zy)TestPartialMethodceZdZejeZejedZejedZejeddZ	ejeddZ
ejedZejejed	
dZ
ejeedZejeed
Zy)TestPartialMethod.Ar9r:rar@rArcr1r r`rErb	rdN)r(r)r*r

partialmethodrnothing
positionalr!both
spec_keywordsrrLover_partialstaticmethodstaticclassmethodclsrrrArs))))'2,Y,,Wa8
*9**7a8&y&&wQ7/	//aaH
(((Q7.y../@y/@/@A/NPQR(((g)>B%i%%k'&:a@rr!ct|j|jj|jfif|j|jjd|jdfif|j|jjd|jfddif|j|jjdd|jdfddif|j|jj|jdfif|j|jjd|jddfif|j|jjd|jdfddif|j|jjdd|jddfddif|j|jj	|jfddif|j|jj	d|jdfddif|j|jj	d|jfdddf|j|jj	dd|jdfdddf|j|jj|jd	fd
dif|j|jjd|jd	dfd
dif|j|jjd|jd	fdddf|j|jjdd|jd	dfdddf|j|jj|jdd|jd	dfdddf|j|jj|jfddd
fy)Nr`rrrEr9r>r:)r>rEr@r?rArDr)rOr>rrr!rr!rr\s rrjz'TestPartialMethod.test_arg_combinationssW)TVVIr?;*dffa[",=>!,y3(.CDQ/4661+Qx1HI**,{B.?@**1-A/CD**Q*/4661+Qx1HI**1*2dffa^c1X4NO*dffYa,AB+tvvqkC8-DE1-	;K/LMa0DFFA;aa@P2QR$&&!sAh(?@Q4661a.3()CDq)TVVQKqq9I+JKQ!,1~QQ?O.PQTVVQ!41~QUVGW6XY--/466)aQR=S1TUrcx|j|jj|jddfif|j|jjd|jdddfif|j|jjd|jddfddif|j|jjdd|jdddfddif|j|jj|jdd|jdddfddify)Nr9r`rrbrrd)rOr>rr!r\s rtest_nestedzTestPartialMethod.test_nestedsDFFAq>2*>?q)TVVQ1,=r+BC+tvvq!nsAh-GHqA.$&&!Q1BS!H0MNtvvqA6$&&!Q9JSRSH8UVrc||j|jj|jdfddif|j|jjd|jddfddif|j|jjd|jdfdddf|j|jjdd|jddfdddf|j|jj|jdd|jddfdddfy)NrbrErr`rrrErd)rOr>rr!r\s rtest_over_partialz#TestPartialMethod.test_over_partials,,.$&&!sAh0GH,,Q/4661a.3(1KL,,q,1TVVQKqqAQ3RS,,Q!,41~QUVGW6XY,,TVVQ!,<1~UV]^O_>`arc|j}|j|jj||j|jj||j|j
j||j|jj|j|j|jjj|jyr)r>rr__self__rrr r!r1objs  rtest_bound_method_introspectionz1TestPartialMethod.test_bound_method_introspection
sff

chh''-

cjj))3/

c&&//5

cgg&&/

dffjj))4662rc|j}|jt|jd|jt|jd|jt|j
d|jt|jd|jt|jjdy)Nr))r!assertFalsehasattrrrrrr>r*s  rtest_unbound_method_retrievalz/TestPartialMethod.test_unbound_method_retrievalsff:67Z89!1!1:>?Z89
;<rc	B|j|jfD]v}|j|5|j|j	dif|j|j	ddif|j|j	ddddif|j|j	dddddif|j|j|jfddif|j|jd|jdfddif|j|jd	|jfddd
f|j|jdd	|jdfddd
fdddyy#1swYxYw)Nr+)rr`)rr`rrrdrrr&)r!r>subTestrOrr r*s  rtest_descriptorsz"TestPartialMethod.test_descriptorssrFFDFF#
	SC#&	
S  bz:  A=  a4#q2BC  A!3fsAh5GH  dffYa,AB  tvvqkC8-DE  1	;K/LM  aDFFA;aa@P2QR	
S	
S
	S	
S	
SsEFF	c|j|jjd|jfddif|j|jj|jd|jfddify)Nr@rar>)rOr>r!r!r\s rtest_overriding_keywordsz*TestPartialMethod.test_overriding_keywords'sd1-	C8/DE15	C87LMrcF|jt5Gddt}ddd|jt5Gdd}ddd|jt5Gdd}dddy#1swYZxYw#1swY>xYw#1swYyxYw)Nc2eZdZejddZy).TestPartialMethod.test_invalid_args.<locals>.BNr9r(r)r*r
rmethodrrrBr9-s000q9rr<c.eZdZejZy)r9Nr:rrrr<z.TestPartialMethod.test_invalid_args.<locals>.B0s0002rc4eZdZejedZy)r9r9)r r>N)r(r)r*r
rrr;rrrr<z.TestPartialMethod.test_invalid_args.<locals>.B3s000gCr)rYrZr)r1r<s  rtest_invalid_argsz#TestPartialMethod.test_invalid_args+s


y
)	:
:F
:	:

y
)	3
3
3	3

y
)	D
D
D	D	D
	:	:	3	3	D	Ds#A?B+B?BBB c|jtt|jddj	t
y)Nrz#functools.partialmethod({}, 3, b=4))rOrvarsr!formatrr\s rrzTestPartialMethod.test_repr6s3d466l623>EEgN	PrcGddtj}|j|jj|j|j
j|jj|jj|jj|jj|jjfD]}|jt|dd y)NcVeZdZejdZejedZy)1TestPartialMethod.test_abstract.<locals>.Abstractcyrrr1rJrs   raddz5TestPartialMethod.test_abstract.<locals>.Abstract.add=srr`N)	r(r)r*abcabstractmethodrHr
radd5rrrAbstractrE;s0



 
+9**32DrrL__isabstractmethod__F)rIABCMetarMrHrMrKr!rr rrrr.r)r1rLr s   r
test_abstractzTestPartialMethod.test_abstract:s	3s{{	3	
99:

::;VV]]DFFJJ0C0CTVV]]TXTZTZT_T_`	KDWT+A5IJ	Krctd}tj|d}|j|d|ddy)Nc||zSrrr=s  rrz1TestPartialMethod.test_positional_only.<locals>.fJq5Lrr9r:)r
rLrOrs   rtest_positional_onlyz&TestPartialMethod.test_positional_onlyIs5	
a#1qAw'rN)r(r)r*rr!r>rjr$r'r,r0r4r6r?rrOrSrrrrrsXAFA	
AV2Wb3=SN	DP
K(rrc<eZdZejej
fdZdZdZe	jejjdk\ddZdZdZd	Zej&e	jejjdk\dd
Zy)TestUpdateWrapperc(|D](}|jt||t||*|D]D}t||}t||}|D]%}|dk(r|dk(r|j||||'F|j|j|y)Nr"__wrapped__)rrrW)	r1wrapperwrappedassignedupdatedrwrapper_attrwrapped_attrrs	         r
check_wrapperzTestUpdateWrapper.check_wrapperSs	JDMM''40''42HI	J	DD"7D1L"7D1L#
D:%#*>

l3/c1BC	
D	D	


g))73rcjd}d|_d|_dd}tj||||fS)Ncdx}fddcS)TcyThis is a testNrras rrz,TestUpdateWrapper._default_update.<locals>.fgr)r>This is a new annotationr)	.defaultsras  rz<generic parameters of f>zDTestUpdateWrapper._default_update.<locals>.<generic parameters of f>gs	a	rThis is also a testzThis is a bald faced liecyrrrcs rrXz2TestUpdateWrapper._default_update.<locals>.wrapperlr)r?zThis is the prior annotation)rrWr
update_wrapperr1rrXs   r_default_updatez!TestUpdateWrapper._default_updatefs6	'2
	  !,zrc|j\}}|j|||j\}|j|j||j|jd|j|j|j|j|jd|j|jdd|jd|j|j|j|fy)Nrrhr>rfr?)rmr^__type_params__rrWrOr(r*r__annotations__assertNotIn)r1rXrras    rtest_default_updatez%TestUpdateWrapper.test_default_updateqs))+
7A&




g))1-))3/--q~~>'<=0057QRg556001$7rr:)Docstrings are omitted with -O2 and abovecb|j\}}|j|jdyNrdrmrO__doc__r1rXrs   rtest_default_update_docz)TestUpdateWrapper.test_default_update_doc}+))+
*:;rcd}d|_d}tj||dd|j||dd|j	|j
d|j
|j|j|j	|jd|j	|ji|jt|dy)Ncyrcrrrrrz+TestUpdateWrapper.test_no_update.<locals>.frerrhcyrrrrrrXz1TestUpdateWrapper.test_no_update.<locals>.wrapperrjrrrXr)rr
rkr^rOr(assertNotEqualr*rwrpr.r/rls   rtest_no_updatez TestUpdateWrapper.test_no_updates	'	  !R47Ar2.))95G00!..A$/00"5&12rcd}d|_tddd|_d}i|_d}d	}tj|||||j|||||j
|jd
|j|j|j|j
|jd|j
|jd|j
|j|jy)Ncyrrrrrrz2TestUpdateWrapper.test_selective_update.<locals>.frjrThis is a different testr9r:r@rGcyrrrrrrXz8TestUpdateWrapper.test_selective_update.<locals>.wrapperrjrr	dict_attrrX)rrPrr
rkr^rOr(r~r*rwr1rrXassignupdates     rtest_selective_updatez'TestUpdateWrapper.test_selective_updates	+Q!q)	  !VV<7Avv6))95G00!..A$/'AB**AKK8rcd}d}i|_d}d}tj|||||jd|j|j|ji|`|j
t5tj||||dddd|_|j
t5tj||||dddy#1swYGxYw#1swYyxYw)Ncyrrrrrrz4TestUpdateWrapper.test_missing_attributes.<locals>.frjrcyrrrrrrXz:TestUpdateWrapper.test_missing_attributes.<locals>.wrapperrjrrrrr9)rr
rkrqr"rOrYrrs     rtest_missing_attributesz)TestUpdateWrapper.test_missing_attributess		  !VV<!1!12**B/


~
.	A$$Wa@	A


~
.	A$$Wa@	A	A	A	A	A	As9C6C$C!$C-cd}tj|t|j|jd|j|jjd|j|jiy)NcyrrrrrrXz6TestUpdateWrapper.test_builtin_update.<locals>.wrapperrjrrzmax()	r
rkrrOr(rMrw
startswithrp)r1rXs  rtest_builtin_updatez%TestUpdateWrapper.test_builtin_updates^
	  #.))51226:;00"5rN)r(r)r*r
WRAPPER_ASSIGNMENTSWRAPPER_UPDATESr^rmrrunittestskipIfrflagsoptimizeryrrrrrequires_docstringsrrrrrUrUQs )<<'774&	
8X__SYY''1,@B<B<
39$A(
  X__SYY''1,@B6B!6rrUceZdZdZdZejejjdk\ddZ
dZdZy)		TestWrapscbd}d|_d|_tj|d}||fS)Ncyrcrrrrrz$TestWraps._default_update.<locals>.frerrhzThis is still a bald faced liecyrrrrrrXz*TestWraps._default_update.<locals>.wrapperrer)rrWr
wrapsrls   rrmzTestWraps._default_updates<	'8
			
	zrc
|j\}}|j|||j|jd|j|j|j|j|j
dy)Nrrh)rmr^rOr(r*rrxs   rrrzTestWraps.test_default_updatesi))+
7A&))3/--q~~>'<=rr:rscb|j\}}|j|jdyrurv)r1rX_s   rryz!TestWraps.test_default_update_docrzrcld}d|_tj|ddd}|j||dd|j	|j
d|j
|j|j|j	|jd|jt|dy)Ncyrcrrrrrz#TestWraps.test_no_update.<locals>.frerrhrcyrrrrrrXz)TestWraps.test_no_update.<locals>.wrapperrerrXr)rr
rr^rOr(r~r*rwr.r/rls   rrzTestWraps.test_no_updates	'	B	#	
$	7Ar2.))95G00!..A$/&12rcd}d|_tddd|_d}d}d	}tj||||d
}|j|||||j
|jd|j|j|j|j
|jd|j
|jd|j
|j|jy)Ncyrrrrrrz*TestWraps.test_selective_update.<locals>.frjrrr9r:r@rGci|_|Srr)rs r
add_dict_attrz6TestWraps.test_selective_update.<locals>.add_dict_attrsAKHrrrcyrrrrrrXz0TestWraps.test_selective_update.<locals>.wrappers
rrX)rrPrr
rr^rOr(r~r*rw)r1rrrrrXs      rrzTestWraps.test_selective_updates	+Q!q)		FF	+		

,	7Avv6))95G00!..A$/'AB**AKK8rN)
r(r)r*rmrrrrrrrryrrrrrrrsK	>X__SYY''1,@B<B<39rrceZdZdZdZy)
TestReducec	tGdd}d}|j|j|gddd|j|j|ddggd	d
ggggd|j|jdtd
ddd|j|jdtd
ddd|j|j||dd|j|j||ddd|j|j||ddd|jt|j|jt|jdd|jt|jddd|j|jddd|j|jdddd|jt|jdd|jt|j|g|jt|j|d|jt|j|d|jt|j|tGdd}|jt|j|||j|j|gdd|j|j|gddGdd}|jt|jd|y)NceZdZdZdZdZy)'TestReduce.test_reduce.<locals>.Squaresc ||_g|_yr)rsofar)r1rs  r__init__z0TestReduce.test_reduce.<locals>.Squares.__init__s
rc,t|jSr)lenrr\s rrz/TestReduce.test_reduce.<locals>.Squares.__len__
s4::&rcd|cxkr|jks
ttt|j}||kr)|jj	||z|dz
}||kr)|j|S)Nrr9)rrrrappend)r1ins   rrz3TestReduce.test_reduce.<locals>.Squares.__getitem__
slA((
*:(
*:

O1fJJ%%ac*FA1fzz!}$rN)r(r)r*rrrrrrSquaresrs
 
'
%rrc||zSrrrs  rrHz#TestReduce.test_reduce.<locals>.addrRrrGrrIr>rErdw)r>rErdrc||zSrrrs  rrKz(TestReduce.test_reduce.<locals>.<lambda>s
!A#rr:rr9ic||zSrrrs  rrKz(TestReduce.test_reduce.<locals>.<lambda>s
QqSrlhr;ir*1)rrrceZdZdZy)/TestReduce.test_reduce.<locals>.TestFailingIterctrRuntimeErrorr\s r__iter__z8TestReduce.test_reduce.<locals>.TestFailingIter.__iter__/s""rN)r(r)r*rrrrTestFailingIterr.s
#rrceZdZdZy)&TestReduce.test_reduce.<locals>.BadSeqctr)
ValueError)r1indexs  rrz2TestReduce.test_reduce.<locals>.BadSeq.__getitem__7s  rN)r(r)r*rrrrBadSeqr6s
!rr)rOreducerrYrZrrr)r1rrHrrs     rtest_reducezTestReduce.test_reduces	%	%	S/2>FKKsCj"sCj92>	
	
%5uQqz1EtLKK(%"+q9	
	
S'"+6<S'"+q93?S'!*a8!<)T[[1)T[["b9)T[["b"=R-s3RS137)T[["h?)T[[#r:)T[[#r:)T[[#r:)T[[#vx@	#	#	
,S/:KLS"d3T:S"b126	!	!	
*dkk2vx@rcGdd}ddlm}|j|j||dd|j|j||ddd|j	t
|j||d|j|j||ddd|j|j||d	d|j|j||d	ddd	d
dd}|j|j||d
j
|jy)NceZdZdZdZy)5TestReduce.test_iterator_usage.<locals>.SequenceClassc||_yrr)r1rs  rrz>TestReduce.test_iterator_usage.<locals>.SequenceClass.__init__>	rcJd|cxkr|jkr	|SttNr)rr)r1rs  rrzATestReduce.test_iterator_usage.<locals>.SequenceClass.__getitem__@s(?DFF?H#%$*$rN)r(r)r*rrrrr
SequenceClassr=s

%rrr)rHr`r;r4r9r:r@)onetwothreer)operatorrHrOrrYrZrkeys)r1rrHrds    rtest_iterator_usagezTestReduce.test_iterator_usage<s
	%	%	!S-*:;R@S-*:B?D)T[[#}Q7GHS-*:B?DS-*:;Q?S-*:B?Da!,S!,bggaffh.?@rN)r(r)r*rrrrrrrs5ApArrc*eZdZer
ejZyy)TestReduceCN)r(r)r*rrrrrrrRs##rrc0eZdZeej
Zy)TestReducePyN)r(r)r*rrrrrrrrXs
,--
.Frrc<eZdZdZdZdZdZdZdZdZ	dZ
y	)
TestCmpToKeycd}|j|}|j|d|d|j|d|d|j|d|dd}|j|}|j|d|d|j	|d|d|j|d|d|j
|d|dy)	Nc||kD||kz
Srrrs  rcmp1z*TestCmpToKey.test_cmp_to_key.<locals>.cmp1_Ea!e$$rr@r9c0t|t|z
Srrrs  rcmp2z*TestCmpToKey.test_cmp_to_key.<locals>.cmp2fsq6CF?"rg@4r:35)
cmp_to_keyrO
assertGreaterassertGreaterEqual
assertLessassertLessEqualr~)r1rrrs    rtest_cmp_to_keyzTestCmpToKey.test_cmp_to_key^s	%ood#QQ(3q63q6*AA/	#ood#S3s8,AD	*SVSY/CFCI.rcpd}|j|}|j|d|d|j|d|d|jtt
f5|ddkDddd|jtt
f5d|dkddd|jt5|j}ddd|jt5|j|d}ddd|j|}|jt5|ddd|jt5|dddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYaxYw#1swYyxYw)Nc||kD||kz
Srrrs  rrz4TestCmpToKey.test_cmp_to_key_arguments.<locals>.cmp1orrmycmpr@r2r9)rrOrrYrZrr1rrs   rtest_cmp_to_key_argumentsz&TestCmpToKey.test_cmp_to_key_argumentsnsv	%ooDo)SQZ031:sqz2


	>:
;	FQJ	


	>:
;	
AJ	


y
)	$//#C	$


y
)	.//$-C	.ood#


y
)	E	


y
)	dO							$	$	.	.				sH1E0 E<	F7F8F 
F,0E9<FFF F),F5c8d}|j|}|jt5|d|dkDdddGddfd}|jt5|d|dkDdddy#1swYHxYw#1swYyxYw)Nctrrrs  rrz'TestCmpToKey.test_bad_cmp.<locals>.cmp1s##rr@r9ceZdZdZy))TestCmpToKey.test_bad_cmp.<locals>.BadCmpctrrr0s  r__lt__z0TestCmpToKey.test_bad_cmp.<locals>.BadCmp.__lt__s''rN)r(r)r*rrrrBadCmprs
(rrcSrr)rJrrs  rrz'TestCmpToKey.test_bad_cmp.<locals>.cmp1s
8Or)rrYr)r1rrrs   @rtest_bad_cmpzTestCmpToKey.test_bad_cmps	$ood#


0
1	FSVO		(	(	


0
1	FSVO						sB)BB
Bcrd}|j|}|j|djdy)Nc||kD||kz
Srrrs  rrz)TestCmpToKey.test_obj_field.<locals>.cmp1rrr2)rrOr+rs   rtest_obj_fieldzTestCmpToKey.test_obj_fields/	%ooDo)Rb)rcxd}|jttd|j|gdy)Nc||z
Srrrs  rrz)TestCmpToKey.test_sort_int.<locals>.mycmprRrr`r)rAr@r:r9r)rOsortedrr)r1rs  r
test_sort_intzTestCmpToKey.test_sort_ints.	adooe.DE(	*rcd}gd}t||j|}|j|Dcgc]
}t|c}gdycc}w)NcDt|t|}}||kD||kz
Srrrs  rrz-TestCmpToKey.test_sort_int_str.<locals>.mycmps&q63q6qAEa!e$$r)	r`3rbr:0rrA10r9r
)	rr9r9r:r@rAr`rbr;)rrrOr)r1rvaluesrs    rtest_sort_int_strzTestCmpToKey.test_sort_int_strsH	%6DOOE$:;&9#e*95	79sAcd}|j|}|d}|jtt||j	|t
jjy)Nc||z
Srrrs  rrz%TestCmpToKey.test_hash.<locals>.mycmprRrr;)rrYrZhashassertNotIsInstancecollectionsrIHashable)r1rrks    r	test_hashzTestCmpToKey.test_hashsJ	ooe$G)T1-  KOO$<$<=rct|jttj|jdy)Nz(mycmp))rOrr
from_callablerr\s rtest_cmp_to_signaturez"TestCmpToKey.test_cmp_to_signatures)Y44T__EF"	$rN)r(r)r*rrrrrrrrrrrrr\s*/ (
**7>$rrcLeZdZerejZejdZy)
TestCmpToKeyCchtj|ttj	dyr)rcheck_disallow_instantiationrrrr\s rtest_disallow_instantiationz)TestCmpToKeyC.test_disallow_instantiations'	,,${--d34	
rN)r(r)r*rrrcpython_onlyr#rrrr r s( ++


rr c0eZdZeej
Zy)TestCmpToKeyPyN)r(r)r*rrrrrrr&r&sl556Jrr&cHeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)TestTotalOrderingctjGdd}|j|d|dk|j|d|dkD|j|d|dk|j|d|dk\|j|d|dk|j|d|dk\|j|d|dkDy)NceZdZdZdZdZy)3TestTotalOrdering.test_total_ordering_lt.<locals>.Ac||_yrrr1rs  rrz<TestTotalOrdering.test_total_ordering_lt.<locals>.A.__init__	"
rc4|j|jkSrr-r0s  rrz:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__lt__zzEKK//rc4|j|jk(Srr-r0s  r__eq__z:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__eq__zzU[[00rNr(r)r*rrr3rrrr!r+
#
0
1rr!r9r:r
total_orderingrMr.r1r!s  rtest_total_ordering_ltz(TestTotalOrdering.test_total_ordering_lt		!	!	1	1
"	1	
!qt$!qt$!!%!!%!!%!!%1!%rctjGdd}|j|d|dk|j|d|dkD|j|d|dk|j|d|dk\|j|d|dk|j|d|dk\|j|d|dk\y)NceZdZdZdZdZy)3TestTotalOrdering.test_total_ordering_le.<locals>.Ac||_yrr-r.s  rrz<TestTotalOrdering.test_total_ordering_le.<locals>.A.__init__r/rc4|j|jkSrr-r0s  r__le__z:TestTotalOrdering.test_total_ordering_le.<locals>.A.__le__r4rc4|j|jk(Srr-r0s  rr3z:TestTotalOrdering.test_total_ordering_le.<locals>.A.__eq__r4rN)r(r)r*rrAr3rrrr!r>
#
1
1rr!r9r:r7r9s  rtest_total_ordering_lez(TestTotalOrdering.test_total_ordering_le		!	!	1	1
"	1	
!qt$!qt$!!%!!%!!%!!%11&rctjGdd}|j|d|dk|j|d|dkD|j|d|dk|j|d|dk\|j|d|dk|j|d|dk\|j|d|dky)NceZdZdZdZdZy)3TestTotalOrdering.test_total_ordering_gt.<locals>.Ac||_yrr-r.s  rrz<TestTotalOrdering.test_total_ordering_gt.<locals>.A.__init__r/rc4|j|jkDSrr-r0s  r__gt__z:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__gt__r1rc4|j|jk(Srr-r0s  rr3z:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__eq__r4rN)r(r)r*rrKr3rrrr!rHr6rr!r9r:r7r9s  rtest_total_ordering_gtz(TestTotalOrdering.test_total_ordering_gtr;rctjGdd}|j|d|dk|j|d|dkD|j|d|dk|j|d|dk\|j|d|dk|j|d|dk\|j|d|dky)NceZdZdZdZdZy)3TestTotalOrdering.test_total_ordering_ge.<locals>.Ac||_yrr-r.s  rrz<TestTotalOrdering.test_total_ordering_ge.<locals>.A.__init__r/rc4|j|jk\Srr-r0s  r__ge__z:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__ge__r4rc4|j|jk(Srr-r0s  rr3z:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__eq__r4rN)r(r)r*rrSr3rrrr!rPrCrr!r9r:r7r9s  rtest_total_ordering_gez(TestTotalOrdering.test_total_ordering_gerErctjGddt}|j|d|dk|j|d|dkD|j|d|dk|j|d|dk\|j|d|dk|j|d|dk\y)NceZdZy)=TestTotalOrdering.test_total_ordering_no_overwrite.<locals>.ANr'rrrr!rXrr!r9r:)r
r8rrMr9s  r test_total_ordering_no_overwritez2TestTotalOrdering.test_total_ordering_no_overwrite
s		!	!		
"	!qt$!qt$!!%!!%!!%!!%rc|jt5tjGdd}dddy#1swYyxYw)NceZdZy)7TestTotalOrdering.test_no_operations_defined.<locals>.ANr'rrrr!r]srr!)rYrr
r8r9s  rtest_no_operations_definedz,TestTotalOrdering.test_no_operations_definedsB


z
*	

%
%

&
			s	=ActjGfddtjGfddtjGfddtjGfdd|jd	jd	t|jd	jd	t|jd	j
d	t|jd	jd	t|jd	jd	t|jd	j
d	t|jd	jd	t|jd	jd	t|jd	j
d	t|jd	jd	t|jd	jd	t|jd	jd	ty)
Nc(eZdZdZfdZfdZy)ATestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanc||_yrr-r.s  rrzJTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__init__ r/rcPt|r|j|jk(SyNF
isinstancerr1r2ImplementsLessThans  rr3zHTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__eq__"$e%78::44rcZt|r|j|jkStSrrfrNotImplementedrgs  rrzHTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__lt__&'e%78::33%%rNr(r)r*rr3rrhsrrhra
#

&rrhc(eZdZdZfdZfdZy)HTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualToc||_yrr-r.s  rrzQTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__init__-r/rcPt|r|j|jk(Syrdrer1r2ImplementsLessThanEqualTos  rr3zOTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__eq__/$e%>?::44rcZt|r|j|jkStSrrkrus  rrAzOTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__le__3'e%>?::44%%rNr(r)r*rr3rArvsrrvrr+rprrvc(eZdZdZfdZfdZy)DTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanc||_yrr-r.s  rrzMTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__init__:r/rcPt|r|j|jk(Syrdrer1r2ImplementsGreaterThans  rr3zKTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__eq__<$e%:;::44rcZt|r|j|jkDStSrrkrs  rrKzKTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__gt__@'e%:;::33%%rNr(r)r*rr3rKrsrrr}8rprrc(eZdZdZfdZfdZy)KTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualToc||_yrr-r.s  rrzTTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__init__Gr/rcPt|r|j|jk(Syrdrer1r2ImplementsGreaterThanEqualTos  rr3zRTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__eq__I$e%AB::44rcZt|r|j|jk\StSrrkrs  rrSzRTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__ge__M'e%AB::44%%rNr(r)r*rr3rSrsrrrErprrr9)r
r8rrArlrKrSr)r1rrrhrvs @@@@rtest_notimplementedz%TestTotalOrdering.test_notimplementeds		!	!
	&
	&
"
	&
	!	!
	&
	&
"
	&
	!	!
	&
	&
"
	&
	!	!
	&
	&
"
	&	


(+2215~F

(+2215~F

(+2215~F

/299!<nM

/299!<nM

/299!<nM

+A.55a8.I

+A.55a8.I

+A.55a8.I

215<<Q?P

215<<Q?P

215<<Q?Prc
tjGfddtjGfddtjGfddtjGfddtjGfd	d
|jd5|jt5dd
kdddddd|jd5|jt5ddkdddddd|jd5|jt5d
d
kdddddd|jd5|jt5ddkdddddd|jd5|jt5ddkdddddd|jd5|jt5ddkDdddddd|jd5|jt5ddkDdddddd|jd5|jt5ddk\dddddd|jd5|jt5ddk\dddddd|jd5d}d}|j|||jt5||k\dddddd|jd5d }d }|j|||jt5||kddddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY]xYw#1swYbxYw#1swY.xYw#1swY3xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY\xYw#1swYaxYw#1swYxYw#1swYyxYw)!Nc(eZdZdZfdZfdZy)RTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanc||_yrr-r.s  rrz[TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__init__dr/rcPt|r|j|jk(Syrdrergs  rr3zYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__eq__frircZt|r|j|jkStSrrkrgs  rrzYTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__lt__jrmrNrnrosrrhrbrprrhc(eZdZdZfdZfdZy)UTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanc||_yrr-r.s  rrz^TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__init__qr/rcPt|r|j|jk(Syrdrers  rr3z\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__eq__srrcZt|r|j|jkDStSrrkrs  rrKz\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__gt__wrrNrrsrrrorprrc(eZdZdZfdZfdZy)YTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualToc||_yrr-r.s  rrzbTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__init__~r/rcPt|r|j|jk(Syrdrerus  rr3z`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__eq__rwrcZt|r|j|jkStSrrkrus  rrAz`TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__le__ryrNrzr{srrvr|rprrvc(eZdZdZfdZfdZy)\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualToc||_yrr-r.s  rrzeTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__init__r/rcPt|r|j|jk(Syrdrers  rr3zcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__eq__rrcZt|r|j|jk\StSrrkrs  rrSzcTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__ge__rrNrrsrrrrprrc$eZdZdZfdZdZy)XTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplementedc||_yrr-r.s  rrzaTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__init__r/rcPt|r|j|jk(Syrdre)r1r2ComparatorNotImplementeds  rr3z_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__eq__s$e%=>::44rctSr)rlr0s  rrz_TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__lt__s%%rNrn)rsrrrs
#

&rrzLT < 1r9zLT < LErzLT < GTzLE <= LTr:zLE <= GEr@zGT > GErAzGT > LTr`zGE >= GTrzGE >= LErbz
GE when equalrz
LE when equalr)r
r8r3rYrZrO)r1r>r?rrrrhrvs   @@@@@r$test_type_error_when_not_implementedz6TestTotalOrdering.test_type_error_when_not_implemented_s
	!	!
	&
	&
"
	&
	!	!
	&
	&
"
	&
	!	!
	&
	&
"
	&
	!	!
	&
	&
"
	&
	!	!	&	&
"	&\\(
#	'T%6%6y%A	'r"Q&	'	'\\)
$	Ad&7&7	&B	Aq!$=a$@@	A	A\\)
$	=d&7&7	&B	=q!$9!$<<	=	=\\*
%	Bt'8'8'C	B%a(,>q,AA	B	B\\*
%	Lt'8'8'C	L%a(,H,KK	L	L\\)
$	Gd&7&7	&B	G!!$'CA'FF	G	G\\)
$	=d&7&7	&B	=!!$'9!'<<	=	=\\*
%	Ht'8'8'C	H(+/DQ/GG	H	H\\*
%	Lt'8'8'C	L(+/H/KK	L	L\\/
*	(+A(+AQ"""9-
Q
		\\/
*	(+A(+AQ"""9-
Q
			E	'	'	'	'	A	A	A	A	=	=	=	=	B	B	B	B	L	L	L	L	G	G	G	G	=	=	=	=	H	H	H	H	L	L	L	L

			

			s2O8O+O85PPP>P,P&P,QP9/QQ &Q8Q Q:/Q-Q:"R8R
R+R.R!R.4S
R;S=8S"5S;S"8S<S/S<+O5	0O88PP	
PPP)	$P,,P69Q	>QQQ	Q  Q*-Q7	2Q::RR	RR!R+	&R..R8;S	SSS	S""S,/S9	4S<<Tc	:ttjdzD]p}dD]i}|j||5t	t
|}tjtj||}|j||dddkry#1swYxxYw)Nr9)rrKrArS)r;r)	rrrr3rOrderable_LTrrr)r1rrr;method_copys     rrzTestTotalOrdering.test_pickles622Q67	7E>
7\\U\;7$\48F"(,,v||FE/J"KKMM+v677
7	777sABBctjGfddtGdd}Gdd}|j||k|j	||kDy)Nc4eZdZfdZfdZfdZxZS)WTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMetac(t|||||Sr)super__new__)r rbasesns	__class__s    rrz_TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__new__swsD%<<rcPt|s	|j|jkSrrfr(r1r2SortableMetas  rrz^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__lt__s#!%6}}u~~55rcPt|s	|j|jk(Srrrs  rr3z^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__eq__s#!%6}}66r)r(r)r*rrr3
__classcell__)rrs@rrrs
=
6

7
7rrceZdZy)LTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.BNr'rrrr<rrr<	metaclassceZdZy)LTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.ANr'rrrr!rrrr!)r
r8rrMr.)r1r<r!rs   @r/test_total_ordering_for_metaclasses_issue_44605zATestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605s^		!	!	74	7
"	7	,		,		
AQrN)
r(r)r*r:rDrMrUrZr^rrrrrrrr(r(s9&"'"&"'"
&AQFiV7 rr(ceZdZdZdZdZy)rc||_yrr-r.s  rrzOrderable_LT.__init__s	
rc4|j|jkSrr-r0s  rrzOrderable_LT.__lt__szzEKK''rc4|j|jk(Srr-r0s  rr3zOrderable_LT.__eq__szzU[[((rNr5rrrrrs()rrceZdZdZy)	TestCachec	|jjfd|jtdDcgc]
}|c}gd|jj	|jjddddj
|jj	|jjddddycc}w)Nc@|dkr|S|dz
|dz
zSNr:r9rrfibs rrz!TestCache.test_cache.<locals>.fib*1uqs8c!A#h&&rrrr9r9r:r@r`r
r"7Yiyibhitsmissesmaxsizecurrsizer)rcacherOr
cache_info
_CacheInfocache_clearr1rrs  @r
test_cachezTestCache.test_caches	
			'
	'	
%)4Q#a&4I	K)KK""2tb"Q	S)KK""!TA"N	P5sCN)r(r)r*rrrrrrsPrrc,eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZej*dZej*dZej*dZdZdZdZdZdZdZdZdZ y)TestLRUc	
d}|jjd|}|j\}}}}|j|d|j|d|j|d|j|dt	d}t	dD]<}t|t|}
}	||	|
}||	|
}|j||>|j\}}}}|j
||kD|j||zd|j|d|j|j\}}}}|j|d|j|d|j|d|	
|j\}}}}|j|d|j|d|j|d|j|j||j|	|
|j\}}}}|j|d|j|d|j|d|jjd
fd}|j|jjdd
t	dD]}|j|d|j
d|j\}}}}|j|d|j|d|j|d|jjd
fd	}|j|jjdd
t	dD]}|j|d|j
d|j\}}}}|j|d
|j|d|j|d|jjd
fd}|j|jjdd
d
D]}	|j||	|	dz|j
d
|j\}}}}|j|d|j|d
|j|dy)Ncd|z|zSNr@rrs  rorigzTestLRU.test_lru.<locals>.origq519rr<rrr`r9cdz
yNr9r<rf_cntsrrzTestLRU.test_lru.<locals>.f6
QJErcdz
yrrrsrrzTestLRU.test_lru.<locals>.fFrrrAr:cdz
|dzSNr9r;r)rJrs rrzTestLRU.test_lru.<locals>.fVs
QJER4Kr)rbrrbrrbrrrrrrrrrrrbr;)r	lru_cacherrOrrrMrrrWr)r1rrrrrrdomainrrJractualrqrs             @rtest_lruzTestLRU.test_lru
sX	-DKK!!"!-d3*+,,.'fgx"%1%q!#qt	/A&>6&>qAq!WFAqzHVX.		/
+,,,.'fgxv
&-2&	

*+,,.'fgxq!#1%	!Q*+,,.'fgxq!#1%	


ammT*	

a*+,,.'fgxq!#1%
		q	!	
"		
//3q	&AQS"%	&"*+,,.'fgxq!#1%
		q	!	
"		
//3q	&AQS"%	&"*+,,.'fgxq!#1%
		q	!	
"		
//3?	)AQqT1R4(	)	
"*+,,.'fgxr"#1%rc	|jjd}|jtt	|gdgd|j|jjd|j|jjd|j|jjd|j|jjdy)Nc|dzSNr:rrIs rsquarez(TestLRU.test_lru_no_args.<locals>.squaregs6Mr)r;r<r;)dirr9r:)
rrrOr/rQrrrrr)r1rs  rtest_lru_no_argszTestLRU.test_lru_no_argsfs	
			
		
c&,78(	***,1115**,33Q7**,44c:**,55q9rcd|jjdfdtdD]}|j|d|d |jj	j
d|jdd|jj	j
dy)	NTr;rc6d|d}|dk(rr
d|}|S)N.r<Fr)rJrvronces  rrz%TestLRU.test_lru_bug_35780.<locals>.f{s.QCqBBw4qTIrrr<z.20.)rrrrOrr)r1rJrr
s  @@rtest_lru_bug_35780zTestLRU.test_lru_bug_35780rs	
		r		*	
+	r	-AQqTQqc8,	-00"5	
2'00"5rc|jjd}|d|dii|j|jjdy)NcyrrrIs rrz%TestLRU.test_lru_bug_36650.<locals>.frerrr9rn)rrrOrrrs  rtest_lru_bug_36650zTestLRU.test_lru_bug_36650sQ
			 	
!		
!	
r
,,a0rc|jjdd}tjj	}tjj	d|_tjj	d|_|j||dd|j|jjd|j|jd|j||dd|j|jjd	|j|jd
|j|dd	d|j|jjd	|j|jd
|j||dd|j|jjd|j|jdy)Nr9rc|dz|zSrrrs  rrz*TestLRU.test_lru_hash_only_once.<locals>.fq519rr)return_valuer)rr9r9r9r:)r9r9r9r9rr<)r9r:r9r9r@)r9r@r9r9)
rrrmockMock__mul____hash__rO
call_countr)r1rmock_ints   rtest_lru_hash_only_oncezTestLRU.test_lru_hash_only_onces
		q		)	
*	==%%'#==--2->$MM..C.@	
8Q,**55q96	
8Q,**55q96	
1a"%**55q96	
8Q,**55q96rctj}	|jjdtt_dD] }|j	tdd||"	|t_y#|t_wxYw)NrA)
rrr9r:r@r@rAr`rr9rbr:r9abcdefghijklmn)builtinsrrrrO)r1old_lenrs   rtest_lru_reentrancy_with_lenz$TestLRU.test_lru_reentrancy_with_lensl,,	#34;;003C8HL<
?  %5bq%9!:A>
?#HL7HLsAA22
A?c|jjd}|j|ddd|j|ddy)Nc|Srrrs rrz-TestLRU.test_lru_star_arg_handling.<locals>.fsKrr9r:rV)rVrrrOrs  rtest_lru_star_arg_handlingz"TestLRU.test_lru_star_arg_handlingsM	
			 	
!		
1a&)6I.rcT|jjdd}|jjdd}|jt5|gddd|jt5|gdddy#1swY0xYw#1swYyxYw)Nrcyrros rinfinite_cachez3TestLRU.test_lru_type_error.<locals>.infinite_cachererr;cyrrr(s r
limited_cachez2TestLRU.test_lru_type_error.<locals>.limited_cacherer)rrrYrZ)r1r*r,s   rtest_lru_type_errorzTestLRU.test_lru_type_errors

		t		,	
-	
		r		*	
+	

y
)	2	

y
)	"						s	B	BBB'c	|jjdfd|jtdDcgc]
}|c}gd|jj	|jjddddj
|jj	|jjddddycc}w)Nrc@|dkr|S|dz
|dz
zSrrrs rrz/TestLRU.test_lru_with_maxsize_none.<locals>.fibrrrrrrrrrrOrrrrrs  @rtest_lru_with_maxsize_nonez"TestLRU.test_lru_with_maxsize_nones	
		t		,	'
-	'	
%)4Q#a&4I	K)KK""2tb"Q	S)KK""!TA"N	P5sC"c	\|jjdd}dD]C}|jtdDcgc]
}||c}t	tdE|j|j|jj
ddddycc}w)	Nirc|Srrrs reqz2TestLRU.test_lru_with_maxsize_negative.<locals>.eqHrrori,r)rrrOrr/rr)r1r4rrs    rtest_lru_with_maxsize_negativez&TestLRU.test_lru_with_maxsize_negatives	
		s		+	
,		LAU3Z8be8$uSz:JK	LKK""#q1"M	O9sB)
cdD]}|jj|d}|j|dd|jt5}|dddd|jjj|jt5|ddddy#1swYWxYw#1swYxYw)NNrcd|S)NrIrrs rr z.TestLRU.test_lru_with_exceptions.<locals>.funcsQxrrr>r)rrrOrYrassertIsNone	exception__context__)r1rr cms    rtest_lru_with_exceptionsz TestLRU.test_lru_with_exceptionss#
	G
[[
"
"7
+
 ,
 T!Wc*"":.
"R
bll667"":.
R


	




s	B3	B?3B<	?C	cdD]}|jj|dd}|j|dd|jt|dtd|j|dd|jt|dtd|j|d	d|jt|d	td|j|d	d|jt|d	td|j|j	j
d
|j|j	jd
y)Nr9Trtypedc||zSrrrIs rrz+TestLRU.test_lru_with_types.<locals>.squares1urr@rg@g"@rIrA)rrrOrrrr)r1rrs   rtest_lru_with_typeszTestLRU.test_lru_with_types
s9"
	<G
[[
"
"7$
"
?
@
VAY*T&)_d1g6VC[#.T&+.S	:Va[!,T&1+.Q8Vc]C0T&3-0$s)<V..055q9V..077;
	<rc|jjdt}|j|dd|j|dd|j|dd|j|dd	|j|d
d|j|dd
|j|dd|j|dd|j|dd|j|dd|j|dd|j|ddGddt}|j||dd|j||dd|j||dd|j||dd|j||dd|j||ddy)NT)rCr9rTrue?z1.0rrFFalsez0.0rz(1,))T)rHrnz(0,))F)rJceZdZy)8TestLRU.test_lru_cache_typed_is_not_recursive.<locals>.TNr'rrrrarL.rrra)rrrrOr)r1cachedras   r%test_lru_cache_typed_is_not_recursivez-TestLRU.test_lru_cache_typed_is_not_recursives2&&T&248C(v.e,C(0e,v.&10v.)620			
$&1'
+V4&	*F3$&1(,f5&	*F3rc	|jjfd|jtdDcgc]}|
c}gd|jj	|jjddddj
|jj	|jjddddycc}w)	NcD|dkr|S|dz
|dz
zSNr:r9rrrs rrz/TestLRU.test_lru_with_keyword_args.<locals>.fib9*1u1:ac
**rrrrrrrrr0r1numberrs  @rtest_lru_with_keyword_argsz"TestLRU.test_lru_with_keyword_args8s	
			 	+
!	+	
).r3vS6]3I	
	
)KK""2sR"P	R)KK""!S1"M	O

4sC!c	|jjdfd|jtdDcgc]}|
c}gd|jj	|jjddddj
|jj	|jjddddycc}w)	NrcD|dkr|S|dz
|dz
zSrQrrs rrz<TestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.fibIrRrrrrrrrr0rSs  @r'test_lru_with_keyword_args_maxsize_nonez/TestLRU.test_lru_with_keyword_args_maxsize_noneHs	
		t		,	+
-	+	
eBi@F#-@I	K)KK""2tb"Q	S)KK""!TA"N	PAsC#c	2|jjdd}|j|ddddg|j|dd	ddg|j|j|jj	d
dddy)Nr;rc4t|jSr)r/items)rs rrz$TestLRU.test_kwargs_order.<locals>.fXs''rr9r:r=)r>r9)r?r:)r?r>rr)rrrOrrrs  rtest_kwargs_orderzTestLRU.test_kwargs_orderVs	
		r		*	(
+	(Q!x&:;Q!x&:;KK""!R!"L	Nrcdd}|jj|}|jjD](}|jt	||t	||*y)Ncy)zf doc stringrr)zomgs rrz,TestLRU.test_lru_cache_decoration.<locals>.fasr)r_zomg_annotation)rrrrOr)r1rgrs    rtest_lru_cache_decorationz!TestLRU.test_lru_cache_decoration`s[	
$DKK!!#A&KK33	ADWQ-wq$/?@	Arc
d\}d
jj|z
j\}}}}j|dt	j

fd}fd}t
j}tjd	t|D	cgc]}	t	j||	g}
}	tj|
5jdddj\}}}}jtur+j!||j!||z|z
n*j||j||z|z
j||t	j|	g}
|
t|D	cgc]}	t	j||	gc}	z
}
j#tj|
5jdddt
j|ycc}	w#1swY:xYwcc}	w#1swY6xYw#t
j|wxYw)
N)r`cd|z|zSrrrs  rrz-TestLRU.test_lru_cache_threaded.<locals>.origkrrrrcjdtD]"}j|d|d$y)Nr;r)waitrrO)rrrmrr1starts  rfullz-TestLRU.test_lru_cache_threaded.<locals>.fullrs=JJrN1X
6  1a$q!*5
6rcnjdtdzD]}jy)Nr;r:)rgrr)rrrhris rclearz.TestLRU.test_lru_cache_threaded.<locals>.clearws.JJrN1Q3Z
 


 rgư>targetrrn)rrrrO	threadingEventrgetswitchintervalrsetswitchintervalrThreadr	
start_threadssetrrrl)r1rrrrrrjrlorig_sirthreadsrrhrris`          @@@@rtest_lru_cache_threadedzTestLRU.test_lru_cache_threadedhs1	.DKK!!!A#!.t4*+,,.'fgx1%!	6	6
	 
'')!!$'	+!&a*!''t1#>*G*!//8
		
/0lln+D&'8{{l*$$VQ/$$T1Q3<8  +  qsV|4Xq)!''u56G!&q+"((A3?+
+GKKM!//8
		

!!'*/*

+


!!'*s[(
I5H/I+H4<B;I7I*III/I4H>9
IIII)c
V	
d\}tj|dz	tj|dztj|dz
jj|zfdj	jdd|zdf	
fd}t
|Dcgc]}tj|}}tj|5t
D]}	jd
jjd	j
jdjj	jd|dz|z|z|dzf	dddycc}w#1swYyxYw)	N)r`rbr9rc0jdd|zSNr;r@)rg)rJpauses rrz+TestLRU.test_lru_cache_threaded2.<locals>.fsJJrNq5LrrctD]?}jdj|d|zjdAyr|)rrgrO)rrrhr1ristops rtestz.TestLRU.test_lru_cache_threaded2.<locals>.testsD1X


2  1q1u-		"

rror;)rpBarrierrrrOrrrtr	rurgreset)r1rrrrxrrrhr}rirs`     @@@@@rtest_lru_cache_threaded2z TestLRU.test_lru_cache_threaded2sx1!!!A#&!!!A#&  1%	
		qs		+	
,		
!Q!Q8		
;@(CQ9##40CC

+
+G
4	I1X
I

2



2
		"

  !ac1Wac1Q31GH
I	I	ID	I	Is8F,B$FF(c	&jjddfd}tgdDcgc]\}}tj|||f }}}tj|5	dddycc}}w#1swYyxYw)Nr:rc6tjdd|zS)Ng{Gz?r@)timesleeprIs rrz+TestLRU.test_lru_cache_threaded3.<locals>.fsJJsOq5Lrcj|5j|d|z|dddy#1swYyxYw)N)threadr@)r3rO)rrJrr1s  rrz.TestLRU.test_lru_cache_threaded3.<locals>.tests@Q'
1  1q1ua0
1
1
1s	:A)r9r:r:r@r:rm)rr	enumeraterprtr	ru)r1rrvrxrs`    @rtest_lru_cache_threaded3z TestLRU.test_lru_cache_threaded3s	
		q		)	
*		1 )9;q!##4q!f=;;

+
+G
4			;		s#B6BBc|jjddGfdddd|jddy)Nr;rc|S)zEUsed to demonstrate a reentrant lru_cache call within a single threadrrIs r	test_funcz.TestLRU.test_need_for_rlock.<locals>.test_funcs	Hrc*eZdZdZdZdZfdZy)-TestLRU.test_need_for_rlock.<locals>.DoubleEqz=Demonstrate a reentrant lru_cache call within a single threadc||_yrrIr1rJs  rrz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__init__rrc|jSrrIr\s rrz6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__hash__svv
rcp|jdk(rd|j|jk(SrrI)r1r2DoubleEqrs  rr3z4TestLRU.test_need_for_rlock.<locals>.DoubleEq.__eq__s-66Q;hqk*vv((rN)r(r)r*rwrrr3)rrsrrrsK


)rrr9r:r$)r1rrs @@rtest_need_for_rlockzTestLRU.test_need_for_rlocksm
		r		*	
+			)		)	(1+(1+8A;/!!	&rczGfddt}|d}|d}|d}j|jjddD])}j|j||dzdz+j|j|j|jfdj|jjd	d
D])}j|j||dzdz+j|j|j|jfdj|jjdd
D])}j|j||dzdz+j|j|j|jfdj|jjdj|jj|jjj|jj|jjj|jj|jjy)NcVeZdZdZWjjddZy)"TestLRU.test_lru_method.<locals>.Xrr:c<|xjdz
c_|dz|zSrrrs  rrz$TestLRU.test_lru_method.<locals>.X.fs

a
tDy rN)r(r)r*rrrrr\srXrs)E
[[
"
"1
%
!&
!rrr`rb)rrr:r)
r9r:r:r@r9r9r9r:r@r@r;)rrr)rArr:r:)
r9r:r9r9r9r9r@r:r:r:)rrAr)r;r;r:r:)
r:r9r9r9r9r:r9r@r:r9)rrAr`)rrr:r:)rrOrrr)r1rr>r?rErJs`     rtest_lru_methodzTestLRU.test_lru_methods	!	!
aD
aD
aD)<8-	/AQSSVQrTAX.	/!''177AGG4i@)<8-	/AQSSVQrTAX.	/!''177AGG4i@)>:-	/AQSSVQrTAX.	/!''177AGG4i@)>:)133>>+;<)133>>+;<)133>>+;<rc	z|j}|jd|j|jfD]z}t	t
jdzD]Y}|j||5tjtj||}|j||ddd[|y#1swYhxYw)Nrr9)rr )rcached_funccached_methcached_staticmethrrrr3rrr)r1r rrrs     rrzTestLRU.test_picklesnn#S__c6K6KK	-Av66:;
-\\A\6-#\\&,,q%*@AFMM&!,--
-	---s(<B11B:c|j}d}|jj|d}|jd|j|j
|jj
d|f}|D]D}|j|5tj|}|j||dddFy#1swYQxYw)Ncd|z|zSrrrs  rrzTestLRU.test_copy.<locals>.origrrr:rr )
rrrLrrrrr3rrr1r rr#funcsrrs       rrzTestLRU.test_copysnn	{{""4+#S__c6K6K)&&q)$/1	)A1%
)1

fa(
)
)	)
)
)	(B<<C	c|j}d}|jj|d}|jd|j|j
|jj
d|f}|D]D}|j|5tj|}|j||dddFy#1swYQxYw)Ncd|z|zSrrrs  rrz#TestLRU.test_deepcopy.<locals>.origrrr:rr)rrrLrrrrr3rrrrs       rrzTestLRU.test_deepcopysnn	{{""4+#S__c6K6K)&&q)$/1	)A1%
)q)

fa(
)
)	)
)
)rc|jjdd}|j|jddd|jjddd}|j|jdddy)	Nr:rcyNr9rrrrrz,TestLRU.test_lru_cache_parameters.<locals>.frFrBrTcyrrrrrrz,TestLRU.test_lru_cache_parameters.<locals>.f rr)rrrOcache_parametersrs  rtest_lru_cache_parametersz!TestLRU.test_lru_cache_parameterss	
		q		)	
*	++-1u/MN	
		t4		8	
9	++-4$/OPrcjjd}Gfdd}tj|tj|jtj|j
g}|D]}j
|~~tj|D]}j|y)Nc|SrrrIs r
test_functionz9TestLRU.test_lru_cache_weakrefable.<locals>.test_function&r5rceZdZWjjdZeWjjfdZy)-TestLRU.test_lru_cache_weakrefable.<locals>.Ac
||fSrrrs  rtest_methodz9TestLRU.test_lru_cache_weakrefable.<locals>.A.test_method+say rc|fSrr)rJr1s rtest_staticmethodz?TestLRU.test_lru_cache_weakrefable.<locals>.A.test_staticmethod/say rN)r(r)r*rrrrrr\srr!r*sE
[[
"
"
!#
!
[[
"
"
!#
!rr!)
rrweakrefrefrrassertIsNotNonegccollectr<)r1rr!refsrs`    rtest_lru_cache_weakrefablez"TestLRU.test_lru_cache_weakrefable%s	
			
		!	!M*AMM*A//02	(C  '	(



	%Cce$	%rc,d}|jjd|}|jtt	j
|jd|jtt	j
|jdy)Ncyrrrrrrz,TestLRU.test_common_signatures.<locals>.origCrr9z())rrrOrrrrr)r1rlrus   rtest_common_signatureszTestLRU.test_common_signaturesBsh&dkk##A&t,Y44S^^DEtLY44S__EFMrN)!r(r)r*rrrrrr r%r-r1r7r@rErNrUrXr\rbr	requires_working_threadingryrrrrrrrrrrrrrrrsW&r
:661!7F
#/&PO < 46O PNA1002.+3.+`1002I3I610023&0=>-
)
)	Q%:Nrrcd|z|zSrrrs  rpy_cached_funcrJsq519rcd|z|zSrrrs  r
c_cached_funcrO1uqyrcxeZdZeZefZejdZe	ejdZ
y)	TestLRUPycd|z|zSrrrGs   rrzTestLRUPy.cached_methXrrcd|z|zSrrrs  rrzTestLRUPy.cached_staticmeth\s1uqyrN)r(r)r*rrrrrrrrrrrrrTsN
F /Krrc~eZdZer7eZefZejdZe	ejdZ
yy)TestLRUCcd|z|zSrrrGs   rrzTestLRUC.cached_methhrrcd|z|zSrrrs  rrzTestLRUC.cached_staticmethlsq519rN)r(r)r*rrrrrrrrrrrrrbsV#n					
	
					

	rrc
eZdZdZdZdZdZeje	de
jdZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%y )!TestSingleDispatchctjd}d}|jt||j	|dd|j	|dd|j	|gddy)NcyNrrr2s rraz3TestSingleDispatch.test_simple_overloads.<locals>.gtrcy)Nintegerrr;s rg_intz7TestSingleDispatch.test_simple_overloads.<locals>.g_intwsrrrr9rr9r:r@)r
singledispatchregisterrrOr1rars   rtest_simple_overloadsz(TestSingleDispatch.test_simple_overloadsssi		!	!	
"			

356*1y)7V,rctjd}Gdd}Gdd|}Gdd|}Gdd	||}d
}d}|j|||j|||j||d|j||d|j||d|j||dy)Ncyrrr2s rraz&TestSingleDispatch.test_mro.<locals>.grrceZdZy)&TestSingleDispatch.test_mro.<locals>.ANr'rrrr!rrrr!ceZdZy)&TestSingleDispatch.test_mro.<locals>.CNr'rrrCrrrrceZdZy)&TestSingleDispatch.test_mro.<locals>.BNr'rrrr<rrrr<ceZdZy)&TestSingleDispatch.test_mro.<locals>.DNr'rrrDrrrrcy)Nr!rras rg_Az(TestSingleDispatch.test_mro.<locals>.g_Arcy)Nr<rrcs rg_Bz(TestSingleDispatch.test_mro.<locals>.g_Brr)r
rrrO)r1rar!rr<rrrs        rtest_mrozTestSingleDispatch.test_mro~s		!	!	
"								1				

1c	

1c13%13%13%13%rctjd}|jtd}|j	|dd|j	|dd|j|j
t||j|j
t|j
ty)Ncyrrr2s rraz5TestSingleDispatch.test_register_decorator.<locals>.grrcd|S)Nzint rr;s rrz9TestSingleDispatch.test_register_decorator.<locals>.g_ints
 ?"rrrrzint 12)	r
rrrrOrdispatchrrrs   rtest_register_decoratorz*TestSingleDispatch.test_register_decorators		!	!	
"		
C	#
	#2'2)

ajjou-

ajj(!**S/:rctjd}|j|jdtj
jdkr|j|jdyy)Ncy)Simple testTestrr2s rraz6TestSingleDispatch.test_wrapping_attributes.<locals>.gsrrar:r)r
rrOr(rrrrw)r1ras  rtest_wrapping_attributesz+TestSingleDispatch.test_wrapping_attributess[		!	!	
"		
S)99!QYY
6"rzrequires _decimalctjd}|jtjd}tjd}tj
d}|j||d|j||d|jtj
d}|j||d|j||dy)	Ncyrrr2s rraz,TestSingleDispatch.test_c_classes.<locals>.grrc|jSrr#r2s rrz,TestSingleDispatch.test_c_classes.<locals>._s88OrExponent < EminNumber got rounded)r)rcy)NToo small to care.rr2s rrz,TestSingleDispatch.test_c_classes.<locals>._s'rr)r
rrrDecimalException	SubnormalRoundedrO)r1rarsubnrnds     rtest_c_classesz!TestSingleDispatch.test_c_classess
	!	!	
"		
G,,	-	
.	  !23oo234"673!89	
G%%	&	(
'	(4"673!89rctj}tj}|j|j
|j|jg}t|D]m}|t|}|j|t|j
|j|j|j|j|jtgo|j|j|j
tj g}t|D]}|tj"|}|j|tj"|j
|j|j|j|j|jtg|j|jt$g}t|D]u}|tj&|j|jt$g}|j|tj&t|j|jtgwGddtj&}|j(j+||j(|j
g}t|D]}|||}|j|||j(|j|j,tj&t|j
|j|j|j|j|jtg
Gddtj&}|j|j.|j|jg}t|D]y}|||}|j|||j.tj&t|j|j|j|j|jtg
{y)NceZdZy).TestSingleDispatch.test_compose_mro.<locals>.DNr'rrrrr
rrrceZdZdZy).TestSingleDispatch.test_compose_mro.<locals>.Ccyrrr\s r__call__z7TestSingleDispatch.test_compose_mro.<locals>.C.__call__rNr(r)r*rrrrrr
rr)rrIr
_compose_mroSequenceMutableMappingMappingSetrrPrO
CollectionSizedIterable	ContainerrOrderedDictChainMaprdefaultdictMutableSequencer
ReversibleCallable)r1rEmrorhaystackrhrrs        rtest_compose_mroz#TestSingleDispatch.test_compose_mrosOO$$Q--qyy!%%@$U+	7HD(#AQq'7'7!"qww

!"f!6
7	7
aii)9)9;;R;RS$U+	7HK(((3AQ!5!5q7G7G!"qww

!"f!6
7	7aggs+$U+	7HK++aggq{{C-HIAQ!8!8$!"f!6
7	7	''		""1%""A$4$45$U+	*HAx AQA$5$5qzz1<<!,!8!8$@P@PRSR[R[!"qww

AKK!'!)
*	*	''	!**akk199=$U+	7HAx AQAJJ0G0Gqyy!"qww

!"f!6
7	7rcptj}ddi}gd}tdh}t|}d}tj
d}|j
||d|j
||d|j
||d|j
||d|j
||d|j|jd|j
||d|j
||d|j
||d|j
||d|j
||d|j|jd|j
||d	|j
||d|j
||d|j
||d|j
||d|jtjd
|j
||d	|j
||d|j
||d|j
||d|j
||d|j|jd|j
||d	|j
||d|j
||d|j
||d|j
||d|j|jd
|j
||d	|j
||d|j
||d|j
||d|j
||d|j|jd|j
||d	|j
||d|j
||d|j
||d|j
||d|j|jd|j
||d	|j
||d|j
||d|j
||d|j
||d|j|jd|j
||d	|j
||d|j
||d|j
||d|j
||d|jt d|j
||d|j
||d|j
||d|j
||d|j
||d|jt"d|j
||d|j
||d|j
||d|j
||d|j
||d|jt$d|j
||d|j
||d|j
||d|j
||d|j
||d|jtd|j
||d|j
||d|j
||d|j
||d|j
||d|jt&d|j
||d|j
||d|j
||d|j
||d|j
||dy)Nr>r?rcyrrr2s rraz/TestSingleDispatch.test_register_abc.<locals>.grrrcyNsizedrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>rrr+cyNmutablemappingrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>
rrr.cy)Nchainmaprr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>rrcy)Nmutablesequencerr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>rrr2cy)N
mutablesetrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>rrr4cyNmappingrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>"rrcyNsequencerr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>(rrr:cyNrvrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>.rrrvcyNrPrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>4rrrPcyNr/rr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>:rrr/cy)Nconcrete-setrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>@rrrBcy)N
frozen-setrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>FrrrDcy)Nrrr2s rrKz6TestSingleDispatch.test_register_abc.<locals>.<lambda>Lrrr)rrIr	frozensetr
rrOrrrrr!
MutableSetrrrrPr/rvr)r1rErdlrrtras        rtest_register_abcz$TestSingleDispatch.test_register_abcsOO
#J
XtaL		!	!	
"	1v&1v&1v&1v&1v&	

177/01w'1w'1w'1w'1w'	

1##%AB1/01w'1w'1w'1w'	

;'')?@1/01w'1w'1w'1w'	

1$$&CD1/01011w'1w'1w'	

1<<!9:1/01011|,1w'1w'	

199341/01011|,1w'1w'	

1::561/01011|,1w'1z*	

155+,1/01011|,1u%1z*	

4+,1v&1011|,1u%1z*	

4+,1v&1v&1|,1u%1z*	

3231v&1v&1~.1u%1z*	

9671v&1v&1~.1|,1z*	

5-.1v&1v&1~.1|,1w'rc	tj}tj}Gddt}Gdd|}|j
jGddt}Gddt}Gd	d
|||}||j|||j
||j|tg	}t|j|j|j
gD]}	|j|||	||j|j|j|j
|jg}
|j|||
|y)NceZdZy))TestSingleDispatch.test_c3_abc.<locals>.ANr'rrrr!rMVrrr!ceZdZdZy))TestSingleDispatch.test_c3_abc.<locals>.Bcyrrr\s rrz1TestSingleDispatch.test_c3_abc.<locals>.B.__len__YrrNr(r)r*rrrrr<rOX
rr<ceZdZy))TestSingleDispatch.test_c3_abc.<locals>.CNr'rrrrrT[rYrrceZdZy))TestSingleDispatch.test_c3_abc.<locals>.DNr'rrrrrV^rrrceZdZdZy))TestSingleDispatch.test_c3_abc.<locals>.Xcyrrr\s rrz2TestSingleDispatch.test_c3_abc.<locals>.X.__call__arrNrrrrrrX`rrr)abcs)
rrIr
_c3_mrorrrr#rrrOrr)r1rEr$r!r<rrrrqrZ	many_abcss           rtest_c3_abczTestSingleDispatch.test_c3_abcSsOO				
				
				1a	qzz1aa!VL !''1::q{{!CD	:DS.9	:YYQ[[!**M	QY/:rcGddt}Gdd|}Gdd|}tjd}|j|d	}|}|j	||d
y)NceZdZdZy)1TestSingleDispatch.test_false_meta.<locals>.MetaAcyrrr\s rrz9TestSingleDispatch.test_false_meta.<locals>.MetaA.__len__mrrNrQrrrMetaAr`lrRrrbceZdZy)-TestSingleDispatch.test_false_meta.<locals>.ANr'rrrr!rdorrr!rceZdZy).TestSingleDispatch.test_false_meta.<locals>.AANr'rrrAArfqrrrgcy)Nzbase Arras rfunz/TestSingleDispatch.test_false_meta.<locals>.funssrcy)Nfun Arras rrz-TestSingleDispatch.test_false_meta.<locals>._vrrk)rr
rrrO)r1rbr!rgriraas       rtest_false_metaz"TestSingleDispatch.test_false_metajss	D		%					!	!	
"		a	
	
TR'*rc8tj}tjd}Gdd|j}|}|j||d|j
|jd|j
|jd|j
|jd|j
|jd|j||d	|jj
||j||d	|jj
||j||d	|jj
||j||d
Gdd}|}|j||d|jj
||j||d
|jj
||jt5}||ddd|jtjdGdd|j}|}	|j||	d	|jj
||j||	d	|jj
||j||	d
tjd}
|
j
|jd}|
j
|jd}|jt5}|
tjdddd|jtjdGddtj}
|j j
|
tjd}|j
|j"d}|j
|j d}|
}|j||dGdd}Gdd||j}|}|j|
|d	|jj
||j|
|d	Gd d!}|}|j|
|d	|jj
||jt5}|
|ddd|jtjdGd"d#|j|}tjd$}|j
|d%}|j
|jd&}|}|j||d'|jj
||j||d(y#1swYxYw#1swYxYw#1swYxYw))Ncyrrargs rraz0TestSingleDispatch.test_mro_conflicts.<locals>.g~rrceZdZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.Ocyrrr\s rrz8TestSingleDispatch.test_mro_conflicts.<locals>.O.__len__rrNrQrrrOrtrRrrvrcy)Niterablerrqs rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>rrcyN	containerrrqs rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>rrcyr*rrqs rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>rrcyr<rrqs rrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>rrr+rvceZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.PNr'rrrPrrrrrx)z]Ambiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Iterable'>z]Ambiguous dispatch: <class 'collections.abc.Iterable'> or <class 'collections.abc.Container'>ceZdZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.Qcyrrr\s rrz8TestSingleDispatch.test_mro_conflicts.<locals>.Q.__len__rrNrQrrrQrrRrrcyrrrqs rhz0TestSingleDispatch.test_mro_conflicts.<locals>.hrrcyr*rrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>._rlrcyrzrrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>._rcyrrrrrrKz7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>rr)zZAmbiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Sized'>zZAmbiguous dispatch: <class 'collections.abc.Sized'> or <class 'collections.abc.Container'>ceZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.RNr'rrrRrrrrcyrrrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>.irrcyr6rrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>._rcyr9rrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>._rr:ceZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.SNr'rrrSrrrrceZdZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.Tcyrrr\s rrz8TestSingleDispatch.test_mro_conflicts.<locals>.T.__len__rrNrQrrrrarrRrraceZdZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.Ucyrrr\s rrz8TestSingleDispatch.test_mro_conflicts.<locals>.U.__len__rrNrQrrrUrrRrrceZdZdZy)0TestSingleDispatch.test_mro_conflicts.<locals>.Vcyrrr\s rrz8TestSingleDispatch.test_mro_conflicts.<locals>.V.__len__rrNrQrrrVrrRrrcyrrrqs rjz0TestSingleDispatch.test_mro_conflicts.<locals>.jrrcy)Nrrrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>._srcyrzrrqs rrz0TestSingleDispatch.test_mro_conflicts.<locals>._rrrr{)rrIr
rrrOrrrrrYrrrr=r r!r)r1rErarvr)rrSre_onerqrrre_tworrrrrarIrure_threerrrs                         rtest_mro_conflictsz%TestSingleDispatch.test_mro_conflicts|sOO		!	!	
"			
C1v&	

1::56	

1;; 78	

177/0	

155+,1w'	

A1w'	Q1w'	q1u%		
C1v&	

A1z*	Q


|
,	
aD	

  !
9	
		
C1w'	

A1w'	q1u%		!	!	
"		
AGG		
		
AKK	 	
!	

|
,	2
k%%i01	2

  !
9	
	''		""1%		!	!	
"		
A$$	%	
&		
A%%	&	
'	
C1z*			177	
C1w'	Q1w'		
C1w'	Q


|
,	
aD	

""#
9	
		
	!	!	
"		
A	
		
AKK	 	
!	
C1s#	Q1{+A		@	2	2P		s$	W6	X		X6XX
Xc:	ddlm}ddl}Gfdd|	tj|d	fd5tj
}tjd}i}g}|jt	d|j||d|jt	d	|j	jg|j	jtg|j	jt|jt|j||d|jt	d
|j	jg|j	jtt g|j	jt|jt|j	jt |jt|j	jt	jt |j||d|j||d|j	jt tg|j	jtt g|j#t d|j	jt tg|jt	d|j||d|jt	d	|j	jt tg|j	jtt tg|j	jtt
j$t|j|j||d|jt	d
|j	jt tg|j	jtt tt g|j	jt t
j$t |jGd
d}|j&j#||j||d|j||d|j	jt ttt g|j	jtt tt g|j#|j(d|jt	d|j||d|jt	d	|j	jt ttt g|j	jtt tt tg|j||d|jt	d
|j	jt ttt g|j	jtt tt tt g|j||d|j||d|j	jt ttt t tg|j	jtt tt tt g|j+t |j+t|j	jt ttt t tt tg|j	jtt tt tt g|j,j#||jt	d
|j||d|jt	d	|j#|j&d|jt	d|j||d|jt	d	|j||d|jt	d
|j#td|j||d|j||d|j/|jt	ddddy#1swYyxYw)Nr)UserDictc4eZdZfdZdZdZdZxZS)?TestSingleDispatch.test_cache_invalidation.<locals>.TracingDictc@t||i|g|_g|_yr)rrset_opsget_ops)r1rrTracingDictrs   rrzHTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__init__	s%k414B6B!!rcZ|j|}|jj||Sr)rrr)r1rresults   rrzKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__getitem__	s&3##C(
rcX|jj|||j|<yr)rrr)r1rrs   r__setitem__zKTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__setitem__		s!##C(!&		#rc8|jjyr)rrlr\s rrlzETestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.clear	s		!r)r(r)r*rrrrlr)rrs@rrr	s
"

'
"rrWeakKeyDictionarycSrr)tdsrrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>	sRrcyrrrqs rraz5TestSingleDispatch.test_cache_invalidation.<locals>.g	rrr9r:cyr@rrqs rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>(	rrr/ceZdZy)5TestSingleDispatch.test_cache_invalidation.<locals>.XNr'rrrrr7	srrcyr*rrqs rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>?	rrr+cyr-rrqs rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>V	rrr.cyr>rrqs rrKz<TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>\	rrrP)rrrr	swap_attrrIr
rrOrrrrPrregistryrr/r
_find_implrrrrG_clear_cache)
r1rrrErardrHrrrs
        @@rtest_cache_invalidationz*TestSingleDispatch.test_cache_invalidations(
	"(
	"]


w(;Z
HP	)A

%
%
&
AASWa(QqT6*SWa(RZZ,RZZ$0RWWT]AJJv,>?QqT6*SWa(RZZ,RZZ$6RWWT]AJJv,>?RWWT]AJJv,>?RWWT]BGGDM:QqT6*QqT6*RZZ$6RZZ$6
JJt/0RZZ$6SWa(QqT6*SWa(RZZ$6RZZ$d);<RWWT]&11$

C
EQqT6*SWa(RZZ$6RZZ$dD)ABRWWT]&11$

C
E


%%a(QqT6*QqT6*RZZ$dD)ABRZZ$dD)AB
JJqww 34SWa(QqT7+SWa(RZZ$dD)ABRZZ$dD$)GHQqT6*SWa(RZZ$dD)ABRZZ$dD$)MNQqT6*QqT7+RZZ$dD$)MNRZZ$dD$)MN
JJt
JJtRZZ$dD$*.*6
7RZZ$dD$)MN
LL!!!$SWa(QqT6*SWa(
JJq'')EFSWa(QqT#34SWa(QqT6*SWa(
JJt/0QqT6*QqT6*
NNSWa(aP	)P	)P	)se
ffctjd}|jdtjj
fd}|jdd}|j
|dd|j
|ddid|j
|gd	d
|j
|d	d
|j
|dd
|jtGdd
}|j
|ddy)Ncyrrrqs rrz.TestSingleDispatch.test_annotations.<locals>.ic	rrrrcyr6rrqs rrz.TestSingleDispatch.test_annotations.<locals>._f	rrcyr9rrqs rrz.TestSingleDispatch.test_annotations.<locals>._i	rrrr>r9r7rr:rceZdZdZdZy).TestSingleDispatch.test_annotations.<locals>._c||_yrrqr1rrs  rrz7TestSingleDispatch.test_annotations.<locals>._.__init__v		rc |j|k(Srrqr0s  rr3z5TestSingleDispatch.test_annotations.<locals>._.__eq__y	sxx5((rN)r(r)r*rr3rrrrrt	s

)rr)rrzcollections.abc.Sequence)r
rrrrIrrOr)r1rrs   rtest_annotationsz#TestSingleDispatch.test_annotationsb	s		!	!	
"		
	;??**	
		
	
	4&)C8i09z29z25:.
C	)	)
	)	
55)rcGdd}|}|jd|j|jd|}|jt	|d|jd|j|jd|}|jt	|d|jd|j|jd	|}|jt	|dy)
NceZdZejdZej
edZej
e	dZy)2TestSingleDispatch.test_method_register.<locals>.Acd|_yrrqrs  rrIz4TestSingleDispatch.test_method_register.<locals>.A.t	s	!rcd|_yNrrqrs  rrz4TestSingleDispatch.test_method_register.<locals>.A._		 rcd|_yNrrqrs  rrz4TestSingleDispatch.test_method_register.<locals>.A._	rrN
r(r)r*r
singledispatchmethodrIrrrrrrrr!r~	sN

+
+
",
"
ZZ_
!
!
ZZ_
!
!rr!rrrrrrrJr)rIrOrrr.r/)r1r!r>rms    rtest_method_registerz'TestSingleDispatch.test_method_register}	s		!		!
C	A&
SU+,	B&
SU+,	C'
SU+,rcGdd}|}|j|jd|j|jd|j|jddy)NceZdZejedZejeedZ	eje
edZ	y)8TestSingleDispatch.test_staticmethod_register.<locals>.Ac|Srrrqs rrIz:TestSingleDispatch.test_staticmethod_register.<locals>.A.t		
rc"t|tSrrfrrqs rrz:TestSingleDispatch.test_staticmethod_register.<locals>.A._	"#s++rc"t|tSrrfrrqs rrz:TestSingleDispatch.test_staticmethod_register.<locals>.A._	rrNr(r)r*r
rrrIrrrrrrrr!r	sf

+
+

,

ZZ_

,
,
ZZ_

,
,rr!rrrJrMrIrOr1r!r>s   rtest_staticmethod_registerz-TestSingleDispatch.test_staticmethod_register	U	,	,
CAB S3'rcGdd}|j|jdjd|j|jdjd|j|jdjdy)	NceZdZdZej
edZeje	edZ
ejeedZ
y)7TestSingleDispatch.test_classmethod_register.<locals>.Ac||_yrrqrs  rrz@TestSingleDispatch.test_classmethod_register.<locals>.A.__init__	rrc|dSrrr rrs  rrIz9TestSingleDispatch.test_classmethod_register.<locals>.A.t	6{"rc|dSrrrs  rrz9TestSingleDispatch.test_classmethod_register.<locals>.A._	5z!rc|dSrrrs  rrz9TestSingleDispatch.test_classmethod_register.<locals>.A._	rrNr(r)r*rr
rrrIrrrrrrrr!r	sm

+
+

#,
#
ZZ_

"
"
ZZ_

"
"rr!rrrrrJrrOrIrrr9s  rtest_classmethod_registerz,TestSingleDispatch.test_classmethod_register	b	"	""	
QU+Re,Sv.rcGdd}|jjttd}|jjttd}|j|jdjd|j|jdjd|j|jd	jd
y)Nc@eZdZdZej
edZy)4TestSingleDispatch.test_callable_register.<locals>.Ac||_yrrqrs  rrz=TestSingleDispatch.test_callable_register.<locals>.A.__init__	rrc|dSrrrs  rrIz6TestSingleDispatch.test_callable_register.<locals>.A.t	rrN)r(r)r*rr
rrrIrrrr!r	s)

+
+

#,
#rr!c|dSrrrs  rrz4TestSingleDispatch.test_callable_register.<locals>._	u:rc|dSrrrs  rrz4TestSingleDispatch.test_callable_register.<locals>._	rrrrrrrJr)rIrrrrrOrr)r1r!rs   rtest_callable_registerz)TestSingleDispatch.test_callable_register	s	#	#
c			

		
c			

		
QU+Re,Sv.rc4Gddtj}|j|jj|j|j
dj|j
t5|dddy#1swYyxYw)NcNeZdZejejdZy)ATestSingleDispatch.test_abstractmethod_register.<locals>.AbstractcyrrrGs   rrHzETestSingleDispatch.test_abstractmethod_register.<locals>.Abstract.add	srN)r(r)r*r
rrIrJrHrrrrLr	s(

+
+



 ,
rrLrrH)rIrNrMrHrMr"rYrZ)r1rLs  rtest_abstractmethod_registerz/TestSingleDispatch.test_abstractmethod_register	so			
99:))%0EEF


y
)	J			s=BBcGdd}|}|j|jdd|j|jdd|j|jddy)	NceZdZejdZejdefdZejde	fdZy)4TestSingleDispatch.test_type_ann_register.<locals>.Acyrrrs  rrIz6TestSingleDispatch.test_type_ann_register.<locals>.A.t	rrrrcyrrrs  rrz6TestSingleDispatch.test_type_ann_register.<locals>.A._	rcyrrrs  rrz6TestSingleDispatch.test_type_ann_register.<locals>.A._	rrNrrrrr!r	sT

+
+
,

ZZ
S


ZZ
S

rr!rrrrrJr)rOrIrs   rtest_type_ann_registerz)TestSingleDispatch.test_type_ann_register	s]				
CQ'R%(S6*rcGdd}|}|j|jd|j|jd|j|jddy)NceZdZejedZejedefdZ	ejede
fdZ	y)ATestSingleDispatch.test_staticmethod_type_ann_register.<locals>.Ac|Srrrqs rrIzCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A.t	rrrrc"t|tSrrrqs rrzCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A._	rrc"t|tSrrrqs rrzCTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A._
rrNrrrrr!r	sl

+
+

,

ZZ

,s
,
,
ZZ

,s
,
,rr!rrrJrrs   r#test_staticmethod_type_ann_registerz6TestSingleDispatch.test_staticmethod_type_ann_register	rrcGdd}|j|jdjd|j|jdjd|j|jdjdy)	NceZdZdZej
edZejede	fdZ
ejedefdZ
y)@TestSingleDispatch.test_classmethod_type_ann_register.<locals>.Ac||_yrrqrs  rrzITestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.__init__
rrc|dSrrrs  rrIzBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.t
rrrrc|dSrrrs  rrzBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A._
rrc|dSrrrs  rrzBTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A._
rrNrrrrr!r
ss

+
+

#,
#
ZZ

"C
"
"
ZZ

"C
"
"rr!rrrrrJrrr9s  r"test_classmethod_type_ann_registerz5TestSingleDispatch.test_classmethod_type_ann_register
rrc|Gdd}|j|j|j|j|j|jfD]\}|j|5|j	|j
d|j	|jdtddd^|j	|jjd|j	|jjd|j	|jjd|j	|jjd|j	|jjd|j	|jjdy#1swY]xYw)	NceZdZejdedefdZejededefdZ	eje
dedefdZy)=TestSingleDispatch.test_method_wrapping_attributes.<locals>.Arrreturnct|SMy function docstringrrs  rr zBTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.func#

3xrct|Sr&r(rs  rcls_funczFTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.cls_func'

3xrct|Sr&r(rqs rstatic_funczITestSingleDispatch.test_method_wrapping_attributes.<locals>.A.static_func,
r,rN)r(r)r*r
rrrr rr+rr.rrrr!r#"
s

+
+
 
 
 ,
 
+
+

 3
 3
 ,
 
+
+

 
 
 ,
 rr!methr'rrr r+r.)	r r+r.r3rOrwrprr()r1r!r0s   rtest_method_wrapping_attributesz2TestSingleDispatch.test_method_wrapping_attributes!
sR	 	 "
FF
CHH
JJ
CLL
MM
COO


	CD4(
C  /FG  !5!5e!<cB
C
C
	C	
&1**F3,,j9..
;//?11=A
C
Cs
3AF11F;	c	dGfdd}Gfdd}|jd5}|}ddd|jd5}|}ddd|j|j|d|j|jd|jd|j|jdddD]}|j|	5|jt	||j
t	||j
|jt	||j
t	||j
ddd|j|j|j|jfD]\}|j|
5|j|jd|j|jdtddd^|j|jj
d
|j|jj
d
|j|jj
d|j|jj
dy#1swYuxYw#1swYfxYw#1swYxYw#1swY3xYw)Ncl|jttjfd}|S)Nc|i|Srr)rrrYs  rrXzgTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decorator.<locals>.wrapperH
s///r)__func__rr
r)r rXrYs  @rclassmethod_friendly_decoratorzVTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decoratorF
s4mmG

__W
%
0&
0NrcleZdZeej
dedefdZWededefdZ	y)MTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatchrrr$c36K	t|y#YyxYww)NDoner(rs  rcls_context_managerzaTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.cls_context_managerO
s"c(N!6
ct|Srr(rs  rdecorated_classmethodzcTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.decorated_classmethodW
r)rN)
r(r)r*r
contextlibcontextmanagerrrr;r>r6srWithoutSingleDispatchr8N
s[


&
&
"c
"c
"'
",

 
 
 ,
 rrBceZdZejeejdede	fdZ
ejWedede	fdZy)JTestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatchrrr$c36K	t|y#YyxYww)r'r:r(rs  rr;z^TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.cls_context_manager]
s
"c(N!6r<ct|Sr&r(rs  rr>z`TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.decorated_classmethodg
s

3xrN)r(r)r*r
rrr?r@rrr;r>rAsrWithSingleDispatchrD\
sw

+
+


&
&
"c
"c
"',
"
+
+
+

 
 
 ,,
 rrGr`5)r;r>)r;r/r'rrr;r>)	r;rOr>r3rr(rwrpr)	r1rBrGrwithout_single_dispatch_foosingle_dispatch_foomethod_namer0r6s	        @rtest_double_wrapped_methodsz.TestSingleDispatch.test_double_wrapped_methodsE
s		 	 	 	 (#
6
6q
9	.S*-'	. 
3
3A
6	&#"%	&	
46IJ,c2!77:44Q7	

	
+AA!DcJL
	K[1	
  .<EE1;?HH
  .0+>GG13[AJJ
	
	

	
22 4444 66	
	CD4(
C  /FG  !5!5e!<cB
C
C
	C	
22;;!	
	
 44==!	
	
44==#	
	
 66??#	
g	.	.	&	&	
	
"
C
Cs1J$
J1!A?J>7AK$J.1J;>K	K	cd}d}tjd}|jt5}|j	dd}ddd|jt
jj|dz|jt
|jj||jt5}|jd}ddd|jt
|jj|dz|jt
|jj||jt5}|jd	tjtfd
}ddd|jt
|jjd|jt
|jjd|jt5}|jd	tjttjtffd
}ddd|jt
|jjd|jt
|jjdy#1swYxYw#1swYxYw#1swYPxYw#1swYxYw)Nz(Invalid first argument to `register()`: zS. Use either `@register(some_class)` or plain `@register` on an annotated function.cyrrrqs rrz8TestSingleDispatch.test_invalid_registrations.<locals>.i
rrrcy)NzI annotated with a non-typerrqs rrz8TestSingleDispatch.test_invalid_registrations.<locals>._
s4r42cy)NzI forgot to annotaterrqs rrz8TestSingleDispatch.test_invalid_registrations.<locals>._
s-rzB<function TestSingleDispatch.test_invalid_registrations.<locals>._rrcy)Nz%I annotated with a generic collectionrrqs rrz8TestSingleDispatch.test_invalid_registrations.<locals>._
s?rzInvalid annotation for 'arg'.z$typing.Iterable[str] is not a class.cy)Nz
Invalid Unionrrqs rrz8TestSingleDispatch.test_invalid_registrations.<locals>._
s&rzFtyping.Union[int, typing.Iterable[str]] not all arguments are classes.)r
rrYrZrrMrr=rendswithtypingrUnionr)r1
msg_prefix
msg_suffixrexcrs      rtest_invalid_registrationsz-TestSingleDispatch.test_invalid_registrations
s?

"	
	!	!	
"	


y
)	5S
ZZ^
5
5	5	
CMM*55j46GHICMM*33J?@


y
)	.S
ZZ
.
.	.	
CMM*55jP7Q
		
CMM*33J?@


y
)	?S
ZZ
?vs+
?
?	?	
CMM*55+
		
CMM*332
	

y
)	'S
ZZ
'v||C)=$=>
'
'	'	
CMM*55+
		
CMM*33T
	K	5	5	.	.	?	?	'	's0KK'+K AK-KK K*-K6ctjd}d}|jt|5|dddy#1swYyxYw)Ncyrrr#s rrz>TestSingleDispatch.test_invalid_positional_argument.<locals>.f
rerz)f requires at least 1 positional argument)r
rassertRaisesRegexrZ)r1rmsgs   r test_invalid_positional_argumentz3TestSingleDispatch.test_invalid_positional_argument
sI		!	!	
"	9

#
#Is
3	
C			sAA	ctjd}|jdtjt
tffd}|jdttzfd}|j|gd|j|dd|j|dd|j|d	d
|j|dd
y)NcyNdefaultrrqs rrz(TestSingleDispatch.test_union.<locals>.f
rrrrcyNtyping.Unionrrqs rrz(TestSingleDispatch.test_union.<locals>._
!rcyNtypes.UnionTyperrqs rrz(TestSingleDispatch.test_union.<locals>._
$rrcrrfrr9rjrH)
r
rrrUrVrbytesrfloatrOr1rrs   r
test_unionzTestSingleDispatch.test_union
s		!	!	
"	
	"6<<U
+	"
	"
	%3;	%
	%	
2	*2/301013!23rctjd}|jdtjt
tffd}|jdtt
zfd}|j|gd|j|dd|j|dd	|j|d
dy)Ncyrbrrqs rrz1TestSingleDispatch.test_union_conflict.<locals>.f
rrrrcyrerrqs rrz1TestSingleDispatch.test_union_conflict.<locals>._
rgrcyrirrqs rrz1TestSingleDispatch.test_union_conflict.<locals>._
rkrrcrrjrrfr9)	r
rrrUrVrrlrrOrns   rtest_union_conflictz&TestSingleDispatch.test_union_conflict
s		!	!	
"	
	"6<<U
+	"
	"
	%39	%
	%	
2	*2 1230101rctjd}|jdtjt
dffd}|j
|dd|j
|dd|j
|ddtjd}|jdtdzfd	}|j
|dd|j
|dd
|j
|dd
y)Ncyrbrrqs rtyping_unionz8TestSingleDispatch.test_union_None.<locals>.typing_unionrrrrcyrerrqs rrz-TestSingleDispatch.test_union_None.<locals>._rgrr9rcrrfcyrbrrqs rtypes_unionz7TestSingleDispatch.test_union_None.<locals>.types_unionrrcyrirrqs rrz-TestSingleDispatch.test_union_None.<locals>._rkrrj)r
rrrUrVrrOr)r1rwrrzs    rtest_union_Nonez"TestSingleDispatch.test_union_Nones		!	!	
"	
			"6<<T	*	"
	"	
a)4b)>:d+^<		!	!	
"	
			%3:	%
	%	
R)4Q):;T*,=>rctjd}|jtd5|j	t
tdddd|jtd5|j	tjtdddd|jtd5|j	t
ttzdddd|jtd5|j	tjttzdddd|j|dgd|j|d	gd|j|d
d|j|ddy#1swYFxYw#1swYxYw#1swYxYw#1swYxYw)Ncyrbrrqs rrz8TestSingleDispatch.test_register_genericalias.<locals>.f!rrInvalid first argument to cyNztypes.GenericAliasrrqs rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>&rrcyNztyping.GenericAliasrrqs rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>(rrcy)Nz$types.UnionTypes(types.GenericAlias)rrqs rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>*rrcyNz!typing.Union[typing.GenericAlias]rrqs rrKz?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>,rrr9rcrHrr)
r
rr]rZrr/rrUListrrmrlrOrs  rtest_register_genericaliasz-TestSingleDispatch.test_register_genericalias sy		!	!	
"	
#
#I/K
L	D
JJtCy"BC	D

#
#I/K
L	L
JJv{{3')JK	L

#
#I/K
L	\
JJtCy3(Z[	\

#
#I/K
L	d
JJv{{5)E13bc	d	
A3+C59-2	*3+	D	D	L	L	\	\	d	ds/F*)F1&F*50F6FF'*F36F?ctjd}|jtd5|j	t
tddd|jtd5|j	tjtddd|jtd5|j	t
ttzddd|jtd5|j	tjttzdddy#1swYxYw#1swYxYw#1swYnxYw#1swYyxYw)Ncyrbrrqs rrzBTestSingleDispatch.test_register_genericalias_decorator.<locals>.f4rrr)
r
rr]rZrr/rrUrrrs  r$test_register_genericalias_decoratorz7TestSingleDispatch.test_register_genericalias_decorator3s		!	!	
"	
#
#I/K
L	"
JJtCy!	"

#
#I/K
L	)
JJv{{3'(	)

#
#I/K
L	(
JJtCy3'	(

#
#I/K
L	/
JJv{{3'#-.	/	/
	"	"	)	)	(	(	/	/s/D&('D2-$D>/.E
&D/2D;>E
Ectjd}|jtd5|jdt
tfd}ddd|jtd5|jdtjtfd}ddd|jtd5|jdt
ttzfd}ddd|jtd5|jdtjttzfd}ddd|j|dgd	|j|d
gd	|j|dd	|j|dd	y#1swYLxYw#1swYxYw#1swYxYw#1swYxYw)
Ncyrbrrqs rrzCTestSingleDispatch.test_register_genericalias_annotation.<locals>.fBrrzInvalid annotation for 'arg'rrcyrrrqs rrzCTestSingleDispatch.test_register_genericalias_annotation.<locals>._Gs+rcyrrrqs rrzCTestSingleDispatch.test_register_genericalias_annotation.<locals>._Ks,rcy)Nz#types.UnionType(types.GenericAlias)rrqs rrzCTestSingleDispatch.test_register_genericalias_annotation.<locals>._Os<rcyrrrqs rrzCTestSingleDispatch.test_register_genericalias_annotation.<locals>._Ss:rr9rcrHrr)
r
rr]rZrr/rrUrrmrrlrOrns   r%test_register_genericalias_annotationz8TestSingleDispatch.test_register_genericalias_annotationAs		!	!	
"	
#
#I/M
N	,
ZZ
,tCy
,
,	,
#
#I/M
N	-
ZZ
-v{{5)
-
-	-
#
#I/M
N	=
ZZ
=tCy3
=
=	=
#
#I/M
N	;
ZZ
;v{{5)E1
;
;	;
	
A3+C59-2	*3+)	,	,	-	-	=	=	;	;s/!F,+F%5(F2;2F>F"%F/2F;>GN)&r(r)r*rrrrr
skipUnlessrrr$r
r&rJr]rnrrrrrrrr	rrr r1rLrZr_rortr|rrrrrrrrrs	-&.
;7X"56:7:"47l\(|;.+$},@d)L*6-4((/,/.+"((/,"BHa
F0d4&2$?2,&/,rrc:eZdZdZdZejdZy)CachedCostItemr9c6tj|_yr)rRLocklockr\s rrzCachedCostItem.__init__`s &&(	rc|j5|xjdz
c_ddd|jS#1swY|jSxYw)The cost of the item.r9N)r_costr\s rcostzCachedCostItem.costcs<YY	JJ!OJ	zz	zzs	7AN)r(r)r*rrrcached_propertyrrrrrr]s&
E)!!"rrc8eZdZdZdZej
eZy)OptionallyCachedCostItemr9cD|xjdz
c_|jS)rr9rr\s rget_costz!OptionallyCachedCostItem.get_costns

a
zzrN)r(r)r*rrrrcached_costrrrrrks
E
..x8Krrc:eZdZdZdZejdZy)CachedCostItemWithSlotsrcd|_yrrr\s rrz CachedCostItemWithSlots.__init__ys	
rctd)Nz!never called, slots not supportedrr\s rrzCachedCostItemWithSlots.cost|s>??rN)r(r)r*	__slots__rrrrrrrrrvs(I!!@"@rrcHeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)TestCachedPropertyct}|j|jd|j|jdyr)rrOrr1items  rtest_cachedzTestCachedProperty.test_cacheds2A&A&rct}|j|jd|j|jd|j|jd|j|jdy)Nr:r@rA)rrOrrrs  r1test_cached_attribute_name_differs_from_func_namezDTestCachedProperty.test_cached_attribute_name_differs_from_func_namesb')!,))1-!,))1-rct}|jtd5|jdddy#1swYyxYw)NzWNo '__dict__' attribute on 'CachedCostItemWithSlots' instance to cache 'cost' property.)rr]rZrrs  rtest_object_with_slotsz)TestCachedProperty.test_object_with_slotss<&(

#
#i
	
II				s	
7AcGddt}Gdd|}|jtd5|jdddy#1swYyxYw)Nc0eZdZejdZy)6TestCachedProperty.test_immutable_dict.<locals>.MyMetacy)NTrr\s rpropz;TestCachedProperty.test_immutable_dict.<locals>.MyMeta.propsrN)r(r)r*rrrrrrMyMetars

)
)
*
rrceZdZy)7TestCachedProperty.test_immutable_dict.<locals>.MyClassNr'rrrMyClassrrrrrzkThe '__dict__' attribute on 'MyMeta' instance does not support item assignment for caching 'prop' property.)rr]rZr)r1rrs   rtest_immutable_dictz&TestCachedProperty.test_immutable_dictsN	T	
		
#
#y
	
LL				s
AAc|jt5}Gdd}ddd|jtjttdy#1swYAxYw)zDDisallow this case because decorated function a would not be cached.c4eZdZejdZeZy)KTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedPropertycyrrr\s rr>zMTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedProperty.asrN)r(r)r*rrr>r?rrrReusedCachedPropertyrs!--.rrNzLCannot assign the same cached_property to two different names ('a' and 'b').)rYrZrOrr=)r1ctxrs   rtest_reuse_different_namesz-TestCachedProperty.test_reuse_different_namess[


y
)	S

		


	hij	
		sA!!A*c0dtjfdGfdd}Gfdd}|}|}|j|jd|j|jd|j|jdy	)
zIReusing a cached_property on different classes under the same name is OK.rcdz
Srr)_selfcounters r_cpz4TestCachedProperty.test_reuse_same_name.<locals>._cps
qLGNrceZdZWZy)2TestCachedProperty.test_reuse_same_name.<locals>.ANr(r)r*cprsrr!rBrr!ceZdZWZy)2TestCachedProperty.test_reuse_same_name.<locals>.BNrrsrr<rrrr<r9r:N)rrrOr)r1r!r<r>r?rrs     @@rtest_reuse_same_namez'TestCachedProperty.test_reuse_same_names		%	%	
&	
				
C
Cq!q!q!rctjd}Gdd}||_|jtd5|jdddy#1swYyxYw)Ncyrr)rs rrKz=TestCachedProperty.test_set_name_not_called.<locals>.<lambda>rrceZdZy)8TestCachedProperty.test_set_name_not_called.<locals>.FooNr'rrrFoorrrrzGCannot use cached_property instance without calling __set_name__ on it.)rrrr]rZ)r1rrs   rtest_set_name_not_calledz+TestCachedProperty.test_set_name_not_calledsY

)
).
9		

#
#Y
	
EHH				sAA"c`|jtjtjyr)assertIsInstancerrrrr\s rtest_access_from_classz)TestCachedProperty.test_access_from_classsn11<3O3OPrcX|jtjjdy)Nr)rOrrrwr\s rtest_doczTestCachedProperty.test_docs,,446MNrcGddtjGfdd}|d}|j|jdd|_|j|jdy)z4Caching still works for a subclass defining __set__.ceZdZdZy)OTestCachedProperty.test_subclass_with___set__.<locals>.readonly_cached_propertyctd)Nzread only property)r)r1r+rs   r__set__zWTestCachedProperty.test_subclass_with___set__.<locals>.readonly_cached_property.__set__s$%9::rN)r(r)r*rrrrreadonly_cached_propertyrs
;rrc&eZdZdZWdZy);TestCachedProperty.test_subclass_with___set__.<locals>.Testc||_yr_prop)r1rs  rrzDTestCachedProperty.test_subclass_with___set__.<locals>.Test.__init__s	!
rc|jSrrr\s rrz@TestCachedProperty.test_subclass_with___set__.<locals>.Test.propszz!rN)r(r)r*rr)rsrrrs
"&
"&
"rrr9rN)rrrOrr)r1rrIrs   @rtest_subclass_with___set__z-TestCachedProperty.test_subclass_with___set__sY	;|'C'C	;	"	"
G##rN)
r(r)r*rrrrrrrrrrrrrrrs6'
.


".QO$rr__main__)OrIrrcollections.abcr	itertoolsrrrandomrrrrrprrUr
unittest.mockrrrr?inspectrtest.supportrr	r
import_fresh_modulerrrrLrrr@rrr$rr&r-rPr5r7rTestCaserrrrr
rrrUrrrrrr r&r(r8rrrrrrrrrrrrrr(mainrrr<module>rs
"


	&)0}00:FI/m//7CnF,-
+
+Ij\
J&&'+--.,,
@	e	(u(	T	CDCDJ
["DE+$; 1 1+$F+$\#K!2!2#

;..
	,,	["DE$<$F$ M ())(Dq6))q6h;9!;9|LALA^["DE$*h//$F$
/:x00/T$T$n["DE	
L("3"3	
F	
7\8#4#47g ))g T	)))PP&|N|N~**["DEw))Fh,**h,V99@@n$**n$bzHMMOr