Ë
    š”e•  ã                   ó   — d Z dZddlmZ ddlmZ  G d„ dej                  «      Z G d„ dej                  e«      Z	 G d	„ d
ej                  e	«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ dee«      Zy)a�  
Sequence Interfaces

Importing this module does *not* mark any standard classes as
implementing any of these interfaces.

While this module is not deprecated, new code should generally use
:mod:`zope.interface.common.collections`, specifically
:class:`~zope.interface.common.collections.ISequence` and
:class:`~zope.interface.common.collections.IMutableSequence`. This
module is occasionally useful for its fine-grained breakdown of interfaces.

The standard library :class:`list`, :class:`tuple` and
:class:`collections.UserList`, among others, implement ``ISequence``
or ``IMutableSequence`` but *do not* implement any of the interfaces
in this module.
Úrestructuredtexté    )Ú	Interface)Úcollectionsc                   ó   — e Zd ZdZd„ Zy)ÚIMinimalSequencea×  Most basic sequence interface.

    All sequences are iterable.  This requires at least one of the
    following:

    - a `__getitem__()` method that takes a single argument; integer
      values starting at 0 must be supported, and `IndexError` should
      be raised for the first index for which there is no value, or

    - an `__iter__()` method that returns an iterator as defined in
      the Python documentation (http://docs.python.org/lib/typeiter.html).

    c                  ó   — y)z�``x.__getitem__(index) <==> x[index]``

        Declaring this interface does not specify whether `__getitem__`
        supports slice objects.N© ©Úindexs    ú@/usr/lib/python3/dist-packages/zope/interface/common/sequence.pyÚ__getitem__zIMinimalSequence.__getitem__3   ó   � ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r	   r   r   r   r   $   s   „ ñó#r   r   c                   ó   — e Zd ZdZy)ÚIFiniteSequencez[
    A sequence of bound size.

    .. versionchanged:: 5.0.0
       Extend ``ISized``
    N©r   r   r   r   r	   r   r   r   r   9   s   „ òr   r   c                   óL   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚIReadSequencea.  
    read interface shared by tuple and list

    This interface is similar to
    :class:`~zope.interface.common.collections.ISequence`, but
    requires that all instances be totally ordered. Most users
    should prefer ``ISequence``.

    .. versionchanged:: 5.0.0
       Extend ``IContainer``
    c                  ó   — y)z'``x.__contains__(item) <==> item in x``Nr	   ©Úitems    r   Ú__contains__zIReadSequence.__contains__N   r   r   c                  ó   — y)z"``x.__lt__(other) <==> x < other``Nr	   ©Úothers    r   Ú__lt__zIReadSequence.__lt__R   r   r   c                  ó   — y)z#``x.__le__(other) <==> x <= other``Nr	   r   s    r   Ú__le__zIReadSequence.__le__U   r   r   c                  ó   — y)z#``x.__eq__(other) <==> x == other``Nr	   r   s    r   Ú__eq__zIReadSequence.__eq__X   r   r   c                  ó   — y)z#``x.__ne__(other) <==> x != other``Nr	   r   s    r   Ú__ne__zIReadSequence.__ne__[   r   r   c                  ó   — y)z"``x.__gt__(other) <==> x > other``Nr	   r   s    r   Ú__gt__zIReadSequence.__gt__^   r   r   c                  ó   — y)z#``x.__ge__(other) <==> x >= other``Nr	   r   s    r   Ú__ge__zIReadSequence.__ge__a   r   r   c                  ó   — y)z#``x.__add__(other) <==> x + other``Nr	   r   s    r   Ú__add__zIReadSequence.__add__d   r   r   c                  ó   — y)z``x.__mul__(n) <==> x * n``Nr	   ©Úns    r   Ú__mul__zIReadSequence.__mul__g   r   r   c                  ó   — y)z``x.__rmul__(n) <==> n * x``Nr	   r.   s    r   Ú__rmul__zIReadSequence.__rmul__j   r   r   N)r   r   r   r   r   r    r"   r$   r&   r(   r*   r,   r0   r2   r	   r   r   r   r   A   s9   „ ñ
ò6ò1ò2ò2ò2ò1ò2ò2ò*ó+r   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚIExtendedReadSequencezFull read interface for listsc                  ó   — y)z%Return number of occurrences of valueNr	   r   s    r   ÚcountzIExtendedReadSequence.countq   r   r   c                  ó   — y)zTindex(value, [start, [stop]]) -> int

        Return first index of *value*
        Nr	   )r   Úargss     r   r   zIExtendedReadSequence.indext   r   r   N)r   r   r   r   r6   r   r	   r   r   r4   r4   n   s   „ Ù'ò4ór   r4   c                   óP   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zdd„Z	d„ Z
d	„ Zdd„Zd„ Zy
)ÚIUniqueMemberWriteSequencezAThe write contract for a sequence that may enforce unique membersc                  ó   — y)z¥``x.__setitem__(index, item) <==> x[index] = item``

        Declaring this interface does not specify whether `__setitem__`
        supports slice objects.
        Nr	   ©r   r   s     r   Ú__setitem__z&IUniqueMemberWriteSequence.__setitem__}   r   r   c                  ó   — y)zœ``x.__delitem__(index) <==> del x[index]``

        Declaring this interface does not specify whether `__delitem__`
        supports slice objects.
        Nr	   r
   s    r   Ú__delitem__z&IUniqueMemberWriteSequence.__delitem__„   r   r   c                  ó   — y)z``x.__iadd__(y) <==> x += y``Nr	   )Úys    r   Ú__iadd__z#IUniqueMemberWriteSequence.__iadd__‹   r   r   c                  ó   — y)zAppend item to endNr	   r   s    r   Úappendz!IUniqueMemberWriteSequence.appendŽ   r   r   c                  ó   — y)zInsert item before indexNr	   r<   s     r   Úinsertz!IUniqueMemberWriteSequence.insert‘   r   r   c                  ó   — y)z.Remove and return item at index (default last)Nr	   r
   s    r   ÚpopzIUniqueMemberWriteSequence.pop”   r   r   c                  ó   — y)z Remove first occurrence of valueNr	   r   s    r   Úremovez!IUniqueMemberWriteSequence.remove—   r   r   c                   ó   — y)zReverse *IN PLACE*Nr	   r	   r   r   Úreversez"IUniqueMemberWriteSequence.reverseš   r   r   Nc                  ó   — y)z3Stable sort *IN PLACE*; `cmpfunc(x, y)` -> -1, 0, 1Nr	   )Úcmpfuncs    r   ÚsortzIUniqueMemberWriteSequence.sort�   r   r   c                  ó   — y)z3Extend list by appending elements from the iterableNr	   )Úiterables    r   Úextendz!IUniqueMemberWriteSequence.extend    r   r   )éÿÿÿÿ)N)r   r   r   r   r=   r?   rB   rD   rF   rH   rJ   rL   rO   rR   r	   r   r   r:   r:   z   s9   „ ÙKòòò,ò!ò'ó=ò/ò!óBóBr   r:   c                   ó   — e Zd ZdZd„ Zy)ÚIWriteSequencez!Full write contract for sequencesc                  ó   — y)z``x.__imul__(n) <==> x *= n``Nr	   r.   s    r   Ú__imul__zIWriteSequence.__imul__¦   r   r   N)r   r   r   r   rW   r	   r   r   rU   rU   £   s
   „ Ù+ó,r   rU   c                   ó   — e Zd ZdZy)Ú	ISequencea²  
    Full sequence contract.

    New code should prefer
    :class:`~zope.interface.common.collections.IMutableSequence`.

    Compared to that interface, which is implemented by :class:`list`
    (:class:`~zope.interface.common.builtins.IList`), among others,
    this interface is missing the following methods:

        - clear

        - count

        - index

    This interface adds the following methods:

        - sort
    Nr   r	   r   r   rY   rY   ©   s   „ òr   rY   N)r   Ú__docformat__Úzope.interfacer   Úzope.interface.commonr   Ú	IIterabler   ÚISizedr   Ú
IContainerr   r4   r:   rU   rY   r	   r   r   ú<module>r`      s‰   ðñð$ #€Ý $Ý -ô#�{×,Ñ,ô #ô*�k×(Ñ(Ð*:ô ô*+�K×*Ñ*¨Oô *+ôZ
˜Mô 
ô'B ô 'BôR,Ð/ô ,ô�˜~õ r   