a Z^s@sgdZddlmZddlmZddlmZddlmZddl m Z dZ dZ e e fd d Z e e fd d Zefd dZefddZefddZefddZefddZefddZefddZefddZefddZefdd Zefd!d"Zefd#d$Zd%efd&efd'efgd'efd(efd%efgd(efd'efd&efgd&efd%efd(efgd)Zd*d+Zd,d-Zzdd.lmZWne yYn0e!Z"e"fd/d0Z#zdd1lm#Z#Wne yYn0Gd2d3d3Z$zdd4lm$Z$Wne yYn0Gd5d6d6e!Z%d7d8Z&ed9gd:Z'Gd;d<dZ/dWdAdBZ0dCdDZ1zddElm1Z1Wne yxYn0dFdGZ2dHdIZ3dXdKdLZ4dMdNZ5dOdPZ6dQdRZ7GdSdTdTZ8e!Z9GdUdVdVZ:dJS)Y)update_wrapperwrapsWRAPPER_ASSIGNMENTSWRAPPER_UPDATEStotal_orderingcache cmp_to_key lru_cachereducepartial partialmethodsingledispatchsingledispatchmethodcached_property)get_cache_token) namedtuple)recursive_repr)RLock) GenericAlias) __module____name__ __qualname____doc____annotations__)__dict__c Csd|D]2}zt||}Wnty(Yq0t|||q|D]}t||t||iq<||_|SN)getattrAttributeErrorsetattrupdate __wrapped__)wrapperwrappedassignedupdatedattrvaluer'!/usr/lib64/python3.9/functools.pyr#s rcCstt|||dS)Nr"r#r$)r rr)r'r'r(rAs rcCs$||}||ur|S| o"||kSr__lt__selfotherNotImplemented op_resultr'r'r( _gt_from_ltYs r1cCs"||}||ur|S|p ||kSrr*r,r'r'r( _le_from_lt`s r2cCs||}||ur|S| Srr*r,r'r'r( _ge_from_ltgs r3cCs$||}||ur|S| p"||kSr__le__r,r'r'r( _ge_from_lens r6cCs"||}||ur|S|o ||kSrr4r,r'r'r( _lt_from_leus r7cCs||}||ur|S| Srr4r,r'r'r( _gt_from_le|s r8cCs$||}||ur|S| o"||kSr__gt__r,r'r'r( _lt_from_gts r;cCs"||}||ur|S|p ||kSrr9r,r'r'r( _ge_from_gts r<cCs||}||ur|S| Srr9r,r'r'r( _le_from_gts r=cCs$||}||ur|S| p"||kSr__ge__r,r'r'r( _le_from_ges r@cCs"||}||ur|S|o ||kSrr>r,r'r'r( _gt_from_ges rAcCs||}||ur|S| Srr>r,r'r'r( _lt_from_ges rBr:r5r?r+)r+r5r:r?csVfddtD}|stdt|}t|D]"\}}||vr.||_t||q.S)Ncs(h|] }t|dtt|dur|qSr)robject).0opclsr'r( z!total_ordering..z6must define at least one ordering operation: < > <= >=)_convert ValueErrormaxrr)rGrootsrootopnameopfuncr'rFr(rsrcsGfdddt}|S)NcsZeZdZdgZddZfddZfddZfdd Zfd d Zfd d Z dZ dS)zcmp_to_key..KobjcSs ||_dSrrQ)r-rQr'r'r(__init__szcmp_to_key..K.__init__cs|j|jdkSNrrRr-r.mycmpr'r(r+szcmp_to_key..K.__lt__cs|j|jdkSrTrRrUrVr'r(r:szcmp_to_key..K.__gt__cs|j|jdkSrTrRrUrVr'r(__eq__szcmp_to_key..K.__eq__cs|j|jdkSrTrRrUrVr'r(r5szcmp_to_key..K.__le__cs|j|jdkSrTrRrUrVr'r(r?szcmp_to_key..K.__ge__N) rrr __slots__rSr+r:rXr5r?__hash__r'rVr'r(Ks     r[)rC)rWr[r'rVr(rsr)rcCsXt|}|tur2rIz#partial.__repr__..css |]\}}|d|VqdS)=Nr'rDkvr'r'r(rs3rI functoolsz functools.(, )) typerrqreextendrfrgitemsrjoin)r-qualnamerfr'r'r(__repr__.s  zpartial.__repr__cCs*t||jf|j|j|jpd|jp$dffSr)r|rerfrgrr-r'r'r( __reduce__8szpartial.__reduce__cCst|tstdt|dkr0tdt||\}}}}t|rrt|trr|dur`t|trr|durzt|tsztdt|}|duri}nt|turt|}|duri}||_||_||_ ||_ dS)Nz(argument to __setstate__ must be a tuplezexpected 4 items in state, got zinvalid partial state) isinstancetupler`lenridictr|rrerfrg)r-statererfkwds namespacer'r'r( __setstate__<s4    zpartial.__setstate__) rrrrYrlrprrrr __classcell__r'r'rmr(r s  r )r c@sBeZdZddZddZddZd dd Zed d Ze e Z dS) r cOsft|s t|ds td|t|trP|j|_|j||_i|j||_n||_||_||_dS)N__get__z${!r} is not callable or a descriptor) rirjr`formatrr rerfrg)r-rerfrgr'r'r(rSbs  zpartialmethod.__init__cCsNdtt|j}ddd|jD}d}|j|jj|jj |j ||dS)Nrzcss|]\}}d||VqdS)z{}={!r}N)rrur'r'r(rswsz)partialmethod.__repr__..z*{module}.{cls}({func}, {args}, {keywords}))modulerGrerfrg) rmaprqrfrgr~rrnrrre)r-rfrg format_stringr'r'r(rus  zpartialmethod.__repr__csfdd}j|_|_|S)Ncs,ij|}j|gj|Ri|Srro) cls_or_selfrfrgrr'r(_methodsz3partialmethod._make_unbound_method.._method)__isabstractmethod___partialmethod)r-rr'rr(_make_unbound_methods z"partialmethod._make_unbound_methodNcCst|jdd}d}|durh|||}||jurht|g|jRi|j}z |j|_WntyfYn0|dur|||}|S)Nr) rrer rfrg__self__rrr)r-rQrGgetresultnew_funcr'r'r(rs    zpartialmethod.__get__cCst|jddSNrFrrerr'r'r(rsz"partialmethod.__isabstractmethod__)N) rrrrSrrrpropertyr classmethodr__class_getitem__r'r'r'r(r Zs   r cCst|tr|j}q|Sr)rr rerer'r'r(_unwrap_partials r CacheInfo)hitsmissesmaxsizecurrsizec@s$eZdZdZefddZddZdS) _HashedSeq hashvaluecCs||dd<|||_dSrr)r-tuphashr'r'r(rSs z_HashedSeq.__init__cCs|jSrrrr'r'r(rZsz_HashedSeq.__hash__N)rrrrYrrSrZr'r'r'r(rs rc s|}|r&||7}|D] } || 7}q|rh||fdd|D7}|r||fdd|D7}n$||dkr|d|vr|dSt|S)Nc3s|]}|VqdSrr'rDrwr|r'r(rsrIz_make_key..c3s|]}|VqdSrr'rrr'r(rsrIr)r~valuesr) rfrtypedkwd_mark fasttypesrr|rkeyitemr'rr( _make_keys   rFcs~ttrdkrldnTtr\ttr\d}t|t}fdd|_t||Sdurltdfdd}|S)Nrrcs dSNrrr'r'rr'r(rIzlru_cache..z=Expected first argument to be an integer, a callable, or Nonecs(t|t}fdd|_t||S)Ncs dSrr'r'rr'r(rrIz8lru_cache..decorating_function..)_lru_cache_wrapper _CacheInfocache_parametersr) user_functionr!rr'r(decorating_functionsz&lru_cache..decorating_function) rintriboolrrrrr`)rrrr!rr'rr(rs   rcstt d\id djjt gddgdd< dkrh fdd}nN dur fdd}n* fdd} fdd } fd d }||_||_|S) N)rrrFcsd7|i|}|SNrr')rfrr)rrr'r(r!sz#_lru_cache_wrapper..wrappercsL||}|}|ur*d7|Sd7|i|}||<|Srr')rfrrr)r cache_getrmake_keyrsentinelrrr'r(r!&s  c sp ||} |}|dur|\}}}}||<||< }||< <||< |<d7|WdS d7 Wdn1s0Y|i|} |vrnr } || <|| <|  } } d < <| =| |<n6 }| ||g}||< <|< kWdn1sb0Y|Srr') rfrrlinkZ link_prevZ link_next_keyrZlastZoldrootZoldkeyZ oldresult)KEYNEXTPREVRESULTrr cache_lenfullrlockrrrrNrrr'r(r!5sB  &  *cs8 WdS1s*0YdSrr'r')rrrrrrr'r( cache_infonsz&_lru_cache_wrapper..cache_infocsP8ddgdd<ddWdn1sB0YdS)NrF)clearr')rrrrrrNr'r( cache_clearss z'_lru_cache_wrapper..cache_clear)rCrr__len__rrr)rrrrr!rrr')rrrrrrrrrrrrrrrNrrrr(r s* *9 r)rcCstdd|S)N)r)r)rr'r'r(rsrcCsg}dd|D}|s|S|D]2}|d}|D]}||ddvr.d}qq.qRq|durbtd|||D]}|d|krp|d=qpqdS)NcSsg|] }|r|qSr'r'rDsr'r'r( rIz_c3_merge..rrzInconsistent hierarchy) RuntimeErrorappend) sequencesrs1 candidates2seqr'r'r( _c3_merges"  rNc stt|jD]$\}tdrt|j|}q8qd}rDtngt|jd|}g}t|j|d}D]0t|rttfdd|jDst|qt|D] qfdd|D}fdd|D}fdd|D} t |gg||| |g|g|gS) N__abstractmethods__rc3s|]}t|VqdSr) issubclass)rDb)baser'r(rssz_c3_mro..csg|]}t|dqSabcs_c3_mrorDrrr'r(rrIz_c3_mro..csg|]}t|dqSrrrrr'r(rrIcsg|]}t|dqSrrrrr'r(rrI) enumeratereversed __bases__rjrlistranyrremover) rGriboundaryexplicit_basesabstract_bases other_basesexplicit_c3_mrosabstract_c3_mros other_c3_mrosr')rrr(rsD   rcstjfddfddDfddfddDtg}D]}g}|D]0}|vrht|rh|fdd|jDqh|s||qX|jtd d |D] }|D]}||vr||qqqXt|d S) Ncs|vot|dot|S)N__mro__)rjr)typ)basesrGr'r( is_relatedsz _compose_mro..is_relatedcsg|]}|r|qSr'r'rDn)rr'r(rrIz _compose_mro..cs&D]}||kr||jvrdSqdS)NTF)r)rr.)typesr'r(is_strict_basesz$_compose_mro..is_strict_basecsg|]}|s|qSr'r'r)rr'r(rrIcsg|]}|vr|qSr'r'r)type_setr'r(rrIT)rreverser)setr__subclasses__rrsortrr)rGrmrorfoundsubsubclsr')rrGrrrrr( _compose_mros*    r cCstt||}d}|D]R}|dur\||vrX||jvrX||jvrXt||sXtd||qj||vr|}q||S)NzAmbiguous dispatch: {} or {})r keysrrrrr)rGregistryrmatchtr'r'r( _find_impls rcsddl}ddl}i|dfddd fdd fdd}t|dd |t<|_|_||_j |_ t |||S) Nrc sxdur"t}|kr"|z |}WnDtyrz |}Wntydt|}Yn0||<Yn0|Sr)rrKeyErrorr)rG current_tokenimpl) cache_tokendispatch_cacher r'r(dispatch0s    z singledispatch..dispatchcs|durttr fddStdi}|s@tdd}ddlm}tt||\}ttstd|d d |<durt d rt  |S) Ncs |Srr')f)rGregisterr'r(rPrIz2singledispatch..register..rz(Invalid first argument to `register()`: zS. Use either `@register(some_class)` or plain `@register` on an annotated function.r)get_type_hintszInvalid annotation for z. z is not a class.r) rr|rr`typingrr^r\r~rjrr)rGreannrargname)rrrr rFr(rGs4    z singledispatch..registercs*|std|dj|i|S)Nz( requires at least 1 positional argumentr)r`rn)rfkw)rfuncnamer'r(r!hs  zsingledispatch..wrapperrzsingledispatch function)N) rweakrefWeakKeyDictionaryrrCrrMappingProxyTyper r _clear_cacher)rerrr!r')rrrrrr r(r s !   r c@s4eZdZddZd ddZd ddZedd ZdS) r cCs4t|s t|ds t|dt||_||_dS)Nrz is not callable or a descriptor)rirjr`r dispatcherrer-rer'r'r(rSs zsingledispatchmethod.__init__NcCs|jj||dS)Nr)r!r)r-rGmethodr'r'r(rszsingledispatchmethod.registercs0fdd}j|_j|_t|j|S)Ncs(j|dj}||i|SrT)r!rrnr)rfkwargsr#rGrQr-r'r(rsz-singledispatchmethod.__get__.._method)rrrre)r-rQrGrr'r%r(rs  zsingledispatchmethod.__get__cCst|jddSrrrr'r'r(rsz)singledispatchmethod.__isabstractmethod__)N)N)rrrrSrrrrr'r'r'r(r zs   r c@s.eZdZddZddZdddZeeZdS) rcCs ||_d|_|j|_t|_dSr)reattrnamerrrr"r'r'r(rSszcached_property.__init__cCs8|jdur||_n"||jkr4td|jd|ddS)Nz?Cannot assign the same cached_property to two different names (z and z).)r&r`)r-ownernamer'r'r( __set_name__s  zcached_property.__set_name__Nc Cs|dur |S|jdurtdz |j}Wn6ty^dt|jd|jd}t|dYn0||jt}|tur|jv||jt}|tur| |}z|||j<Wn6tydt|jd|jd}t|dYn0Wdn1s0Y|S)NzGCannot use cached_property instance without calling __set_name__ on it.zNo '__dict__' attribute on z instance to cache z property.zThe '__dict__' attribute on z7 instance does not support item assignment for caching ) r&r`rrr|rr _NOT_FOUNDrre)r-instancer'rmsgvalr'r'r(rsB      .zcached_property.__get__)N) rrrrSr)rrrrr'r'r'r(rs r)rF)N);__all__abcr collectionsrreprlibr_threadrrrrrrrr/r1r2r3r6r7r8r;r<r=r@rArBrJrr _functools ImportErrorrCr]r r r rrrrrstrrr|rrrrrrrr rr r r*rr'r'r'r( s                    AJ   .t  -)\(