a
    jCi#  ã                   @   s>   d dl mZ d dlmZ dgZG dd„ dƒZG dd„ dƒZdS )é    ©Úref)ÚGenericAliasÚWeakSetc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_IterationGuardc                 C   s   t |ƒ| _d S ©N)r   Úweakcontainer)Úselfr   © r
   ú'/usr/local/lib/python3.9/_weakrefset.pyÚ__init__   s    z_IterationGuard.__init__c                 C   s    |   ¡ }|d ur|j | ¡ | S r   )r   Ú
_iteratingÚadd)r	   Úwr
   r
   r   Ú	__enter__   s    z_IterationGuard.__enter__c                 C   s0   |   ¡ }|d ur,|j}| | ¡ |s,| ¡  d S r   )r   r   ÚremoveÚ_commit_removals)r	   ÚeÚtÚbr   Úsr
   r
   r   Ú__exit__   s    
z_IterationGuard.__exit__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r
   r
   r
   r   r      s   r   c                   @   s&  e Zd Zd@dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZeZd d!„ Zd"d#„ Zd$d%„ ZeZd&d'„ Zd(d)„ Zd*d+„ ZeZd,d-„ Zd.d/„ ZeZd0d1„ Zd2d3„ Zd4d5„ Z e Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$e$Z%d<d=„ Z&d>d?„ Z'e(e)ƒZ*dS )Ar   Nc                 C   sB   t ƒ | _t| ƒfdd„}|| _g | _t ƒ | _|d ur>|  |¡ d S )Nc                 S   s2   |ƒ }|d ur.|j r"|j | ¡ n|j | ¡ d S r   )r   Ú_pending_removalsÚappendÚdataÚdiscard)ÚitemÚselfrefr	   r
   r
   r   Ú_remove'   s
    z!WeakSet.__init__.<locals>._remove)Úsetr   r   r!   r   r   Úupdate)r	   r   r!   r
   r
   r   r   %   s    zWeakSet.__init__c                 C   s>   | j j}| jj}z
|ƒ }W n ty.   Y d S 0 ||ƒ qd S r   )r   Úpopr   r   Ú
IndexError)r	   r$   r   r   r
   r
   r   r   5   s    
zWeakSet._commit_removalsc                 c   sL   t | ƒ�0 | jD ]}|ƒ }|d ur|V  qW d   ƒ n1 s>0    Y  d S r   )r   r   ©r	   Zitemrefr   r
   r
   r   Ú__iter__?   s
    

zWeakSet.__iter__c                 C   s   t | jƒt | jƒ S r   )Úlenr   r   ©r	   r
   r
   r   Ú__len__H   s    zWeakSet.__len__c                 C   s,   zt |ƒ}W n ty    Y dS 0 || jv S )NF)r   Ú	TypeErrorr   )r	   r   Úwrr
   r
   r   Ú__contains__K   s
    zWeakSet.__contains__c                 C   s   | j t| ƒft| dd ƒfS )NÚ__dict__)Ú	__class__ÚlistÚgetattrr)   r
   r
   r   Ú
__reduce__R   s    
ÿzWeakSet.__reduce__c                 C   s&   | j r|  ¡  | j t|| jƒ¡ d S r   )r   r   r   r   r   r!   ©r	   r   r
   r
   r   r   V   s    zWeakSet.addc                 C   s   | j r|  ¡  | j ¡  d S r   )r   r   r   Úclearr)   r
   r
   r   r4   [   s    zWeakSet.clearc                 C   s
   |   | ¡S r   ©r/   r)   r
   r
   r   Úcopy`   s    zWeakSet.copyc                 C   sR   | j r|  ¡  z| j ¡ }W n ty8   tdƒd ‚Y n0 |ƒ }|d ur|S qd S )Nzpop from empty WeakSet)r   r   r   r$   ÚKeyErrorr&   r
   r
   r   r$   c   s    zWeakSet.popc                 C   s"   | j r|  ¡  | j t|ƒ¡ d S r   )r   r   r   r   r   r3   r
   r
   r   r   o   s    zWeakSet.removec                 C   s"   | j r|  ¡  | j t|ƒ¡ d S r   )r   r   r   r   r   r3   r
   r
   r   r   t   s    zWeakSet.discardc                 C   s&   | j r|  ¡  |D ]}|  |¡ qd S r   )r   r   r   )r	   ÚotherZelementr
   r
   r   r#   y   s    zWeakSet.updatec                 C   s   |   |¡ | S r   )r#   ©r	   r8   r
   r
   r   Ú__ior__   s    
zWeakSet.__ior__c                 C   s   |   ¡ }| |¡ |S r   )r6   Údifference_update©r	   r8   Znewsetr
   r
   r   Ú
differenceƒ   s    
zWeakSet.differencec                 C   s   |   |¡ d S r   )Ú__isub__r9   r
   r
   r   r;   ‰   s    zWeakSet.difference_updatec                 C   s<   | j r|  ¡  | |u r"| j ¡  n| j dd„ |D ƒ¡ | S )Nc                 s   s   | ]}t |ƒV  qd S r   r   ©Ú.0r   r
   r
   r   Ú	<genexpr>‘   ó    z#WeakSet.__isub__.<locals>.<genexpr>)r   r   r   r4   r;   r9   r
   r
   r   r>   ‹   s    zWeakSet.__isub__c                    s   ˆ   ‡ fdd„|D ƒ¡S )Nc                 3   s   | ]}|ˆ v r|V  qd S r   r
   r?   r)   r
   r   rA   •   rB   z'WeakSet.intersection.<locals>.<genexpr>r5   r9   r
   r)   r   Úintersection”   s    zWeakSet.intersectionc                 C   s   |   |¡ d S r   )Ú__iand__r9   r
   r
   r   Úintersection_update˜   s    zWeakSet.intersection_updatec                 C   s(   | j r|  ¡  | j dd„ |D ƒ¡ | S )Nc                 s   s   | ]}t |ƒV  qd S r   r   r?   r
   r
   r   rA   �   rB   z#WeakSet.__iand__.<locals>.<genexpr>)r   r   r   rE   r9   r
   r
   r   rD   š   s    zWeakSet.__iand__c                 C   s   | j  dd„ |D ƒ¡S )Nc                 s   s   | ]}t |ƒV  qd S r   r   r?   r
   r
   r   rA   ¡   rB   z#WeakSet.issubset.<locals>.<genexpr>)r   Úissubsetr9   r
   r
   r   rF       s    zWeakSet.issubsetc                 C   s   | j ttt|ƒƒk S r   ©r   r"   Úmapr   r9   r
   r
   r   Ú__lt__¤   s    zWeakSet.__lt__c                 C   s   | j  dd„ |D ƒ¡S )Nc                 s   s   | ]}t |ƒV  qd S r   r   r?   r
   r
   r   rA   ¨   rB   z%WeakSet.issuperset.<locals>.<genexpr>)r   Ú
issupersetr9   r
   r
   r   rJ   §   s    zWeakSet.issupersetc                 C   s   | j ttt|ƒƒkS r   rG   r9   r
   r
   r   Ú__gt__«   s    zWeakSet.__gt__c                 C   s$   t || jƒstS | jttt|ƒƒkS r   )Ú
isinstancer/   ÚNotImplementedr   r"   rH   r   r9   r
   r
   r   Ú__eq__®   s    zWeakSet.__eq__c                 C   s   |   ¡ }| |¡ |S r   )r6   Úsymmetric_difference_updater<   r
   r
   r   Úsymmetric_difference³   s    
zWeakSet.symmetric_differencec                 C   s   |   |¡ d S r   )Ú__ixor__r9   r
   r
   r   rO   ¹   s    z#WeakSet.symmetric_difference_updatec                    s@   ˆ j rˆ  ¡  ˆ |u r"ˆ j ¡  nˆ j ‡ fdd„|D ƒ¡ ˆ S )Nc                 3   s   | ]}t |ˆ jƒV  qd S r   )r   r!   r?   r)   r
   r   rA   Á   rB   z#WeakSet.__ixor__.<locals>.<genexpr>)r   r   r   r4   rO   r9   r
   r)   r   rQ   »   s    zWeakSet.__ixor__c                 C   s   |   dd„ | |fD ƒ¡S )Nc                 s   s   | ]}|D ]
}|V  q
qd S r   r
   )r@   r   r   r
   r
   r   rA   Å   rB   z WeakSet.union.<locals>.<genexpr>r5   r9   r
   r
   r   ÚunionÄ   s    zWeakSet.unionc                 C   s   t |  |¡ƒdkS )Nr   )r(   rC   r9   r
   r
   r   Ú
isdisjointÈ   s    zWeakSet.isdisjointc                 C   s
   t | jƒS r   )Úreprr   r)   r
   r
   r   Ú__repr__Ë   s    zWeakSet.__repr__)N)+r   r   r   r   r   r'   r*   r-   r2   r   r4   r6   r$   r   r   r#   r:   r=   Ú__sub__r;   r>   rC   Ú__and__rE   rD   rF   Ú__le__rI   rJ   Ú__ge__rK   rN   rP   Ú__xor__rO   rQ   rR   Ú__or__rS   rU   Úclassmethodr   Ú__class_getitem__r
   r
   r
   r   r   $   sL   

			N)Ú_weakrefr   Útypesr   Ú__all__r   r   r
   r
   r
   r   Ú<module>   s   