o
    gHdE                     @   s   d Z ddlmZ ddlmZ G dd deZG dd dejeZG dd	 d	eZG d
d dej	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jeeeeZdS )ah  
Mapping 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.IMapping` and
:class:`~zope.interface.common.collections.IMutableMapping`. This
module is occasionally useful for its extremely fine grained breakdown
of interfaces.

The standard library :class:`dict` and :class:`collections.UserDict`
implement ``IMutableMapping``, but *do not* implement any of the
interfaces in this module.
    )	Interface)collectionsc                   @      e Zd ZdZdd ZdS )IItemMappingz%Simplest readable mapping object
    c                 C      dS )z`Get a value for a key

        A `KeyError` is raised if there is no value for the key.
        N keyr   r   d/var/www/html/facialservice/flask-venv/lib/python3.10/site-packages/zope/interface/common/mapping.py__getitem__&       zIItemMapping.__getitem__N)__name__
__module____qualname____doc__r   r   r   r   r
   r   "   s    r   c                   @   s"   e Zd ZdZdddZdd ZdS )IReadMappingz^
    Basic mapping interface.

    .. versionchanged:: 5.0.0
       Extend ``IContainer``
    Nc                 C   r   )zaGet a value for a key

        The default is returned if there is no value for the key.
        Nr   r	   defaultr   r   r
   get5   r   zIReadMapping.getc                 C   r   )z$Tell if a key exists in the mapping.Nr   r   r   r   r
   __contains__;   r   zIReadMapping.__contains__N)r   r   r   r   r   r   r   r   r   r
   r   -   s    
r   c                   @   s    e Zd ZdZdd Zdd ZdS )IWriteMappingz!Mapping methods for changing datac                 C   r   )z.Delete a value from the mapping using the key.Nr   r   r   r   r
   __delitem__C   r   zIWriteMapping.__delitem__c                 C   r   )zSet a new item in the mapping.Nr   )r	   valuer   r   r
   __setitem__F   r   zIWriteMapping.__setitem__N)r   r   r   r   r   r   r   r   r   r
   r   @   s    r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )IEnumerableMappingzp
    Mapping objects whose items can be enumerated.

    .. versionchanged:: 5.0.0
       Extend ``ISized``
    c                   C   r   )z/Return the keys of the mapping object.
        Nr   r   r   r   r
   keysR   r   zIEnumerableMapping.keysc                   C   r   )z?Return an iterator for the keys of the mapping object.
        Nr   r   r   r   r
   __iter__V   r   zIEnumerableMapping.__iter__c                   C   r   )z1Return the values of the mapping object.
        Nr   r   r   r   r
   valuesZ   r   zIEnumerableMapping.valuesc                   C   r   )z0Return the items of the mapping object.
        Nr   r   r   r   r
   items^   r   zIEnumerableMapping.itemsN)r   r   r   r   r   r   r   r   r   r   r   r
   r   J   s    r   c                   @      e Zd ZdZdS )IMappingz Simple mapping interface Nr   r   r   r   r   r   r   r
   r!   b       r!   c                   @   r    )IIterableMappingzLA mapping that has distinct methods for iterating
    without copying.

    Nr"   r   r   r   r
   r$   e   r#   r$   c                   @   r   )IClonableMappingzSSomething that can produce a copy of itself.

    This is available in `dict`.
    c                   C   r   )zreturn copy of dictNr   r   r   r   r
   copyr   r   zIClonableMapping.copyN)r   r   r   r   r&   r   r   r   r
   r%   l   s    r%   c                   @   r    )IExtendedReadMappingz
    Something with a particular method equivalent to ``__contains__``.

    On Python 2, `dict` provided the ``has_key`` method, but it was removed
    in Python 3.
    Nr"   r   r   r   r
   r'   u   r#   r'   c                   @   s<   e Zd ZdZdd Zdd ZdddZdd	d
Zdd ZdS )IExtendedWriteMappingzHAdditional mutation methods.

    These are all provided by `dict`.
    c                   C   r   )zdelete all itemsNr   r   r   r   r
   clear   r   zIExtendedWriteMapping.clearc                 C   r   )z0 Update D from E: for k in E.keys(): D[k] = E[k]Nr   )dr   r   r
   update   r   zIExtendedWriteMapping.updateNc                 C   r   )z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in DNr   r   r   r   r
   
setdefault   r   z IExtendedWriteMapping.setdefaultc                 C   r   )a  
        pop(k[,default]) -> value

        Remove specified key and return the corresponding value.

        If key is not found, *default* is returned if given, otherwise
        `KeyError` is raised. Note that *default* must not be passed by
        name.
        Nr   )kr   r   r   r
   pop   r   zIExtendedWriteMapping.popc                   C   r   )zeremove and return some (key, value) pair as a
        2-tuple; but raise KeyError if mapping is emptyNr   r   r   r   r
   popitem   r   zIExtendedWriteMapping.popitemr   )	r   r   r   r   r)   r+   r,   r.   r/   r   r   r   r
   r(   ~   s    

r(   c                   @   r    )IFullMappinga$  
    Full mapping interface.

    Most uses of this interface should instead use
    :class:`~zope.interface.commons.collections.IMutableMapping` (one of the
    bases of this interface). The required methods are the same.

    .. versionchanged:: 5.0.0
       Extend ``IMutableMapping``
    Nr"   r   r   r   r
   r0      s    r0   N)r   zope.interfacer   zope.interface.commonr   r   
IContainerr   r   ISizedr   r!   r$   r%   r'   r(   IMutableMappingr0   r   r   r   r
   <module>   s    
		
