3 \rz+@sdddddddddd d g Zyd d lmZWnek r>YnXd d lmZd dlmZd dlm Z d dl m Z d dl m Z yd dlmZWn"ek rGdddZYnXdYZdZZeefddZeefddZefddZefdd Zefd!d"Zefd#d$Zefd%d&Zefd'd(Zefd)d*Zefd+d,Zefd-d.Zefd/d0Zefd1d2Zefd3d4Z d5efd6efd7efgd7efd8efd5efgd8efd7efd6efgd6efd5efd8e fgd9Z!d:dZ"d;dZ#yd dlm$Z$Wnek r&YnXGd?d d e%Z&ed@dAdBdCdDgZ'GdEdFdFe(Z)e%fe*e+e,e-dGhe.e-e/fdHdIZ0d[dLdZ1dMdNZ2yd dOlm2Z2Wnek rYnXdPdQZ3d\dRdSZ4dTdUZ5dVdWZ6dXd Z7dGS)]update_wrapperwrapsWRAPPER_ASSIGNMENTSWRAPPER_UPDATEStotal_ordering cmp_to_key lru_cachereducepartial partialmethodsingledispatch)r)get_cache_token) namedtuple)MappingProxyType)WeakKeyDictionary)recursive_repr)RLockc@seZdZddZddZdS)rcCsdS)N)selfrr!/usr/lib64/python3.6/functools.py __enter__szRLock.__enter__cCsdS)Nr)rexctypeexcinstexctbrrr__exit__szRLock.__exit__N)__name__ __module__ __qualname__rrrrrrrsrrrr__doc____annotations____dict__c Csnx<|D]4}yt||}Wntk r,YqXt|||qWx$|D]}t||jt||iqDW||_|S)N)getattrAttributeErrorsetattrupdate __wrapped__)wrapperwrappedassignedupdatedattrvaluerrrr,s  cCstt|||dS)N)r'r(r))r r)r'r(r)rrrrJs cCs$|j|}||kr|S| o"||kS)N)__lt__)rotherNotImplemented op_resultrrr _gt_from_ltbs r0cCs|j|}|p||kS)N)r,)rr-r.r/rrr _le_from_ltis r1cCs|j|}||kr|S| S)N)r,)rr-r.r/rrr _ge_from_ltns r2cCs$|j|}||kr|S| p"||kS)N)__le__)rr-r.r/rrr _ge_from_leus r4cCs"|j|}||kr|S|o ||kS)N)r3)rr-r.r/rrr _lt_from_le|s r5cCs|j|}||kr|S| S)N)r3)rr-r.r/rrr _gt_from_les r6cCs$|j|}||kr|S| o"||kS)N)__gt__)rr-r.r/rrr _lt_from_gts r8cCs|j|}|p||kS)N)r7)rr-r.r/rrr _ge_from_gts r9cCs|j|}||kr|S| S)N)r7)rr-r.r/rrr _le_from_gts r:cCs$|j|}||kr|S| p"||kS)N)__ge__)rr-r.r/rrr _le_from_ges r<cCs"|j|}||kr|S|o ||kS)N)r;)rr-r.r/rrr _gt_from_ges r=cCs|j|}||kr|S| S)N)r;)rr-r.r/rrr _lt_from_ges r>r7r3r;r,)r,r3r7r;csZfddtD}|stdt|}x.t|D]"\}}||kr0||_t||q0WS)Ncs(g|] }t|dtt|dk r|qS)N)r!object).0op)clsrr sz"total_ordering..z6must define at least one ordering operation: < > <= >=)_convert ValueErrormaxrr#)rBrootsrootopnameopfuncr)rBrrscsGfdddt}|S)NcsZeZdZdgZddZfddZfddZfdd Zfd d Zfd d Z dZ dS)zcmp_to_key..KobjcSs ||_dS)N)rK)rrKrrr__init__szcmp_to_key..K.__init__cs|j|jdkS)Nr )rK)rr-)mycmprrr,szcmp_to_key..K.__lt__cs|j|jdkS)Nr )rK)rr-)rMrrr7szcmp_to_key..K.__gt__cs|j|jdkS)Nr )rK)rr-)rMrr__eq__szcmp_to_key..K.__eq__cs|j|jdkS)Nr )rK)rr-)rMrrr3szcmp_to_key..K.__le__cs|j|jdkS)Nr )rK)rr-)rMrrr;szcmp_to_key..K.__ge__N) rrr __slots__rLr,r7rNr3r;__hash__r)rMrrKs     rQ)r?)rMrQr)rMrrs)rcsFeZdZdZfddZdd Zed d Zd d ZddZ Z S)r funcargskeywordsr __weakref__cs|s tdt|dkr td|^}}}t|s:tdt|}t|drv|j|}|jj}|j||}~|j }t t |j |}||_ ||_||_|S)Nz1descriptor '__new__' of partial needs an argumentz*type 'partial' takes at least one argumentz#the first argument must be callablerR) TypeErrorlencallabletuplehasattrrSrTcopyr$rRsuperr __new__)rSrTrBrRZtmpkwr) __class__rrr^s(      zpartial.__new__cOs:|s td|^}}|jj}|j||j|j||S)Nz2descriptor '__call__' of partial needs an argument)rWrTr\r$rRrS)rSrTrZ newkeywordsrrr__call__s   zpartial.__call__cCst|j}t|jg}|jdd|jD|jdd|jjDt|jdkrld|ddj |dS|ddj |dS) Ncss|]}t|VqdS)N)repr)r@xrrr sz#partial.__repr__..css |]\}}|d|VqdS)=Nr)r@kvrrrrcs functoolsz functools.(z, )) typerrarRextendrSrTitemsrjoin)rqualnamerSrrr__repr__s  zpartial.__repr__cCs*t||jf|j|j|jpd|jp$dffS)N)rjrRrSrTr )rrrr __reduce__#szpartial.__reduce__cCst|tstdt|dkr0tdt||\}}}}t| szt|t sz|dk rft|t sz|dk rt|t rtdt|}|dkri}nt|tk rt|}|dkri}||_||_||_ ||_ dS)Nz(argument to __setstate__ must be a tuplezexpected 4 items in state, got zinvalid partial state) isinstancerZrWrXrYdictrjr rRrSrT)rstaterRrSkwds namespacerrr __setstate__'s(    zpartial.__setstate__)rRrSrTr rU) rrrrOr^r`rrorprw __classcell__rr)r_rr s   )r c@s8eZdZddZddZddZddZed d Zd S) r cOsrt| r$t|d r$tdj|t|tr\|j|_|j||_|jj |_|jj |n||_||_||_dS)N__get__z${!r} is not callable or a descriptor) rYr[rWformatrrr rRrSrTr\r$)rrRrSrTrrrrLMs   zpartialmethod.__init__cCsNdjtt|j}djdd|jjD}d}|j|jj|jj |j ||dS)Nz, css|]\}}dj||VqdS)z{}={!r}N)rz)r@rerfrrrrccsz)partialmethod.__repr__..z*{module}.{cls}({func}, {args}, {keywords}))modulerBrRrSrT) rmmaprarSrTrlrzr_rrrR)rrSrT format_stringrrrroas  zpartialmethod.__repr__csfdd}j|_|_|S)Ncs<jj}|j||^}}|fjt|}j||S)N)rTr\r$rSrZrR)rSrT call_keywords cls_or_selfrest call_args)rrr_methodms   z3partialmethod._make_unbound_method.._method)__isabstractmethod___partialmethod)rrr)rr_make_unbound_methodls z"partialmethod._make_unbound_methodc Cst|jdd}d}|dk rd|||}||jk rdt|f|j|j}y |j|_Wntk rbYnX|dkr||jj||}|S)Nry) r!rRr rSrT__self__r"rry)rrKrBgetresultnew_funcrrrryws   zpartialmethod.__get__cCst|jddS)NrF)r!rR)rrrrrsz"partialmethod.__isabstractmethod__N) rrrrLrorrypropertyrrrrrr Es    CacheInfohitsmissesmaxsizecurrsizec@s$eZdZdZefddZddZdS) _HashedSeq hashvaluecCs||dd<|||_dS)N)r)rtuphashrrrrLs z_HashedSeq.__init__cCs|jS)N)r)rrrrrPsz_HashedSeq.__hash__N)rrrrOrrLrPrrrrrs rNc s|}|r*||7}x|jD] } || 7}qW|rl||fdd|D7}|r||fdd|jD7}n$||dkr|d|kr|dSt|S)Nc3s|]}|VqdS)Nr)r@rf)rjrrrcsz_make_key..c3s|]}|VqdS)Nr)r@rf)rjrrrcsr )rlvaluesr) rSrutypedkwd_mark fasttypesrZrjrXkeyitemr)rjr _make_keys  rFcs.dk rtt rtdfdd}|S)Nz)Expected maxsize to be an integer or Nonecst|t}t||S)N)_lru_cache_wrapper _CacheInfor) user_functionr&)rrrrdecorating_functionsz&lru_cache..decorating_function)rrintrW)rrrr)rrrrscstt d\id djjt gddgdd< dkrh fdd}nN dkr fdd}n* fd d} fd d } fd d }||_||_|S)Nr rrVFcs||}d7|S)Nrr)rSrur)rrrrr&s z#_lru_cache_wrapper..wrappercsH||}|}|k r*d7|S||}||<d7|S)Nrr)rSrurr)cache cache_getrmake_keyrsentinelrrrrr&s   c s2 ||} f|}|dk rr|\}}}}||<||< }||< <||< |<d7|SWdQRX||} |krnr } || <|| <|  } } d < <| =| |<n6 }| ||g}||< <|< k d7 WdQRX|S)Nrr) rSrurlinkZ link_prevZ link_nextZ_keyrZlastZoldrootZoldkeyZ oldresult)KEYNEXTPREVRESULTrr cache_lenfullrlockrrrrHrrrrr&sB      c s SQRXdS)Nrr)rrrrrrrr cache_infoGsz&_lru_cache_wrapper..cache_infoc s<.jddgdd<ddWdQRXdS)Nr F)clearr)rrrrrrHrr cache_clearLs z'_lru_cache_wrapper..cache_clear)r rrVr)r?rr__len__rrr)rrrrr&rrr)rrrrrrrrrrrrrrrHrrrrrs* *9 r)rcCsg}xdd|D}|s|Sx:|D]2}|d}x$|D]}||ddkr4d}Pq4WPq"W|dkrhtd|j|x|D]}|d|krx|d=qxWqWdS)NcSsg|] }|r|qSrr)r@srrrrCksz_c3_merge..r rzInconsistent hierarchy) RuntimeErrorappend) sequencesrs1 candidates2seqrrr _c3_mergecs$     rc s&x8tt|jD]"\}tdrt|j|}PqWd}rFtngt|jd|}g}t|j|d}x:D]2t|rxtfdd|jD rx|jqxWx|D]j qWfdd|D}fdd|D}fdd|D} t |gg||| |g|g|gS) N__abstractmethods__r c3s|]}t|VqdS)N) issubclass)r@b)baserrrcsz_c3_mro..csg|]}t|dqS))abcs)_c3_mro)r@r)rrrrCsz_c3_mro..csg|]}t|dqS))r)r)r@r)rrrrCscsg|]}t|dqS))r)r)r@r)rrrrCs) enumeratereversed __bases__r[rXlistranyrremover) rBriboundaryexplicit_basesabstract_bases other_basesexplicit_c3_mrosabstract_c3_mros other_c3_mrosr)rrrr~s(    rcstjfddfddDfddfddDtg}xD]}g}x<|jD]0}|krlt|rl|jfdd|jDqlW|s|j|qZ|jtd d x,|D]$}x|D]}||kr|j|qWqWqZWt|d S) Ncs|kot|dot|S)N__mro__)r[r)typ)basesrBrr is_relatedsz _compose_mro..is_relatedcsg|]}|r|qSrr)r@n)rrrrCsz _compose_mro..cs(x"D]}||kr||jkrdSqWdS)NTF)r)rr-)typesrris_strict_bases z$_compose_mro..is_strict_basecsg|]}|s|qSrr)r@r)rrrrCscsg|]}|kr|qSrr)r@r)type_setrrrCsT)rreverse)r)setr__subclasses__rrsortrXr)rBrmrorfoundsubsubclsr)rrBrrrrr _compose_mros*      rcCsxt||j}d}xZ|D]R}|dk r^||kr\||jkr\||jkr\t|| r\tdj||P||kr|}qW|j|S)NzAmbiguous dispatch: {} or {})rkeysrrrrzr)rBregistryrmatchtrrr _find_impls     rcsitdfddd fdd fdd}t|dd|t<|_|_t|_j|_t |||S) Ncs|dk r"t}|kr"j|y |}WnHtk rvy |}Wntk rht|}YnX||<YnX|S)N)r rKeyErrorr)rB current_tokenimpl) cache_tokendispatch_cacherrrdispatchs  z singledispatch..dispatchcsB|dkrfddS|<dkr6tdr6tj|S)Ncs |S)Nr)f)rBregisterrrsz2singledispatch..register..r)r[r r)rBrR)rrrr)rBrrsz singledispatch..registercs&|std|dj||S)Nz( requires at least 1 positional argumentr )rWr_)rSkw)rfuncnamerrr&"szsingledispatch..wrapperrzsingledispatch function)N) rr!r?rrrrr _clear_cacher)rRr&r)rrrrrrrr s    )rrrrr)r )rF)N)8__all__ _functoolsr ImportErrorabcr collectionsrrrweakrefrreprlibr_threadrrrrrr.r0r1r2r4r5r6r8r9r:r<r=r>rDrrr r?r rrrrstr frozensetrjrZrXrrrrrrrr rrrr s                     NN %t -)