
    cR              	       r   d Z ddlmZ ddlmZ ddlmZ  G d de          Z G d dej	        e          Z
 G d	 d
e          Z G d dej        e
          Z G d dee          Z G d de          Z G d de          Z G d de          Z G d de          Z G 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)PYTHON2)collectionsc                       e Zd ZdZd ZdS )IItemMappingz%Simplest readable mapping object
    c                     dS )z`Get a value for a key

        A `KeyError` is raised if there is no value for the key.
        N keys    =lib/python3.11/site-packages/zope/interface/common/mapping.py__getitem__zIItemMapping.__getitem__'             N)__name__
__module____qualname____doc__r   r	   r   r   r   r   #   s-             r   r   c                        e Zd ZdZddZd ZdS )IReadMappingz^
    Basic mapping interface.

    .. versionchanged:: 5.0.0
       Extend ``IContainer``
    Nc                     dS )zaGet a value for a key

        The default is returned if there is no value for the key.
        Nr	   r   defaults     r   getzIReadMapping.get6   r   r   c                     dS )z$Tell if a key exists in the mapping.Nr	   r
   s    r   __contains__zIReadMapping.__contains__<   r   r   N)r   r   r   r   r   r   r	   r   r   r   r   .   sA            3 3 3 3 3r   r   c                       e Zd ZdZd Zd ZdS )IWriteMappingz!Mapping methods for changing datac                     dS )z.Delete a value from the mapping using the key.Nr	   r
   s    r   __delitem__zIWriteMapping.__delitem__D   r   r   c                     dS )zSet a new item in the mapping.Nr	   )r   values     r   __setitem__zIWriteMapping.__setitem__G   r   r   N)r   r   r   r   r    r#   r	   r   r   r   r   A   s8        ++= = =- - - - -r   r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )IEnumerableMappingzp
    Mapping objects whose items can be enumerated.

    .. versionchanged:: 5.0.0
       Extend ``ISized``
    c                      dS )z/Return the keys of the mapping object.
        Nr	   r	   r   r   keyszIEnumerableMapping.keysS   r   r   c                      dS )z?Return an iterator for the keys of the mapping object.
        Nr	   r	   r   r   __iter__zIEnumerableMapping.__iter__W   r   r   c                      dS )z1Return the values of the mapping object.
        Nr	   r	   r   r   valueszIEnumerableMapping.values[   r   r   c                      dS )z0Return the items of the mapping object.
        Nr	   r	   r   r   itemszIEnumerableMapping.items_   r   r   N)r   r   r   r   r'   r)   r+   r-   r	   r   r   r%   r%   K   sZ                   r   r%   c                       e Zd ZdZdS )IMappingz Simple mapping interface Nr   r   r   r   r	   r   r   r/   r/   c   s        $$$$r   r/   c                   ,    e Zd ZdZerd Zd Zd ZdS dS )IIterableMappingzA mapping that has distinct methods for iterating
    without copying.

    On Python 2, a `dict` has these methods, but on Python 3
    the methods defined in `IEnumerableMapping` already iterate
    without copying.
    c                      dS )z-iterate over keys; equivalent to ``__iter__``Nr	   r	   r   r   iterkeyszIIterableMapping.iterkeysp   r   r   c                      dS )ziterate over valuesNr	   r	   r   r   
itervalueszIIterableMapping.itervaluess   r   r   c                      dS )ziterate over itemsNr	   r	   r   r   	iteritemszIIterableMapping.iteritemsv   r   r   N)r   r   r   r   PY2r4   r6   r8   r	   r   r   r2   r2   f   s_           !	< 	< 	<	" 	" 	"	! 	! 	! 	! 	!! !r   r2   c                       e Zd ZdZd ZdS )IClonableMappingzSSomething that can produce a copy of itself.

    This is available in `dict`.
    c                      dS )zreturn copy of dictNr	   r	   r   r   copyzIClonableMapping.copy   r   r   N)r   r   r   r   r=   r	   r   r   r;   r;   y   s-         
    r   r;   c                        e Zd ZdZerd ZdS dS )IExtendedReadMappingz
    Something with a particular method equivalent to ``__contains__``.

    On Python 2, `dict` provides this method, but it was removed
    in Python 3.
    c                     dS )zCTell if a key exists in the mapping; equivalent to ``__contains__``Nr	   r
   s    r   has_keyzIExtendedReadMapping.has_key   r   r   N)r   r   r   r   r9   rA   r	   r   r   r?   r?      sI           V	V 	V 	V 	V 	VV Vr   r?   c                   4    e Zd ZdZd Zd ZddZddZd ZdS )	IExtendedWriteMappingzHAdditional mutation methods.

    These are all provided by `dict`.
    c                      dS )zdelete all itemsNr	   r	   r   r   clearzIExtendedWriteMapping.clear   r   r   c                     dS )z0 Update D from E: for k in E.keys(): D[k] = E[k]Nr	   )ds    r   updatezIExtendedWriteMapping.update   r   r   Nc                     dS )z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in DNr	   r   s     r   
setdefaultz IExtendedWriteMapping.setdefault   r   r   c                     dS )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   s     r   popzIExtendedWriteMapping.pop   r   r   c                      dS )zeremove and return some (key, value) pair as a
        2-tuple; but raise KeyError if mapping is emptyNr	   r	   r   r   popitemzIExtendedWriteMapping.popitem   r   r   r   )	r   r   r   r   rE   rH   rJ   rM   rO   r	   r   r   rC   rC      sw         
  ; ; ;K K K K	 	 	 	; ; ; ; ;r   rC   c                       e Zd ZdZdS )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``
    Nr0   r	   r   r   rQ   rQ      s        	 	 	 	r   rQ   N)r   zope.interfacer   zope.interface._compatr   r9   zope.interface.commonr   r   
IContainerr   r   ISizedr%   r/   r2   r;   r?   rC   IMutableMappingrQ   r	   r   r   <module>rX      s   " % $ $ $ $ $ 1 1 1 1 1 1 - - - - - -    9   3 3 3 3 3;)< 3 3 3&- - - - -I - - -    +\   0% % % % %}0 % % %! ! ! ! !) ! ! !&    y   
V 
V 
V 
V 
V+ 
V 
V 
V; ; ; ; ;M ; ; ;<    #35Ex    r   