+
    -i                        R t Rt^ RIHt ^ RIHt  ! R R]P                  4      t ! R R]P                  ]4      t	 ! R R	]P                  ]	4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]]4      tR# )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                   *   a  ] tR t^%t o RtR tRtV tR# )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                    R# )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__IMinimalSequence.__getitem__4           r   N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classdictcell____classdict__s   @r   r   r   %   s     # #r   r   c                       ] tR t^;tRtRtR# )IFiniteSequencezK
A sequence of bound size.

.. versionchanged:: 5.0.0
   Extend ``ISized``
r   Nr   r   r   r   r   r   r   r   r   r   r   ;   s    r   r   c                   `   a  ] tR t^Dt o RtR tR tR tR tR t	R t
R tR	 tR
 tR tRtV tR# )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                    R# )z'``x.__contains__(item) <==> item in x``Nr   items   &r   __contains__IReadSequence.__contains__Q   r   r   c                    R# )z"``x.__lt__(other) <==> x < other``Nr   others   &r   __lt__IReadSequence.__lt__U   r   r   c                    R# )z#``x.__le__(other) <==> x <= other``Nr   r$   s   &r   __le__IReadSequence.__le__X   r   r   c                    R# )z#``x.__eq__(other) <==> x == other``Nr   r$   s   &r   __eq__IReadSequence.__eq__[   r   r   c                    R# )z#``x.__ne__(other) <==> x != other``Nr   r$   s   &r   __ne__IReadSequence.__ne__^   r   r   c                    R# )z"``x.__gt__(other) <==> x > other``Nr   r$   s   &r   __gt__IReadSequence.__gt__a   r   r   c                    R# )z#``x.__ge__(other) <==> x >= other``Nr   r$   s   &r   __ge__IReadSequence.__ge__d   r   r   c                    R# )z#``x.__add__(other) <==> x + other``Nr   r$   s   &r   __add__IReadSequence.__add__g   r   r   c                    R# )z``x.__mul__(n) <==> x * n``Nr   ns   &r   __mul__IReadSequence.__mul__j   r   r   c                    R# )z``x.__rmul__(n) <==> n * x``Nr   r;   s   &r   __rmul__IReadSequence.__rmul__m   r   r   r   N)r   r   r   r   r   r!   r&   r)   r,   r/   r2   r5   r8   r=   r@   r   r   r   s   @r   r   r   D   sA     
61222122*+ +r   r   c                   0   a  ] tR t^qt o RtR tR tRtV tR# )IExtendedReadSequencezFull read interface for listsc                    R# )z%Return number of occurrences of valueNr   r   s   &r   countIExtendedReadSequence.countt   r   r   c                    R# )zDindex(value, [start, [stop]]) -> int

Return first index of *value*
Nr   )r    argss   &*r   r
   IExtendedReadSequence.indexw   r   r   r   N)	r   r   r   r   r   rE   r
   r   r   r   s   @r   rC   rC   q   s     '4 r   rC   c                   h   a  ] tR t^~t o RtR tR tR tR tR t	RR lt
R tR	 tRR ltR tRtV tR
# )IUniqueMemberWriteSequencezAThe write contract for a sequence that may enforce unique membersc                    R# )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__&IUniqueMemberWriteSequence.__setitem__   r   r   c                    R# )z``x.__delitem__(index) <==> del x[index]``

Declaring this interface does not specify whether `__delitem__`
supports slice objects.
Nr   r	   s   &r   __delitem__&IUniqueMemberWriteSequence.__delitem__   r   r   c                    R# )z``x.__iadd__(y) <==> x += y``Nr   )ys   &r   __iadd__#IUniqueMemberWriteSequence.__iadd__   r   r   c                    R# )zAppend item to endNr   r   s   &r   append!IUniqueMemberWriteSequence.append   r   r   c                    R# )zInsert item before indexNr   rM   s   &&r   insert!IUniqueMemberWriteSequence.insert   r   r   c                    R# )z.Remove and return item at index (default last)Nr   r	   s   &r   popIUniqueMemberWriteSequence.pop   r   r   c                    R# )z Remove first occurrence of valueNr   r   s   &r   remove!IUniqueMemberWriteSequence.remove   r   r   c                     R# )zReverse *IN PLACE*Nr   r   r   r   reverse"IUniqueMemberWriteSequence.reverse   r   r   Nc                    R# )z3Stable sort *IN PLACE*; `cmpfunc(x, y)` -> -1, 0, 1Nr   )cmpfuncs   &r   sortIUniqueMemberWriteSequence.sort   r   r   c                    R# )z3Extend list by appending elements from the iterableNr   )iterables   &r   extend!IUniqueMemberWriteSequence.extend   r   r   r   ))N)r   r   r   r   r   rN   rQ   rU   rX   r[   r^   ra   rd   rh   rl   r   r   r   s   @r   rK   rK   ~   sB     K,!'=/!BB Br   rK   c                   *   a  ] tR t^t o RtR tRtV tR# )IWriteSequencez!Full write contract for sequencesc                    R# )z``x.__imul__(n) <==> x *= n``Nr   r;   s   &r   __imul__IWriteSequence.__imul__   r   r   r   N)r   r   r   r   r   rr   r   r   r   s   @r   rp   rp      s     +, ,r   rp   c                       ] tR t^tRtRtR# )	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
r   Nr   r   r   r   ru   ru      s    r   ru   N)r   __docformat__zope.interfacer   zope.interface.commonr   	IIterabler   ISizedr   
IContainerr   rC   rK   rp   ru   r   r   r   <module>r|      s   $ # $ -#{,, #,k((*: *+K**O *+Z
M 
'B 'BT,/ ,~ r   