U
    wy]e                     @   st  d Z ddlmZmZ ddlZdddddd	d
ddddddddddddddddddgZdZeedZ	eee
 Zeei  Zeei  Zeei  Zeeg Zeeeg ZeeedZeeedd > Zeee Zeed!Zeed"Zeee Zei  Zei  Zei  Z eej!Z"ed#d$  Z#d%d& Z$e$ Z$ee$Z%e$&  [$d'd( Z'e' Z'ee'Z(['d)d* Z)G d+d	 d	ed,Z*G d-d ded,Z+G d.d de+Z,e,-e% G d/d ded,Z.G d0d de.Z/G d1d de/Z0e0-e( G d2d
 d
ed,Z1G d3d de1Z2e2-e	 e2-e e2-e e2-e e2-e e2-e e2-e e2-e e2-e e2-e e2-e e2-e e2-e G d4d de1Z3G d5d de2Z4e4-e# G d6d ded,Z5G d7d ded,Z6G d8d de5e1e6Z7G d9d ded,Z8G d:d de7Z9e9-e: G d;d de9Z;e;-e G d<d de7Z<e<-e" G d=d de5Z=G d>d de=e9Z>e>-e G d?d de=e9Z?e?-e  G d@d de=e7Z@e@-e G dAd de<ZAeA-eB G dBd de3e7ZCeC-eD eC-eE eC-e eC-eF G dCd deCZGeG-eH eG-e
 G dDd deCZIeI-eJ eI-e
 dS )EzjAbstract Base Classes (ABCs) for collections, according to PEP 3119.

Unit tests are in test_collections.
    )ABCMetaabstractmethodN	Awaitable	CoroutineAsyncIterableAsyncIteratorAsyncGeneratorHashableIterableIterator	Generator
ReversibleSized	ContainerCallable
CollectionSet
MutableSetMappingMutableMappingMappingViewKeysView	ItemsView
ValuesViewSequenceMutableSequence
ByteStringzcollections.abc       i    c                   c   s   d V S Nr    r    r    r    M/home/stadmin/Documents/SimTableSoftware/Python-3.8.0/Lib/_collections_abc.py<lambda>8   r   r#   c                      s   d S r!   r    r    r    r    r"   _coro:   r   r$   c                   C  s
   d V  d S r!   r    r    r    r    r"   _ag@   r   r%   c                 G   sN   | j }|D ]>}|D ],}||jkr|j| d kr:t    S  q
qt  S q
dS )NT)__mro____dict__NotImplemented)CZmethodsmromethodBr    r    r"   _check_methodsH   s    

r-   c                   @   s(   e Zd ZdZedd Zedd ZdS )r	   r    c                 C   s   dS Nr   r    selfr    r    r"   __hash__X   s    zHashable.__hash__c                 C   s   | t krt|dS tS )Nr1   )r	   r-   r(   clsr)   r    r    r"   __subclasshook__\   s    
zHashable.__subclasshook__N)__name__
__module____qualname__	__slots__r   r1   classmethodr4   r    r    r    r"   r	   T   s
   
)	metaclassc                   @   s(   e Zd ZdZedd Zedd ZdS )r   r    c                 c   s
   d V  d S r!   r    r/   r    r    r"   	__await__g   s    zAwaitable.__await__c                 C   s   | t krt|dS tS )Nr;   )r   r-   r(   r2   r    r    r"   r4   k   s    
zAwaitable.__subclasshook__N)r5   r6   r7   r8   r   r;   r9   r4   r    r    r    r"   r   c   s
   
c                   @   s>   e Zd ZdZedd ZedddZdd Zed	d
 Z	dS )r   r    c                 C   s   t dS )zcSend a value into the coroutine.
        Return next yielded value or raise StopIteration.
        NStopIterationr0   valuer    r    r"   sendv   s    zCoroutine.sendNc                 C   s4   |dkr|dkr|| }|dk	r,| |}|dS )zgRaise an exception in the coroutine.
        Return next yielded value or raise StopIteration.
        Nwith_tracebackr0   typvaltbr    r    r"   throw}   s    
zCoroutine.throwc              	   C   s4   z|  t W n ttfk
r&   Y n
X tddS ).Raise GeneratorExit inside coroutine.
        zcoroutine ignored GeneratorExitNrG   GeneratorExitr=   RuntimeErrorr/   r    r    r"   close   s
    zCoroutine.closec                 C   s   | t krt|ddddS tS )Nr;   r@   rG   rL   )r   r-   r(   r2   r    r    r"   r4      s    zCoroutine.__subclasshook__)NN)
r5   r6   r7   r8   r   r@   rG   rL   r9   r4   r    r    r    r"   r   r   s   

c                   @   s(   e Zd ZdZedd Zedd ZdS )r   r    c                 C   s   t  S r!   )r   r/   r    r    r"   	__aiter__   s    zAsyncIterable.__aiter__c                 C   s   | t krt|dS tS )NrM   )r   r-   r(   r2   r    r    r"   r4      s    
zAsyncIterable.__subclasshook__N)r5   r6   r7   r8   r   rM   r9   r4   r    r    r    r"   r      s
   
c                   @   s0   e Zd ZdZedd Zdd Zedd ZdS )	r   r    c                    s   t dS )z@Return the next item or raise StopAsyncIteration when exhausted.NStopAsyncIterationr/   r    r    r"   	__anext__   s    zAsyncIterator.__anext__c                 C   s   | S r!   r    r/   r    r    r"   rM      s    zAsyncIterator.__aiter__c                 C   s   | t krt|ddS tS )NrP   rM   )r   r-   r(   r2   r    r    r"   r4      s    zAsyncIterator.__subclasshook__N)	r5   r6   r7   r8   r   rP   rM   r9   r4   r    r    r    r"   r      s   
c                   @   sF   e Zd ZdZdd Zedd ZedddZd	d
 Ze	dd Z
dS )r   r    c                    s   |  dI dH S )zpReturn the next item from the asynchronous generator.
        When exhausted, raise StopAsyncIteration.
        N)asendr/   r    r    r"   rP      s    zAsyncGenerator.__anext__c                    s   t dS )zuSend a value into the asynchronous generator.
        Return next yielded value or raise StopAsyncIteration.
        NrN   r>   r    r    r"   rQ      s    zAsyncGenerator.asendNc                    s4   |dkr|dkr|| }|dk	r,| |}|dS )zyRaise an exception in the asynchronous generator.
        Return next yielded value or raise StopAsyncIteration.
        NrA   rC   r    r    r"   athrow   s    
zAsyncGenerator.athrowc              	      s:   z|  tI dH  W n ttfk
r,   Y n
X tddS )rH   Nz,asynchronous generator ignored GeneratorExit)rR   rJ   rO   rK   r/   r    r    r"   aclose   s
    zAsyncGenerator.aclosec                 C   s   | t krt|dddddS tS )NrM   rP   rQ   rR   rS   )r   r-   r(   r2   r    r    r"   r4      s      zAsyncGenerator.__subclasshook__)NN)r5   r6   r7   r8   rP   r   rQ   rR   rS   r9   r4   r    r    r    r"   r      s   

c                   @   s(   e Zd ZdZedd Zedd ZdS )r
   r    c                 c   s   d S r!   r    r/   r    r    r"   __iter__   s    zIterable.__iter__c                 C   s   | t krt|dS tS )NrT   )r
   r-   r(   r2   r    r    r"   r4      s    
zIterable.__subclasshook__N)r5   r6   r7   r8   r   rT   r9   r4   r    r    r    r"   r
      s
   
c                   @   s0   e Zd ZdZedd Zdd Zedd ZdS )	r   r    c                 C   s   t dS )zKReturn the next item from the iterator. When exhausted, raise StopIterationNr<   r/   r    r    r"   __next__  s    zIterator.__next__c                 C   s   | S r!   r    r/   r    r    r"   rT     s    zIterator.__iter__c                 C   s   | t krt|ddS tS )NrT   rU   )r   r-   r(   r2   r    r    r"   r4     s    zIterator.__subclasshook__N)	r5   r6   r7   r8   r   rU   rT   r9   r4   r    r    r    r"   r     s   
c                   @   s(   e Zd ZdZedd Zedd ZdS )r   r    c                 c   s   d S r!   r    r/   r    r    r"   __reversed__)  s    zReversible.__reversed__c                 C   s   | t krt|ddS tS )NrV   rT   )r   r-   r(   r2   r    r    r"   r4   .  s    zReversible.__subclasshook__N)r5   r6   r7   r8   r   rV   r9   r4   r    r    r    r"   r   %  s
   
c                   @   sF   e Zd ZdZdd Zedd ZedddZd	d
 Ze	dd Z
dS )r   r    c                 C   s
   |  dS )z^Return the next item from the generator.
        When exhausted, raise StopIteration.
        N)r@   r/   r    r    r"   rU   9  s    zGenerator.__next__c                 C   s   t dS )zcSend a value into the generator.
        Return next yielded value or raise StopIteration.
        Nr<   r>   r    r    r"   r@   ?  s    zGenerator.sendNc                 C   s4   |dkr|dkr|| }|dk	r,| |}|dS )zgRaise an exception in the generator.
        Return next yielded value or raise StopIteration.
        NrA   rC   r    r    r"   rG   F  s    
zGenerator.throwc              	   C   s4   z|  t W n ttfk
r&   Y n
X tddS )z.Raise GeneratorExit inside generator.
        zgenerator ignored GeneratorExitNrI   r/   r    r    r"   rL   S  s
    zGenerator.closec                 C   s   | t krt|dddddS tS )NrT   rU   r@   rG   rL   )r   r-   r(   r2   r    r    r"   r4   ]  s      zGenerator.__subclasshook__)NN)r5   r6   r7   r8   rU   r   r@   rG   rL   r9   r4   r    r    r    r"   r   5  s   

c                   @   s(   e Zd ZdZedd Zedd ZdS )r   r    c                 C   s   dS r.   r    r/   r    r    r"   __len__k  s    zSized.__len__c                 C   s   | t krt|dS tS )NrW   )r   r-   r(   r2   r    r    r"   r4   o  s    
zSized.__subclasshook__N)r5   r6   r7   r8   r   rW   r9   r4   r    r    r    r"   r   g  s
   
c                   @   s(   e Zd ZdZedd Zedd ZdS )r   r    c                 C   s   dS NFr    )r0   xr    r    r"   __contains__z  s    zContainer.__contains__c                 C   s   | t krt|dS tS )NrZ   )r   r-   r(   r2   r    r    r"   r4   ~  s    
zContainer.__subclasshook__N)r5   r6   r7   r8   r   rZ   r9   r4   r    r    r    r"   r   v  s
   
c                   @   s   e Zd ZdZedd ZdS )r   r    c                 C   s   | t krt|dddS tS )NrW   rT   rZ   )r   r-   r(   r2   r    r    r"   r4     s    zCollection.__subclasshook__N)r5   r6   r7   r8   r9   r4   r    r    r    r"   r     s   c                   @   s(   e Zd ZdZedd Zedd ZdS )r   r    c                 O   s   dS rX   r    )r0   argskwdsr    r    r"   __call__  s    zCallable.__call__c                 C   s   | t krt|dS tS )Nr]   )r   r-   r(   r2   r    r    r"   r4     s    
zCallable.__subclasshook__N)r5   r6   r7   r8   r   r]   r9   r4   r    r    r    r"   r     s
   
c                   @   s   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	e
dd Zdd ZeZdd Zdd ZeZdd Zdd Zdd ZeZdd ZdS )r   aZ  A set is a finite, iterable container.

    This class provides concrete generic implementations of all
    methods except for __contains__, __iter__ and __len__.

    To override the comparisons (presumably for speed, as the
    semantics are fixed), redefine __le__ and __ge__,
    then the other operations will automatically follow suit.
    r    c                 C   s>   t |tstS t| t|kr"dS | D ]}||kr& dS q&dS NFT
isinstancer   r(   lenr0   otherZelemr    r    r"   __le__  s    
z
Set.__le__c                 C   s(   t |tstS t| t|k o&| |S r!   r`   r   r(   ra   rd   r0   rc   r    r    r"   __lt__  s    
z
Set.__lt__c                 C   s(   t |tstS t| t|ko&| |S r!   )r`   r   r(   ra   __ge__rf   r    r    r"   __gt__  s    
z
Set.__gt__c                 C   s>   t |tstS t| t|k r"dS |D ]}|| kr& dS q&dS r^   r_   rb   r    r    r"   rh     s    
z
Set.__ge__c                 C   s(   t |tstS t| t|ko&| |S r!   re   rf   r    r    r"   __eq__  s    
z
Set.__eq__c                 C   s   | |S )zConstruct an instance of the class from any iterable input.

        Must override this method if the class constructor signature
        does not accept an iterable for an input.
        r    )r3   itr    r    r"   _from_iterable  s    zSet._from_iterablec                    s&   t |tstS   fdd|D S )Nc                 3   s   | ]}| kr|V  qd S r!   r    .0r?   r/   r    r"   	<genexpr>  s      zSet.__and__.<locals>.<genexpr>r`   r
   r(   rl   rf   r    r/   r"   __and__  s    
zSet.__and__c                 C   s   |D ]}|| kr dS qdS )z1Return True if two sets have a null intersection.FTr    )r0   rc   r?   r    r    r"   
isdisjoint  s    zSet.isdisjointc                 C   s*   t |tstS dd | |fD }| |S )Nc                 s   s   | ]}|D ]
}|V  q
qd S r!   r    )rn   ser    r    r"   ro     s       zSet.__or__.<locals>.<genexpr>rp   )r0   rc   Zchainr    r    r"   __or__  s    
z
Set.__or__c                    s:   t  ts"t  tstS |   |  fdd| D S )Nc                 3   s   | ]}| kr|V  qd S r!   r    rm   rc   r    r"   ro     s    zSet.__sub__.<locals>.<genexpr>r`   r   r
   r(   rl   rf   r    rv   r"   __sub__  s
    


zSet.__sub__c                    s:   t |ts"t |tstS  |}  fdd|D S )Nc                 3   s   | ]}| kr|V  qd S r!   r    rm   r/   r    r"   ro     s    zSet.__rsub__.<locals>.<genexpr>rw   rf   r    r/   r"   __rsub__  s
    


zSet.__rsub__c                 C   s2   t |ts"t |tstS | |}| | ||  B S r!   rw   rf   r    r    r"   __xor__   s
    


zSet.__xor__c                 C   s   t j}d| d }t| }d|d  }||M }| D ],}t|}|||d> A dA d N }||M }q2|d d }||M }||kr||d 8 }|d	krd
}|S )a+  Compute the hash value of a set.

        Note that we don't define __hash__: not all sets are hashable.
        But if you define a hashable set type, its __hash__ should
        call this function.

        This must be compatible __eq__.

        All sets ought to compare equal if they contain the same
        elements, regardless of how they are implemented, and
        regardless of the order of the elements; so there's not much
        freedom for __eq__ or __hash__.  We match the algorithm used
        by the built-in frozenset type.
           r   iMr   iM[l   4~2 i i6i8#)sysmaxsizera   hash)r0   ZMAXZMASKnhrY   Zhxr    r    r"   _hash	  s     
z	Set._hashN)r5   r6   r7   __doc__r8   rd   rg   ri   rh   rj   r9   rl   rq   __rand__rr   ru   __ror__rx   ry   rz   __rxor__r   r    r    r    r"   r     s&   



c                   @   sd   e Zd ZdZdZedd Ze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S )r   a  A mutable set is a finite, iterable container.

    This class provides concrete generic implementations of all
    methods except for __contains__, __iter__, __len__,
    add(), and discard().

    To override the comparisons (presumably for speed, as the
    semantics are fixed), all you have to do is redefine __le__ and
    then the other operations will automatically follow suit.
    r    c                 C   s   t dS )zAdd an element.NNotImplementedErrorr>   r    r    r"   add:  s    zMutableSet.addc                 C   s   t dS )z8Remove an element.  Do not raise an exception if absent.Nr   r>   r    r    r"   discard?  s    zMutableSet.discardc                 C   s   || krt || | dS )z5Remove an element. If not a member, raise a KeyError.N)KeyErrorr   r>   r    r    r"   removeD  s    zMutableSet.removec                 C   s>   t | }zt|}W n tk
r.   tdY nX | | |S )z2Return the popped value.  Raise KeyError if empty.N)iternextr=   r   r   r0   rk   r?   r    r    r"   popJ  s    
zMutableSet.popc                 C   s(   z|    qW n tk
r"   Y nX dS )z6This is slow (creates N new iterators!) but effective.N)r   r   r/   r    r    r"   clearT  s    zMutableSet.clearc                 C   s   |D ]}|  | q| S r!   )r   r   r    r    r"   __ior__\  s    zMutableSet.__ior__c                 C   s   | | D ]}|  | q| S r!   )r   r   r    r    r"   __iand__a  s    zMutableSet.__iand__c                 C   sR   || kr|    n<t|ts&| |}|D ]"}|| krB| | q*| | q*| S r!   )r   r`   r   rl   r   r   r   r    r    r"   __ixor__f  s    


zMutableSet.__ixor__c                 C   s*   || kr|    n|D ]}| | q| S r!   )r   r   r   r    r    r"   __isub__s  s
    
zMutableSet.__isub__N)r5   r6   r7   r   r8   r   r   r   r   r   r   r   r   r   r   r    r    r    r"   r   ,  s   


c                   @   sR   e Zd ZdZedd ZdddZdd Zd	d
 Zdd Z	dd Z
dd ZdZdS )r   r    c                 C   s   t d S r!   r   r0   keyr    r    r"   __getitem__  s    zMapping.__getitem__Nc                 C   s(   z
| | W S  t k
r"   | Y S X dS )z<D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.Nr   r0   r   defaultr    r    r"   get  s    
zMapping.getc                 C   s,   z| |  W n t k
r"   Y dS X dS d S r^   r   r   r    r    r"   rZ     s
    zMapping.__contains__c                 C   s   t | S )z:D.keys() -> a set-like object providing a view on D's keys)r   r/   r    r    r"   keys  s    zMapping.keysc                 C   s   t | S )z<D.items() -> a set-like object providing a view on D's items)r   r/   r    r    r"   items  s    zMapping.itemsc                 C   s   t | S )z6D.values() -> an object providing a view on D's values)r   r/   r    r    r"   values  s    zMapping.valuesc                 C   s&   t |tstS t|  t| kS r!   )r`   r   r(   dictr   rf   r    r    r"   rj     s    
zMapping.__eq__)N)r5   r6   r7   r8   r   r   r   rZ   r   r   r   rj   rV   r    r    r    r"   r     s   


c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	r   _mappingc                 C   s
   || _ d S r!   r   )r0   Zmappingr    r    r"   __init__  s    zMappingView.__init__c                 C   s
   t | jS r!   )ra   r   r/   r    r    r"   rW     s    zMappingView.__len__c                 C   s
   d | S )Nz&{0.__class__.__name__}({0._mapping!r}))formatr/   r    r    r"   __repr__  s    zMappingView.__repr__N)r5   r6   r7   r8   r   rW   r   r    r    r    r"   r     s   c                   @   s,   e Zd ZdZedd Zdd Zdd ZdS )	r   r    c                 C   s   t |S r!   setr0   rk   r    r    r"   rl     s    zKeysView._from_iterablec                 C   s
   || j kS r!   r   r   r    r    r"   rZ     s    zKeysView.__contains__c                 c   s   | j E d H  d S r!   r   r/   r    r    r"   rT     s    zKeysView.__iter__Nr5   r6   r7   r8   r9   rl   rZ   rT   r    r    r    r"   r     s
   
c                   @   s,   e Zd ZdZedd Zdd Zdd ZdS )	r   r    c                 C   s   t |S r!   r   r   r    r    r"   rl     s    zItemsView._from_iterablec                 C   sB   |\}}z| j | }W n tk
r,   Y dS X ||kp<||kS d S rX   )r   r   )r0   itemr   r?   vr    r    r"   rZ     s    zItemsView.__contains__c                 c   s    | j D ]}|| j | fV  qd S r!   r   r   r    r    r"   rT     s    
zItemsView.__iter__Nr   r    r    r    r"   r     s
   
	c                   @   s    e Zd ZdZdd Zdd ZdS )r   r    c                 C   s0   | j D ]$}| j | }||ks$||kr dS qdS NTFr   )r0   r?   r   r   r    r    r"   rZ     s
    

zValuesView.__contains__c                 c   s   | j D ]}| j | V  qd S r!   r   r   r    r    r"   rT     s    
zValuesView.__iter__N)r5   r6   r7   r8   rZ   rT   r    r    r    r"   r     s   c                   @   s^   e Zd ZdZedd Zedd Ze ZefddZ	dd	 Z
d
d ZdddZdddZdS )r   r    c                 C   s   t d S r!   r   r0   r   r?   r    r    r"   __setitem__  s    zMutableMapping.__setitem__c                 C   s   t d S r!   r   r   r    r    r"   __delitem__  s    zMutableMapping.__delitem__c                 C   s@   z| | }W n$ t k
r0   || jkr( | Y S X | |= |S dS )zD.pop(k[,d]) -> v, remove specified key and return the corresponding value.
          If key is not found, d is returned if given, otherwise KeyError is raised.
        N)r   _MutableMapping__marker)r0   r   r   r?   r    r    r"   r     s    

zMutableMapping.popc                 C   sB   zt t| }W n tk
r*   tdY nX | | }| |= ||fS )zD.popitem() -> (k, v), remove and return some (key, value) pair
           as a 2-tuple; but raise KeyError if D is empty.
        N)r   r   r=   r   r   r    r    r"   popitem$  s    zMutableMapping.popitemc                 C   s(   z|    qW n tk
r"   Y nX dS )z,D.clear() -> None.  Remove all items from D.N)r   r   r/   r    r    r"   r   0  s    zMutableMapping.clearc                K   s|   t |tr"|D ]}|| | |< qn<t|drH| D ]}|| | |< q4n|D ]\}}|| |< qL| D ]\}}|| |< qfdS )aK   D.update([E, ]**F) -> None.  Update D from mapping/iterable E and F.
            If E present and has a .keys() method, does:     for k in E: D[k] = E[k]
            If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
            In either case, this is followed by: for k, v in F.items(): D[k] = v
        r   N)r`   r   hasattrr   r   )r0   rc   r\   r   r?   r    r    r"   update8  s    


zMutableMapping.updateNc                 C   s,   z
| | W S  t k
r&   || |< Y nX |S )z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in Dr   r   r    r    r"   
setdefaultJ  s
    
zMutableMapping.setdefault)r    )N)r5   r6   r7   r8   r   r   r   objectr   r   r   r   r   r   r    r    r    r"   r     s   


c                   @   sJ   e Zd ZdZdZedd Zdd Zdd Zd	d
 Z	dddZ
dd ZdS )r   zAll the operations on a read-only sequence.

    Concrete subclasses must override __new__ or __init__,
    __getitem__, and __len__.
    r    c                 C   s   t d S r!   
IndexErrorr0   indexr    r    r"   r   b  s    zSequence.__getitem__c                 c   s<   d}z| | }|V  |d7 }qW n t k
r6   Y d S X d S )Nr   r   r   )r0   ir   r    r    r"   rT   f  s    zSequence.__iter__c                 C   s$   | D ]}||ks||kr dS qdS r   r    )r0   r?   r   r    r    r"   rZ   p  s    zSequence.__contains__c                 c   s$   t tt| D ]}| | V  qd S r!   )reversedrangera   )r0   r   r    r    r"   rV   v  s    zSequence.__reversed__r   Nc                 C   s   |dk	r"|dk r"t t| | d}|dk	r>|dk r>|t| 7 }|}|dksR||k rz"| | }||ksl||krr|W S W n tk
r   Y qY nX |d7 }qBtdS )zS.index(value, [start, [stop]]) -> integer -- return first index of value.
           Raises ValueError if the value is not present.

           Supporting start and stop arguments is optional, but
           recommended.
        Nr   r   )maxra   r   
ValueError)r0   r?   startstopr   r   r    r    r"   r   z  s    


zSequence.indexc                    s   t  fdd| D S )zBS.count(value) -> integer -- return number of occurrences of valuec                 3   s"   | ]}| ks| krd V  qdS )r   Nr    )rn   r   r?   r    r"   ro     s       z!Sequence.count.<locals>.<genexpr>)sumr>   r    r   r"   count  s    zSequence.count)r   N)r5   r6   r7   r   r8   r   r   rT   rZ   rV   r   r   r    r    r    r"   r   X  s   


c                   @   s   e Zd ZdZdZdS )r   zMThis unifies bytes and bytearray.

    XXX Should add all their methods.
    r    N)r5   r6   r7   r   r8   r    r    r    r"   r     s   c                   @   sn   e Zd ZdZedd Zedd Zedd Zdd	 Zd
d Z	dd Z
dd ZdddZdd Zdd ZdS )r   r    c                 C   s   t d S r!   r   r0   r   r?   r    r    r"   r     s    zMutableSequence.__setitem__c                 C   s   t d S r!   r   r   r    r    r"   r     s    zMutableSequence.__delitem__c                 C   s   t dS )z3S.insert(index, value) -- insert value before indexNr   r   r    r    r"   insert  s    zMutableSequence.insertc                 C   s   |  t| | dS )z:S.append(value) -- append value to the end of the sequenceN)r   ra   r>   r    r    r"   append  s    zMutableSequence.appendc                 C   s(   z|    qW n tk
r"   Y nX dS )z,S.clear() -> None -- remove all items from SN)r   r   r/   r    r    r"   r     s    zMutableSequence.clearc                 C   sH   t | }t|d D ].}| || d  | |  | |< | || d < qdS )z!S.reverse() -- reverse *IN PLACE*r{   r   N)ra   r   )r0   r   r   r    r    r"   reverse  s    zMutableSequence.reversec                 C   s(   || krt |}|D ]}| | qdS )zMS.extend(iterable) -- extend sequence by appending elements from the iterableN)listr   )r0   r   r   r    r    r"   extend  s    zMutableSequence.extendr}   c                 C   s   | | }| |= |S )zS.pop([index]) -> item -- remove and return item at index (default last).
           Raise IndexError if list is empty or index is out of range.
        r    )r0   r   r   r    r    r"   r     s    zMutableSequence.popc                 C   s   | |  |= dS )zvS.remove(value) -- remove first occurrence of value.
           Raise ValueError if the value is not present.
        N)r   r>   r    r    r"   r     s    zMutableSequence.removec                 C   s   |  | | S r!   )r   )r0   r   r    r    r"   __iadd__  s    
zMutableSequence.__iadd__N)r}   )r5   r6   r7   r8   r   r   r   r   r   r   r   r   r   r   r   r    r    r    r"   r     s   	



)Kr   abcr   r   r~   __all__r5   typer   Zbytes_iterator	bytearrayZbytearray_iteratorr   Zdict_keyiteratorr   Zdict_valueiteratorr   Zdict_itemiteratorZlist_iteratorr   Zlist_reverseiteratorr   Zrange_iteratorZlongrange_iteratorr   Zset_iteratorZstr_iteratorZtuple_iteratorzipZzip_iteratorZ	dict_keysZdict_valuesZ
dict_itemsr'   ZmappingproxyZ	generatorr$   	coroutinerL   r%   Zasync_generatorr-   r	   r   r   registerr   r   r   r
   r   r   r   r   r   r   r   r   	frozensetr   r   r   r   r   r   r   r   r   tuplestr
memoryviewr   bytesr   r   r    r    r    r"   <module>   s                  	
)
0













/

 

O
2



S
=



	

C
