§
    Çtºf›  ã                   ó  — 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dS )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dS )Ú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                 ó   — dS )z�``x.__getitem__(index) <==> x[index]``

        Declaring this interface does not specify whether `__getitem__`
        supports slice objects.N© ©Úindexs    ú]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/zope/interface/common/sequence.pyÚ__getitem__zIMinimalSequence.__getitem__4   ó   € € € ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r	   r   r   r   r   %   s-   € € € € € ðð ð#ð #ð #ð #ð #r   r   c                   ó   — e Zd ZdZdS )ÚIFiniteSequencez[
    A sequence of bound size.

    .. versionchanged:: 5.0.0
       Extend ``ISized``
    N©r   r   r   r   r	   r   r   r   r   ;   s   € € € € € ðð ð ð r   r   c                   óN   — 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dS )Ú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                 ó   — dS )z'``x.__contains__(item) <==> item in x``Nr	   ©Úitems    r   Ú__contains__zIReadSequence.__contains__Q   r   r   c                 ó   — dS )z"``x.__lt__(other) <==> x < other``Nr	   ©Úothers    r   Ú__lt__zIReadSequence.__lt__U   r   r   c                 ó   — dS )z#``x.__le__(other) <==> x <= other``Nr	   r   s    r   Ú__le__zIReadSequence.__le__X   r   r   c                 ó   — dS )z#``x.__eq__(other) <==> x == other``Nr	   r   s    r   Ú__eq__zIReadSequence.__eq__[   r   r   c                 ó   — dS )z#``x.__ne__(other) <==> x != other``Nr	   r   s    r   Ú__ne__zIReadSequence.__ne__^   r   r   c                 ó   — dS )z"``x.__gt__(other) <==> x > other``Nr	   r   s    r   Ú__gt__zIReadSequence.__gt__a   r   r   c                 ó   — dS )z#``x.__ge__(other) <==> x >= other``Nr	   r   s    r   Ú__ge__zIReadSequence.__ge__d   r   r   c                 ó   — dS )z#``x.__add__(other) <==> x + other``Nr	   r   s    r   Ú__add__zIReadSequence.__add__g   r   r   c                 ó   — dS )z``x.__mul__(n) <==> x * n``Nr	   ©Úns    r   Ú__mul__zIReadSequence.__mul__j   r   r   c                 ó   — dS )z``x.__rmul__(n) <==> n * x``Nr	   r.   s    r   Ú__rmul__zIReadSequence.__rmul__m   r   r   N)r   r   r   r   r   r    r"   r$   r&   r(   r*   r,   r0   r2   r	   r   r   r   r   D   s´   € € € € € ð
ð 
ð6ð 6ð 6ð1ð 1ð 1ð2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ð1ð 1ð 1ð2ð 2ð 2ð2ð 2ð 2ð*ð *ð *ð+ð +ð +ð +ð +r   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚIExtendedReadSequencezFull read interface for listsc                 ó   — dS )z%Return number of occurrences of valueNr	   r   s    r   ÚcountzIExtendedReadSequence.countt   r   r   c                 ó   — dS )zTindex(value, [start, [stop]]) -> int

        Return first index of *value*
        Nr	   )r   Úargss     r   r   zIExtendedReadSequence.indexw   r   r   N)r   r   r   r   r6   r   r	   r   r   r4   r4   q   s8   € € € € € Ø'Ð'ð4ð 4ð 4ðð ð ð ð r   r4   c                   óR   — 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dS )ÚIUniqueMemberWriteSequencezAThe write contract for a sequence that may enforce unique membersc                 ó   — dS )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                 ó   — dS )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                 ó   — dS )z``x.__iadd__(y) <==> x += y``Nr	   )Úys    r   Ú__iadd__z#IUniqueMemberWriteSequence.__iadd__�   r   r   c                 ó   — dS )zAppend item to endNr	   r   s    r   Úappendz!IUniqueMemberWriteSequence.append’   r   r   c                 ó   — dS )zInsert item before indexNr	   r<   s     r   Úinsertz!IUniqueMemberWriteSequence.insert•   r   r   éÿÿÿÿc                 ó   — dS )z.Remove and return item at index (default last)Nr	   r
   s    r   ÚpopzIUniqueMemberWriteSequence.pop˜   r   r   c                 ó   — dS )z Remove first occurrence of valueNr	   r   s    r   Úremovez!IUniqueMemberWriteSequence.remove›   r   r   c                  ó   — dS )zReverse *IN PLACE*Nr	   r	   r   r   Úreversez"IUniqueMemberWriteSequence.reversež   r   r   Nc                 ó   — dS )z3Stable sort *IN PLACE*; `cmpfunc(x, y)` -> -1, 0, 1Nr	   )Úcmpfuncs    r   ÚsortzIUniqueMemberWriteSequence.sort¡   r   r   c                 ó   — dS )z3Extend list by appending elements from the iterableNr	   )Úiterables    r   Úextendz!IUniqueMemberWriteSequence.extend¤   r   r   )rG   )N)r   r   r   r   r=   r?   rB   rD   rF   rI   rK   rM   rP   rS   r	   r   r   r:   r:   ~   sÃ   € € € € € ØKÐKðð ð ðð ð ð,ð ,ð ,ð!ð !ð !ð'ð 'ð 'ð=ð =ð =ð =ð/ð /ð /ð!ð !ð !ðBð Bð Bð BðBð Bð Bð Bð Br   r:   c                   ó   — e Zd ZdZd„ ZdS )ÚIWriteSequencez!Full write contract for sequencesc                 ó   — dS )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dS )Ú	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ð 'Bð 'Bð 'B ñ 'Bô 'Bð 'BðT,ð ,ð ,ð ,ð ,Ð/ñ ,ô ,ð ,ðð ð ð ð �˜~ñ ô ð ð ð r   