U e5dS @sddlmZmZmZmZmZmZmZmZddl m Z m Z ddl Z ddl Z ddlZeefZdddddd d d d d dddg ZGdddeZGdd d e jZGdddeZGddde jZGdddZdS))getweakrefcount getweakrefsrefproxyCallableProxyType ProxyType ReferenceType_remove_dead_weakref)WeakSet_IterationGuardNrrrrWeakKeyDictionaryrrr ProxyTypesWeakValueDictionaryr WeakMethodfinalizecs@eZdZdZd ddZfddZddZd d Zej Z Z S) r) _func_ref _meth_type_alive __weakref__Ncs~z|j}|j}Wn(tk r8tdt|dYnXfdd}t|||}t|||_t||_ d|_ t||S)Nz)argument should be a bound method, not {}cs&}|jr"d|_dk r"|dSNF)r)argselfcallbackZself_wr/usr/lib64/python3.8/weakref.py_cb3s zWeakMethod.__new__.._cbT) __self____func__AttributeError TypeErrorformattyper__new__rrr)clsZmethrobjfuncrrrrrr#,s    zWeakMethod.__new__cs2t}|}|dks"|dkr&dS|||SN)super__call__rr)rr%r& __class__rrr)Bs  zWeakMethod.__call__cCs:t|tr6|jr|js||kSt||o4|j|jkSdSr) isinstancerrr__eq__rrotherrrrr-Is   zWeakMethod.__eq__cCs:t|tr6|jr|js||k St||p4|j|jkSdSNT)r,rrr__ne__rr.rrrr1Ps   zWeakMethod.__ne__)N) __name__ __module__ __qualname__ __slots__r#r)r-r1r__hash__ __classcell__rrr*rr$s   c@seZdZd+ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ e Z ddZ d,ddZddZddZeZddZdd Zd!d"Zd#d$Zd-d%d&Zd.d'd(Zd)d*ZdS)/rrcKs>t|tfdd}||_g|_t|_i|_|j|f|dS)NcSs6|}|dk r2|jr$|j|jn||j|jdSr') _iterating_pending_removalsappendkeydata)wrselfrefZ_atomic_removalrrrrremovegs z,WeakValueDictionary.__init__..remove)rr _remover9setr8r<update)rr/kwr?rrr__init__fs  zWeakValueDictionary.__init__cCs(|j}|j}|r$|}t||q dSr')r9r<popr )rldr;rrr_commit_removalsws z$WeakValueDictionary._commit_removalscCs4|jr||j|}|dkr,t|n|SdSr'r9rHr<KeyErrorrr;orrr __getitem__s   zWeakValueDictionary.__getitem__cCs|jr||j|=dSr')r9rHr<rr;rrr __delitem__szWeakValueDictionary.__delitem__cCs|jr|t|jSr')r9rHlenr<rrrr__len__szWeakValueDictionary.__len__cCs>|jr|z|j|}Wntk r4YdSX|dk SrrIrKrrr __contains__sz WeakValueDictionary.__contains__cCsd|jjt|fSNz <%s at %#x>r+r2idrQrrr__repr__szWeakValueDictionary.__repr__cCs&|jr|t||j||j|<dSr')r9rHKeyedRefr@r<rr;valuerrr __setitem__szWeakValueDictionary.__setitem__c CsV|jr|t}t|0|jD]\}}|}|dk r(|||<q(W5QRX|Sr')r9rHrr r<items)rnewr;r=rLrrrcopys zWeakValueDictionary.copyc Csjddlm}|jr||}t|6|jD]$\}}|}|dk r6|||||<q6W5QRX|SNr)deepcopy)r^r`r9rHr+r r<r\)rmemor`r]r;r=rLrrr __deepcopy__s  z WeakValueDictionary.__deepcopy__NcCsP|jr|z|j|}Wntk r4|YSX|}|dkrH|S|SdSr'rI)rr;defaultr=rLrrrgets zWeakValueDictionary.getc csR|jr|t|2|jD] \}}|}|dk r"||fVq"W5QRXdSr'r9rHr r<r\)rkr=vrrrr\s zWeakValueDictionary.itemsc csJ|jr|t|*|jD]\}}|dk r"|Vq"W5QRXdSr're)rrfr=rrrkeyss   zWeakValueDictionary.keysc cs6|jr|t||jEdHW5QRXdSr'r9rHr r<valuesrQrrr itervaluerefss  z!WeakValueDictionary.itervaluerefsc csJ|jr|t|*|jD]}|}|dk r"|Vq"W5QRXdSr'rirr=r%rrrrjs zWeakValueDictionary.valuescCs8|jr||j\}}|}|dk r||fSqdSr')r9rHr<popitem)rr;r=rLrrrrms zWeakValueDictionary.popitemcGs`|jr|z|j|}Wntk r8d}YnX|dkrX|rN|dSt|n|SdS)Nr)r9rHr<rErJ)rr;argsrLrrrrEs  zWeakValueDictionary.popcCs`z|j|}Wntk r(d}YnX|dkrX|jr@|t||j||j|<|S|SdSr')r<rJr9rHrXr@)rr;rcrLrrr setdefaults zWeakValueDictionary.setdefaultcKsz|jr||j}|dk rRt|ds.t|}|D]\}}t||j|||<q6|D]\}}t||j|||<qZdSNr\)r9rHr<hasattrdictr\rXr@)rr/kwargsrGr;rLrrrrBs zWeakValueDictionary.updatecCs|jr|t|jSr')r9rHlistr<rjrQrrr valuerefs(s zWeakValueDictionary.valuerefs)r)N)N)N)r2r3r4rDrHrMrOrRrSrWr[r^__copy__rbrdr\rh__iter__rkrjrmrErorBrurrrrrZs,          cs(eZdZdZddZfddZZS)rXr;cCst|||}||_|Sr')rr#r;)r"obrr;rrrrr#CszKeyedRef.__new__cst||dSr')r(rD)rryrr;r*rrrDHszKeyedRef.__init__)r2r3r4r5r#rDr7rrr*rrX7s rXc@seZdZd*ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ e Z ddZ d+ddZddZddZddZeZddZd d!Zd"d#Zd$d%Zd,d&d'Zd-d(d)ZdS).r NcCsFi|_t|fdd}||_g|_t|_d|_|dk rB||dS)NcSs.|}|dk r*|jr"|j|n|j|=dSr')r8r9r:r<)rfr>rrrrr?Ys z*WeakKeyDictionary.__init__..removeF)r<rr@r9rAr8 _dirty_lenrB)rrrr?rrrrDWszWeakKeyDictionary.__init__cCs:|j}|j}|r6z||=Wq tk r2Yq Xq dSr')r9r<rErJ)rrFrGrrrrHhsz"WeakKeyDictionary._commit_removalscs&|jfdd|jD|_d|_dS)Ncsg|]}|kr|qSrr).0rfrGrr wsz5WeakKeyDictionary._scrub_removals..F)r<r9rzrQrr|r_scrub_removalsusz!WeakKeyDictionary._scrub_removalscCsd|_|jt|=dSr0)rzr<rrNrrrrOzszWeakKeyDictionary.__delitem__cCs|jt|Sr')r<rrNrrrrM~szWeakKeyDictionary.__getitem__cCs(|jr|jr|t|jt|jSr')rzr9r~rPr<rQrrrrRs zWeakKeyDictionary.__len__cCsd|jjt|fSrTrUrQrrrrWszWeakKeyDictionary.__repr__cCs||jt||j<dSr')r<rr@rYrrrr[szWeakKeyDictionary.__setitem__c CsHt}t|0|jD]\}}|}|dk r|||<qW5QRX|Sr')r r r<r\)rr]r;rZrLrrrr^s zWeakKeyDictionary.copyc Cs\ddlm}|}t|6|jD]$\}}|}|dk r(|||||<q(W5QRX|Sr_)r^r`r+r r<r\)rrar`r]r;rZrLrrrrbs  zWeakKeyDictionary.__deepcopy__cCs|jt||Sr')r<rdrrr;rcrrrrdszWeakKeyDictionary.getcCs.z t|}Wntk r"YdSX||jkSr)rr r<)rr;r=rrrrSs  zWeakKeyDictionary.__contains__c csDt|2|jD] \}}|}|dk r||fVqW5QRXdSr'r r<r\)rr=rZr;rrrr\s  zWeakKeyDictionary.itemsc cs8t|&|jD]}|}|dk r|VqW5QRXdSr')r r<rlrrrrhs   zWeakKeyDictionary.keysc cs<t|*|jD]\}}|dk r|VqW5QRXdSr'r)rr=rZrrrrjs  zWeakKeyDictionary.valuescCs t|jSr')rtr<rQrrrkeyrefss zWeakKeyDictionary.keyrefscCs0d|_|j\}}|}|dk r||fSqdSr0)rzr<rm)rr;rZrLrrrrms zWeakKeyDictionary.popitemcGsd|_|jjt|f|Sr0)rzr<rEr)rr;rnrrrrEszWeakKeyDictionary.popcCs|jt||j|Sr')r<rorr@rrrrroszWeakKeyDictionary.setdefaultcKs\|j}|dk rFt|ds$ti|}|D]\}}||t||j<q,t|rX||dSrp)r<rqr"r\rr@rPrB)rrrrsrGr;rZrrrrBs  zWeakKeyDictionary.update)N)N)N)N)r2r3r4rDrHr~rOrMrRrWr[r^rvrbrdrSr\rhrwrjrrmrErorBrrrrr Ls,      c@seZdZdZiZdZeZdZ dZ GdddZ ddZ de _ dd d Zd d Zd dZeddZeddZejddZddZeddZeddZdS)rrFc@seZdZdZdS)zfinalize._Info)weakrefr&rnrsatexitindexN)r2r3r4r5rrrr_InfosrcOs>t|dkr|^}}}}n|s(tdnd|krDtdt|d|d}t|dkr~|^}}}ddl}|jdtdd nFd |krtdt|d|d }|^}}ddl}|jd tdd t|}|jsddl}| |j d t _| }t |||_||_||_|pd|_d |_t|j|_||j|<d t _dS) Nzz!<%s object at %#x; for %r at %#x>)rrdrr"r2rVrrrrrWYs  zfinalize.__repr__cCs2dd|jD}|jddddd|DS)NcSsg|]\}}|jr||fqSr)rr{firrrr}esz-finalize._select_for_exit..cSs |djS)Nr)r)itemrrrfz+finalize._select_for_exit..rxcSsg|] \}}|qSrrrrrrr}gs)rr\sort)r$Lrrr_select_for_exitbszfinalize._select_for_exitcCsd}z|jrddl}|r(d}|d}|dks:tjrH|}dt_|sNq| }z |Wq,t k rt j t Yq,Xq,W5dt_|r|XdS)NFTr)rrZenablergcZ isenabledZdisablerrrE Exceptionsys excepthookexc_info)r$Z reenable_gcrZpendingrrrrris, zfinalize._exitfunc)N)r2r3r4r5rr itertoolscountrrrrrD__text_signature__r)rrpropertyrrsetterrW classmethodrrrrrrrs.*      )_weakrefrrrrrrrr Z _weakrefsetr r _collections_abcrrr __all__rMutableMappingrrXr rrrrr s.( 6^