๎
๙-XI  ใ               @   sC   d  d l  m Z d g Z Gd d   d  Z Gd d   d  Z d S)้    )ฺrefฺWeakSetc               @   s4   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/kubikplay/www/django_dtb/lib/python3.4/_weakrefset.pyฺ__init__   s    z_IterationGuard.__init__c             C   s/   |  j    } | d  k	 r+ | j j |   n  |  S)N)r   ฺ
_iteratingฺadd)r   ฺwr   r   r   ฺ	__enter__   s    z_IterationGuard.__enter__c             C   sH   |  j    } | d  k	 rD | j } | j |   | sD | j   qD n  d  S)N)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 d0 d1   Z d2 d3   Z d4 d5   Z  e  Z! d6 d7   Z" d8 d9   Z# d: d;   Z$ e$ Z% d< d=   Z& d S)>r   Nc             C   s_   t    |  _ t |   d d  } | |  _ g  |  _ t    |  _ | d  k	 r[ |  j |  n  d  S)Nc             S   sH   |   } | d  k	 rD | j  r1 | j j |   qD | j j |   n  d  S)N)r
   ฺ_pending_removalsฺappendฺdataฺdiscard)ฺitemZ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   s6   |  j  } |  j j } x | r1 | | j    q Wd  S)N)r   r   r   ฺpop)r   ฺlr   r   r   r   r   4   s    		zWeakSet._commit_removalsc          
   c   sH   t  |   6 x. |  j D]# } |   } | d  k	 r | Vq q WWd  QXd  S)N)r   r   )r   ฺitemrefr   r   r   r   ฺ__iter__:   s
    	zWeakSet.__iter__c             C   s   t  |  j  t  |  j  S)N)ฺlenr   r   )r   r   r   r   ฺ__len__C   s    zWeakSet.__len__c             C   s6   y t  |  } Wn t k
 r( d SYn X| |  j k S)NF)r   ฺ	TypeErrorr   )r   r   Zwrr   r   r   ฺ__contains__F   s
    	zWeakSet.__contains__c             C   s%   |  j  t |   f t |  d d   f S)Nฺ__dict__)ฺ	__class__ฺlistฺgetattr)r   r   r   r   ฺ
__reduce__M   s    zWeakSet.__reduce__c             C   s6   |  j  r |  j   n  |  j j t | |  j   d  S)N)r   r   r   r   r   r   )r   r   r   r   r   r   Q   s    	zWeakSet.addc             C   s'   |  j  r |  j   n  |  j j   d  S)N)r   r   r   ฺclear)r   r   r   r   r-   V   s    	zWeakSet.clearc             C   s   |  j  |   S)N)r)   )r   r   r   r   ฺcopy[   s    zWeakSet.copyc             C   sn   |  j  r |  j   n  xQ y |  j j   } Wn t k
 rL t d   Yn X|   } | d  k	 r | Sq Wd  S)Nzpop from empty WeakSet)r   r   r   r    ฺKeyError)r   r"   r   r   r   r   r    ^   s    		zWeakSet.popc             C   s0   |  j  r |  j   n  |  j j t |   d  S)N)r   r   r   r   r   )r   r   r   r   r   r   j   s    	zWeakSet.removec             C   s0   |  j  r |  j   n  |  j j t |   d  S)N)r   r   r   r   r   )r   r   r   r   r   r   o   s    	zWeakSet.discardc             C   s8   |  j  r |  j   n  x | D] } |  j |  q Wd  S)N)r   r   r   )r   ฺotherZelementr   r   r   r   t   s    	zWeakSet.updatec             C   s   |  j  |  |  S)N)r   )r   r0   r   r   r   ฺ__ior__z   s    zWeakSet.__ior__c             C   s   |  j    } | j |  | S)N)r.   ฺdifference_update)r   r0   ฺnewsetr   r   r   ฺ
difference~   s    zWeakSet.differencec             C   s   |  j  |  d  S)N)ฺ__isub__)r   r0   r   r   r   r2      s    zWeakSet.difference_updatec             C   sS   |  j  r |  j   n  |  | k r2 |  j j   n |  j j d d   | D  |  S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )ฺ.0r   r   r   r   ๚	<genexpr>   s    z#WeakSet.__isub__.<locals>.<genexpr>)r   r   r   r-   r2   )r   r0   r   r   r   r5      s    	zWeakSet.__isub__c                s      j    f d d   | D  S)Nc             3   s!   |  ] } |   k r | Vq d  S)Nr   )r6   r   )r   r   r   r7      s    z'WeakSet.intersection.<locals>.<genexpr>)r)   )r   r0   r   )r   r   ฺintersection   s    zWeakSet.intersectionc             C   s   |  j  |  d  S)N)ฺ__iand__)r   r0   r   r   r   ฺintersection_update   s    zWeakSet.intersection_updatec             C   s7   |  j  r |  j   n  |  j j d d   | D  |  S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )r6   r   r   r   r   r7      s    z#WeakSet.__iand__.<locals>.<genexpr>)r   r   r   r:   )r   r0   r   r   r   r9      s    	zWeakSet.__iand__c             C   s   |  j  j d d   | D  S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )r6   r   r   r   r   r7      s    z#WeakSet.issubset.<locals>.<genexpr>)r   ฺissubset)r   r0   r   r   r   r;      s    zWeakSet.issubsetc             C   s    |  j  t d d   | D  k  S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )r6   r   r   r   r   r7       s    z!WeakSet.__lt__.<locals>.<genexpr>)r   r   )r   r0   r   r   r   ฺ__lt__   s    zWeakSet.__lt__c             C   s   |  j  j d d   | D  S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )r6   r   r   r   r   r7   ฃ   s    z%WeakSet.issuperset.<locals>.<genexpr>)r   ฺ
issuperset)r   r0   r   r   r   r=   ข   s    zWeakSet.issupersetc             C   s    |  j  t d d   | D  k S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )r6   r   r   r   r   r7   ง   s    z!WeakSet.__gt__.<locals>.<genexpr>)r   r   )r   r0   r   r   r   ฺ__gt__ฆ   s    zWeakSet.__gt__c             C   s6   t  | |  j  s t S|  j t d d   | D  k S)Nc             s   s   |  ] } t  |  Vq d  S)N)r   )r6   r   r   r   r   r7   ฌ   s    z!WeakSet.__eq__.<locals>.<genexpr>)ฺ
isinstancer)   ฺNotImplementedr   r   )r   r0   r   r   r   ฺ__eq__ฉ   s    zWeakSet.__eq__c             C   s   |  j    } | j |  | S)N)r.   ฺsymmetric_difference_update)r   r0   r3   r   r   r   ฺsymmetric_differenceฎ   s    zWeakSet.symmetric_differencec             C   s   |  j  |  d  S)N)ฺ__ixor__)r   r0   r   r   r   rB   ด   s    z#WeakSet.symmetric_difference_updatec                sY     j  r   j   n    | k r2   j j   n#   j j   f d d   | D    S)Nc             3   s!   |  ] } t  |   j  Vq d  S)N)r   r   )r6   r   )r   r   r   r7   ผ   s    z#WeakSet.__ixor__.<locals>.<genexpr>)r   r   r   r-   rB   )r   r0   r   )r   r   rD   ถ   s    	#zWeakSet.__ixor__c             C   s    |  j  d d   |  | f D  S)Nc             s   s"   |  ] } | D] } | Vq q d  S)Nr   )r6   r   r   r   r   r   r7   ภ   s    z WeakSet.union.<locals>.<genexpr>)r)   )r   r0   r   r   r   ฺunionฟ   s    zWeakSet.unionc             C   s   t  |  j |   d k S)Nr   )r$   r8   )r   r0   r   r   r   ฺ
isdisjointร   s    zWeakSet.isdisjoint)'r   r   r   r	   r   r#   r%   r'   r,   r   r-   r.   r    r   r   r   r1   r4   ฺ__sub__r2   r5   r8   ฺ__and__r:   r9   r;   ฺ__le__r<   r=   ฺ__ge__r>   rA   rC   ฺ__xor__rB   rD   rE   ฺ__or__rF   r   r   r   r   r   #   sH   			N)ฺ_weakrefr   ฺ__all__r   r   r   r   r   r   ฺ<module>   s   	