a
    ӗa#                     @   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
   ./home/manager/Python-3.9.10/Lib/_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   