grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î £ f¸Kã @s"dZddlmZmZmZmZmZmZmZddl m Z m Z ddl Z ddl Z ddlZeefZddddd d d d d ddddg ZGdd„deƒZGdd„de jƒZGdd„deƒZGdd „d e jƒZGdd„dƒZdS)z{Weak reference support for Python. This module is an implementation of PEP 205: http://www.python.org/dev/peps/pep-0205/ é)ÚgetweakrefcountÚ getweakrefsÚrefÚproxyÚCallableProxyTypeÚ ProxyTypeÚ ReferenceType)ÚWeakSetÚ_IterationGuardNrrrrÚWeakKeyDictionaryrrrÚ ProxyTypesÚWeakValueDictionaryr Ú WeakMethodÚfinalizecs^eZdZdZdZddd„Z‡fd d †Zd d „Zd d„Ze j Z ‡S)rz— A custom `weakref.ref` subclass which simulates a weak reference to a bound method, working around the lifetime problem of bound methods. Ú _func_refÚ _meth_typeÚ_aliveÚ __weakref__Nc s­y|j}|j}Wn0tk rHtdjt|ƒƒƒd‚YnX‡‡fdd†}tj|||ƒ}t||ƒ|_t|ƒ|_ d|_ t|ƒ‰|S)Nz)argument should be a bound method, not {}cs;ˆƒ}|jr7d|_ˆdk r7ˆ|ƒq7ndS)NF)r)ÚargÚself)ÚcallbackÚself_wr©ú,/opt/alt/python34/lib64/python3.4/weakref.pyÚ_cb2s     zWeakMethod.__new__.._cbT) Ú__self__Ú__func__ÚAttributeErrorÚ TypeErrorÚformatÚtyperÚ__new__rrr)ÚclsÚmethrÚobjÚfuncrrr)rrrr!+s      zWeakMethod.__new__csGtƒjƒ}|jƒ}|dks3|dkr7dS|j||ƒS)N)ÚsuperÚ__call__rr)rr$r%)Ú __class__rrr'As  zWeakMethod.__call__cCsSt|tƒrO|j s#|j r-||kStj||ƒoN|j|jkSdS)NF)Ú isinstancerrrÚ__eq__r)rÚotherrrrr*Hs  "zWeakMethod.__eq__cCsSt|tƒrO|j s#|j r-||k Stj||ƒpN|j|jkSdS)NT)r)rrrÚ__ne__r)rr+rrrr,Os  "zWeakMethod.__ne__)z _func_refz _meth_typez_alivez __weakref__) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r!r'r*r,rÚ__hash__rr)r(rr#s   c@seZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z e Z dd„Zddd„Zdd„Zdd„ZeZdd„Zdd „Zd!d"„Zd#d$„Zdd%d&„Zd'd(„Zd)d*„ZdS)+r z›Mapping class that references values weakly. Entries in the dictionary will be discarded when no strong reference to the value exists anymore cOs |stdƒ‚n|^}}t|ƒdkrLtdt|ƒƒ‚nt|ƒdd„}||_g|_tƒ|_i|_}|j||ŽdS)NzGdescriptor '__init__' of 'WeakValueDictionary' object needs an argumentéz$expected at most 1 arguments, got %dcSsH|ƒ}|dk rD|jr4|jj|jƒqD|j|j=ndS)N)Ú _iteratingÚ_pending_removalsÚappendÚkeyÚdata)ÚwrÚselfrefrrrrÚremovels    z,WeakValueDictionary.__init__..remove) rÚlenrÚ_remover5Úsetr4r8Úupdate)ÚargsÚkwrr;ÚdrrrÚ__init__es     zWeakValueDictionary.__init__cCs0|j}|j}x|r+||jƒ=qWdS)N)r5r8Úpop)rÚlrBrrrÚ_commit_removalszs   z$WeakValueDictionary._commit_removalscCs3|j|ƒ}|dkr+t|ƒ‚n|SdS)N)r8ÚKeyError)rr7ÚorrrÚ __getitem__‚s zWeakValueDictionary.__getitem__cCs$|jr|jƒn|j|=dS)N)r5rFr8)rr7rrrÚ __delitem__‰s  zWeakValueDictionary.__delitem__cCst|jƒt|jƒS)N)r<r8r5)rrrrÚ__len__ŽszWeakValueDictionary.__len__c Cs7y|j|ƒ}Wntk r,dSYnX|dk S)NF)r8rG)rr7rHrrrÚ __contains__‘s   z WeakValueDictionary.__contains__cCsdt|ƒS)Nz)Úid)rrrrÚ__repr__˜szWeakValueDictionary.__repr__cCs6|jr|jƒnt||j|ƒ|j||jr1|jj|ƒq>|j|=ndS)N)r4r5r6r8)rZr:rrrrr;Gs    z*WeakKeyDictionary.__init__..removeF)r8rr=r5r>r4Ú _dirty_lenr?)rrcr;rrrrCEs      zWeakKeyDictionary.__init__c CsI|j}|j}x0|rDy||jƒ=Wqtk r@YqXqWdS)N)r5r8rDrG)rrErBrrrrFVs    z"WeakKeyDictionary._commit_removalscs5|j‰‡fdd†|jDƒ|_d|_dS)Ncs"g|]}|ˆkr|‘qSrr)Ú.0rZ)rBrrú es z5WeakKeyDictionary._scrub_removals..F)r8r5ri)rr)rBrÚ_scrub_removalscs z!WeakKeyDictionary._scrub_removalscCsd|_|jt|ƒ=dS)NT)rir8r)rr7rrrrJhs zWeakKeyDictionary.__delitem__cCs|jt|ƒS)N)r8r)rr7rrrrIlszWeakKeyDictionary.__getitem__cCs9|jr|jr|jƒnt|jƒt|jƒS)N)rir5rlr<r8)rrrrrKos zWeakKeyDictionary.__len__cCsdt|ƒS)Nz)rM)rrrrrNvszWeakKeyDictionary.__repr__cCs||jt||jƒz!<%s object at %#x; for %r at %#x>)rwrYrnr r-rM)rryr$rrrrN*s  zfinalize.__repr__cCsCdd„|jjƒDƒ}|jddd„ƒdd„|DƒS)NcSs+g|]!\}}|jr||f‘qSr)ro)rjÚfÚirrrrk6s z-finalize._select_for_exit..r7cSs |djS)Nr3)rp)ÚitemrrrÚ7sz+finalize._select_for_exit..cSsg|]\}}|‘qSrr)rjr€r�rrrrk8s )rwrRÚsort)r"ÚLrrrÚ_select_for_exit3szfinalize._select_for_exitcCsýd}zÓ|jrØddl}|jƒr=d}|jƒnd}x’|dks[tjrs|jƒ}dt_n|s}Pn|jƒ}y |ƒWn%tk r»t j t j ƒŒYnX||jksFt ‚qFWnWddt_ |rø|jƒnXdS)NFrT)rwÚgcÚ isenabledÚdisablerrxr†rDÚ ExceptionÚsysÚ excepthookÚexc_infoÚAssertionErrorrzÚenable)r"Ú reenable_gcr‡Úpendingr€rrrrt:s.           zfinalize._exitfunc)r-r.r/r0r1rwrzÚ itertoolsÚcountrvrxrrrqrCr'r|r}Úpropertyr~roÚsetterrNÚ classmethodr†rtrrrrrÕs$      )r0Ú_weakrefrrrrrrrÚ _weakrefsetr r Ú collectionsr‹r’r Ú__all__rÚMutableMappingr rOr rrrrrÚs4        6Ì›