o
    gHdˆ  ã                   @   s  d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	l	m
Z
 dd
l	mZ efdfdd„Zg d¢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 dd„ deƒZG dd„ deƒZG dd„ de
ƒZG dd„ deeeƒZG dd „ d eeƒ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 d)d*„ d*eƒZG d+d,„ d,eƒZG d-d.„ d.eƒZG d/d0„ d0eeƒZG d1d2„ d2eeƒZG d3d4„ d4eeƒZ G d5d6„ d6e
ƒZ!G d7d8„ d8e!ƒZ"G d9d:„ d:e
ƒZ#G d;d<„ d<e#ƒZ$G d=d>„ d>e$ƒZ%dS )?aó  
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
é    N)ÚABCMeta)Úabc)ÚOrderedDict)ÚUserList)ÚUserDict)Ú
UserString)ÚABCInterface)Úoptional© c                 C   s:   |rt t| ƒS t| |dd|  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
   úh/var/www/html/facialservice/flask-venv/lib/python3.10/site-packages/zope/interface/common/collections.pyÚ_new_in_ver3   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 Zd ZejZedd„ ƒZdS )r   c                 C   ó   dS )z¢
        Optional method. If not provided, the interpreter will use
        ``__iter__`` or the old ``__getitem__`` protocol
        to implement ``in``.
        Nr
   ©Úotherr
   r
   r   Ú__contains__c   ó    zIContainer.__contains__N)Ú__name__Ú
__module__Ú__qualname__r   Ú	Containerr	   r1   r
   r
   r
   r   r   `   ó    r   c                   @   ó   e Zd ZejZdS )r   N)r3   r4   r5   r   ÚHashabler
   r
   r
   r   r   k   ó    
r   c                   @   r-   )r    c                   C   r.   ©z‰
        Optional method. If not provided, the interpreter will
        implement `iter` using the old ``__getitem__`` protocol.
        Nr
   r
   r
   r
   r   Ú__iter__q   r2   zIIterable.__iter__N)r3   r4   r5   r   ÚIterabler	   r<   r
   r
   r
   r   r    n   r7   r    c                   @   r8   )r!   N)r3   r4   r5   r   ÚIteratorr
   r
   r
   r   r!   x   r:   r!   c                   @   s*   e Zd Zedde ¡ fƒZedd„ ƒZdS )r(   Ú
ReversibleTc                   C   r.   ©z§
        Optional method. If this isn't present, the interpreter
        will use ``__len__`` and ``__getitem__`` to implement the
        `reversed` builtin.
        Nr
   r
   r
   r
   r   Ú__reversed__~   r2   zIReversible.__reversed__N)	r3   r4   r5   r   r    ÚgetABCr   r	   rA   r
   r
   r
   r   r(   {   s    r(   c                   @   s   e Zd Zedde ¡ fƒZdS )r   Ú	GeneratorTN)r3   r4   r5   r   r!   rB   r   r
   r
   r
   r   r   †   s    r   c                   @   r8   )r+   N)r3   r4   r5   r   ÚSizedr
   r
   r
   r   r+   ‹   r:   r+   c                   @   s*   e Zd Zedde ¡ e ¡ e ¡ fƒZdS )r   Ú
CollectionTN)	r3   r4   r5   r   r+   rB   r    r   r   r
   r
   r
   r   r   ‘   s    ÿr   c                   @   sB   e Zd ZejZefZeeu re	fndZ
edd„ ƒZedd„ ƒZdS )r)   r
   c                   C   r.   r@   r
   r
   r
   r
   r   rA   ¡   r2   zISequence.__reversed__c                   C   r.   r;   r
   r
   r
   r
   r   r<   ©   r2   zISequence.__iter__N)r3   r4   r5   r   ÚSequencer   Úextra_classesÚstrÚbytesÚ
basestringÚignored_classesr	   rA   r<   r
   r
   r
   r   r)   ˜   s    
r)   c                   @   s   e Zd ZejZefZdS )r&   N)r3   r4   r5   r   ÚMutableSequencer   rG   r
   r
   r
   r   r&   °   s    
r&   c                   @   s(   e Zd ZdZedde ¡ feefƒZ	dS )ÚIByteStringz/
    This unifies `bytes` and `bytearray`.
    Ú
ByteStringTN)
r3   r4   r5   r   r   r)   rB   rI   Ú	bytearrayr   r
   r
   r
   r   rM   µ   s    þrM   c                   @   r8   )r*   N)r3   r4   r5   r   ÚSetr
   r
   r
   r   r*   ¾   r:   r*   c                   @   r8   )r'   N)r3   r4   r5   r   Ú
MutableSetr
   r
   r
   r   r'   Â   r:   r'   c                   @   s   e Zd ZejZefZefZdS )r#   N)	r3   r4   r5   r   ÚMappingÚdictrG   r   rK   r
   r
   r
   r   r#   Æ   s    
r#   c                   @   s    e Zd ZejZeefZefZ	dS )r%   N)
r3   r4   r5   r   ÚMutableMappingrS   r   rG   r   rK   r
   r
   r
   r   r%   Ð   s    
r%   c                   @   r8   )r$   N)r3   r4   r5   r   ÚMappingViewr
   r
   r
   r   r$   Õ   r:   r$   c                   @   r8   )r   N)r3   r4   r5   r   Ú	ItemsViewr
   r
   r
   r   r   Ù   r:   r   c                   @   r8   )r"   N)r3   r4   r5   r   ÚKeysViewr
   r
   r
   r   r"   Ý   r:   r"   c                   @   r-   )r,   c                 C   r.   )z²
        Optional method. If not provided, the interpreter will use
        ``__iter__`` or the old ``__len__`` and ``__getitem__`` protocol
        to implement ``in``.
        Nr
   r/   r
   r
   r   r1   ä   r2   zIValuesView.__contains__N)r3   r4   r5   r   Ú
ValuesViewr	   r1   r
   r
   r
   r   r,   á   r7   r,   c                   @   ó   e Zd ZeddƒZdS )r   Ú	AwaitableTN©r3   r4   r5   r   r   r
   r
   r
   r   r   ì   ó    r   c                   @   rY   )r   Ú	CoroutineTNr[   r
   r
   r
   r   r   ð   r\   r   c                   @   rY   )r   ÚAsyncIterableTNr[   r
   r
   r
   r   r   ô   r\   r   c                   @   rY   )r   ÚAsyncIteratorTNr[   r
   r
   r
   r   r   ø   r\   r   c                   @   rY   )r   ÚAsyncGeneratorTNr[   r
   r
   r
   r   r   ü   r\   r   )&r   Úsysr   r   Úcollectionsr   r   r   r   Úzope.interface.commonr   r	   r   Ú__all__r   r   r    r!   r(   r   r+   r   r)   r&   rM   r*   r'   r#   r%   r$   r   r"   r,   r   r   r   r   r   r
   r
   r
   r   Ú<module>   sV   	
þ
þÿ	
