File: //usr/lib/python3/dist-packages/zope/interface/common/__pycache__/collections.cpython-310.pyc
o
$
x`� � @ s� d Z ddlmZ ddlZddlmZ zddlmZ W n
ey' ddlZY nw ddlmZ zddlm Z ddlm
Z
dd lmZ W n ey] ddl m Z dd
l
mZ
dd lmZ Y nw ddl
mZ ddl
mZ dd
lmZ ddlmZ ejdd� dkZejdd� dkZefdfdd�Zg d�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG d d!� d!e�ZG d"d#� d#e�Z G d$d%� d%e ee�Z!G d&d'� d'ee!�Z"G d(d)� d)e"�Z#G d*d+� d+e"�Z$G d,d-� d-e!�Z%G d.d/� d/e%�Z&G d0d1� d1e!�Z'G d2d3� d3e'�Z(G d4d5� d5e �Z)G d6d7� d7e)e%�Z*G d8d9� d9e)e%�Z+G d:d;� d;e)e!�Z,G d<d=� d=e�Z-G d>d?� d?e-�Z.G d@dA� dAe�Z/G dBdC� dCe/�Z0G dDdE� dEe0�Z1dS )Fa�
Interface definitions paralleling the abstract base classes defined in
:mod:`collections.abc`.
After this module is imported, the standard library types will declare
that they implement the appropriate interface. While most standard
library types will properly implement that interface (that
is, ``verifyObject(ISequence, list()))`` will pass, for example), a few might not:
- `memoryview` doesn't feature all the defined methods of
``ISequence`` such as ``count``; it is still declared to provide
``ISequence`` though.
- `collections.deque.pop` doesn't accept the ``index`` argument of
`collections.abc.MutableSequence.pop`
- `range.index` does not accept the ``start`` and ``stop`` arguments.
.. versionadded:: 5.0.0
� )�absolute_importN)�ABCMeta)�abc)�OrderedDict)�UserList)�UserDict)�
UserString)�IterableUserDict)�PYTHON2)�PYTHON3)�ABCInterface)�optional� )� � )r � � c C s: |rt t| �S t| |dd| i�}|D ]}|�|� q|S )N�__doc__z4The ABC %s is not defined in this version of Python.)�getattrr r �register)�name�ver�bases_if_missing�register_if_missing�missing�cr r �C/usr/lib/python3/dist-packages/zope/interface/common/collections.py�_new_in_verJ s
��r )�IAsyncGenerator�IAsyncIterable�IAsyncIterator�
IAwaitable�ICollection�
IContainer�
ICoroutine�
IGenerator� IHashable�
IItemsView� IIterable� IIterator� IKeysView�IMapping�IMappingView�IMutableMapping�IMutableSequence�IMutableSet�IReversible� ISequence�ISet�ISized�IValuesViewc @ � e Zd ZejZedd� �ZdS )r# c C � dS )z�
Optional method. If not provided, the interpreter will use
``__iter__`` or the old ``__getitem__`` protocol
to implement ``in``.
Nr ��otherr r r �__contains__z � zIContainer.__contains__N)�__name__�
__module__�__qualname__r � Containerr
r9 r r r r r# w � r# c @ � e Zd ZejZdS )r&