U e5dgã@s2ddlmZdgZGdd„dƒZGdd„dƒZdS)é©ÚrefÚWeakSetc@s$eZdZdd„Zdd„Zdd„ZdS)Ú_IterationGuardcCst|ƒ|_dS©N)rÚ weakcontainer)Úselfr©r ú#/usr/lib64/python3.8/_weakrefset.pyÚ__init__sz_IterationGuard.__init__cCs | ¡}|dk r|j |¡|Sr)rÚ _iteratingÚadd)rÚwr r r Ú __enter__s z_IterationGuard.__enter__cCs0| ¡}|dk r,|j}| |¡|s,| ¡dSr)rr ÚremoveÚ_commit_removals)rÚeÚtÚbrÚsr r r Ú__exit__s  z_IterationGuard.__exit__N)Ú__name__Ú __module__Ú __qualname__r rrr r r r r src@seZdZd@dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZeZd d!„Zd"d#„Zd$d%„ZeZd&d'„Zd(d)„Zd*d+„ZeZd,d-„Zd.d/„ZeZd0d1„Zd2d3„Zd4d5„Z e Z!d6d7„Z"d8d9„Z#d:d;„Z$e$Z%dd?„Z'dS)ArNcCsBtƒ|_t|ƒfdd„}||_g|_tƒ|_|dk r>| |¡dS)NcSs2|ƒ}|dk r.|jr"|j |¡n |j |¡dSr)r Ú_pending_removalsÚappendÚdataÚdiscard)ÚitemZselfrefrr r r Ú_remove&s z!WeakSet.__init__.._remove)Úsetrrrrr Úupdate)rrrr r r r $szWeakSet.__init__cCs$|j}|jj}|r || ¡ƒqdSr)rrrÚpop)rÚlrr r r r4szWeakSet._commit_removalsc cs8t|ƒ�&|jD]}|ƒ}|dk r|VqW5QRXdSr)rr©rZitemrefrr r r Ú__iter__:s   zWeakSet.__iter__cCst|jƒt|jƒSr)Úlenrr©rr r r Ú__len__CszWeakSet.__len__cCs.z t|ƒ}Wntk r"YdSX||jkS)NF)rÚ TypeErrorr)rrZwrr r r Ú __contains__Fs  zWeakSet.__contains__cCs|jt|ƒft|ddƒfS)NÚ__dict__)Ú __class__ÚlistÚgetattrr'r r r Ú __reduce__Ms  ÿzWeakSet.__reduce__cCs&|jr| ¡|j t||jƒ¡dSr)rrrr rr©rrr r r r Qsz WeakSet.addcCs|jr| ¡|j ¡dSr)rrrÚclearr'r r r r1Vsz WeakSet.clearcCs | |¡Sr©r,r'r r r Úcopy[sz WeakSet.copycCsT|jr| ¡z|j ¡}Wntk r:tdƒd‚YnX|ƒ}|dk r|SqdS)Nzpop from empty WeakSet)rrrr"ÚKeyErrorr$r r r r"^sz WeakSet.popcCs"|jr| ¡|j t|ƒ¡dSr)rrrrrr0r r r rjszWeakSet.removecCs"|jr| ¡|j t|ƒ¡dSr)rrrrrr0r r r roszWeakSet.discardcCs&|jr| ¡|D]}| |¡qdSr)rrr )rÚotherZelementr r r r!tszWeakSet.updatecCs| |¡|Sr)r!©rr5r r r Ú__ior__zs zWeakSet.__ior__cCs| ¡}| |¡|Sr)r3Údifference_update©rr5Znewsetr r r Ú difference~s zWeakSet.differencecCs| |¡dSr)Ú__isub__r6r r r r8„szWeakSet.difference_updatecCs<|jr| ¡||kr"|j ¡n|j dd„|Dƒ¡|S)Ncss|]}t|ƒVqdSrr©Ú.0rr r r Ú Œsz#WeakSet.__isub__..)rrrr1r8r6r r r r;†s  zWeakSet.__isub__csˆ ‡fdd„|Dƒ¡S)Nc3s|]}|ˆkr|VqdSrr r<r'r r r>�sz'WeakSet.intersection..r2r6r r'r Ú intersection�szWeakSet.intersectioncCs| |¡dSr)Ú__iand__r6r r r Úintersection_update“szWeakSet.intersection_updatecCs(|jr| ¡|j dd„|Dƒ¡|S)Ncss|]}t|ƒVqdSrrr<r r r r>˜sz#WeakSet.__iand__..)rrrrAr6r r r r@•szWeakSet.__iand__cCs|j dd„|Dƒ¡S)Ncss|]}t|ƒVqdSrrr<r r r r>œsz#WeakSet.issubset..)rÚissubsetr6r r r rB›szWeakSet.issubsetcCs|jttt|ƒƒkSr©rr Úmaprr6r r r Ú__lt__ŸszWeakSet.__lt__cCs|j dd„|Dƒ¡S)Ncss|]}t|ƒVqdSrrr<r r r r>£sz%WeakSet.issuperset..)rÚ issupersetr6r r r rF¢szWeakSet.issupersetcCs|jttt|ƒƒkSrrCr6r r r Ú__gt__¦szWeakSet.__gt__cCs$t||jƒstS|jttt|ƒƒkSr)Ú isinstancer,ÚNotImplementedrr rDrr6r r r Ú__eq__©s zWeakSet.__eq__cCs| ¡}| |¡|Sr)r3Úsymmetric_difference_updater9r r r Úsymmetric_difference®s zWeakSet.symmetric_differencecCs| |¡dSr)Ú__ixor__r6r r r rK´sz#WeakSet.symmetric_difference_updatecs@ˆjrˆ ¡ˆ|kr"ˆj ¡nˆj ‡fdd„|Dƒ¡ˆS)Nc3s|]}t|ˆjƒVqdSr)rrr<r'r r r>¼sz#WeakSet.__ixor__..)rrrr1rKr6r r'r rM¶s  zWeakSet.__ixor__cCs| dd„||fDƒ¡S)Ncss|]}|D] }|Vq qdSrr )r=rrr r r r>Àsz WeakSet.union..r2r6r r r Úunion¿sz WeakSet.unioncCst| |¡ƒdkS)Nr)r&r?r6r r r Ú isdisjointÃszWeakSet.isdisjointcCs t|jƒSr)Úreprrr'r r r Ú__repr__ÆszWeakSet.__repr__)N)(rrrr rr%r(r*r/r r1r3r"rrr!r7r:Ú__sub__r8r;r?Ú__and__rAr@rBÚ__le__rErFÚ__ge__rGrJrLÚ__xor__rKrMrNÚ__or__rOrQr r r r r#sJ     N)Ú_weakrefrÚ__all__rrr r r r Ús