B
    `R                 @   s   d Z ddlm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)PYTHON2)collectionsc               @   s   e Zd ZdZdd ZdS )IItemMappingz%Simplest readable mapping object
    c             C   s   dS )z`Get a value for a key

        A `KeyError` is raised if there is no value for the key.
        N )keyr   r   e/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/zope/interface/common/mapping.py__getitem__'   s    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   s   dS )zaGet a value for a key

        The default is returned if there is no value for the key.
        Nr   )r   defaultr   r   r   get6   s    zIReadMapping.getc             C   s   dS )z$Tell if a key exists in the mapping.Nr   )r   r   r   r   __contains__<   s    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   s   dS )z.Delete a value from the mapping using the key.Nr   )r   r   r   r   __delitem__D   s    zIWriteMapping.__delitem__c             C   s   dS )zSet a new item in the mapping.Nr   )r   valuer   r   r   __setitem__G   s    zIWriteMapping.__setitem__N)r
   r   r   r   r   r   r   r   r   r   r   A   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   s   dS )z/Return the keys of the mapping object.
        Nr   r   r   r   r   keysS   s    zIEnumerableMapping.keysc               C   s   dS )z?Return an iterator for the keys of the mapping object.
        Nr   r   r   r   r   __iter__W   s    zIEnumerableMapping.__iter__c               C   s   dS )z1Return the values of the mapping object.
        Nr   r   r   r   r   values[   s    zIEnumerableMapping.valuesc               C   s   dS )z0Return the items of the mapping object.
        Nr   r   r   r   r   items_   s    zIEnumerableMapping.itemsN)r
   r   r   r   r   r   r   r   r   r   r   r   r   K   s
   r   c               @   s   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   c               @   s,   e Zd ZdZer(dd Zdd Zdd Z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               C   s   dS )z-iterate over keys; equivalent to ``__iter__``Nr   r   r   r   r   iterkeysp   s    zIIterableMapping.iterkeysc               C   s   dS )ziterate over valuesNr   r   r   r   r   
itervaluess   s    zIIterableMapping.itervaluesc               C   s   dS )ziterate over itemsNr   r   r   r   r   	iteritemsv   s    zIIterableMapping.iteritemsN)r
   r   r   r   PY2r   r   r   r   r   r   r   r   f   s
   r   c               @   s   e Zd ZdZdd ZdS )IClonableMappingzSSomething that can produce a copy of itself.

    This is available in `dict`.
    c               C   s   dS )zreturn copy of dictNr   r   r   r   r   copy   s    zIClonableMapping.copyN)r
   r   r   r   r"   r   r   r   r   r!   y   s   r!   c               @   s   e Zd ZdZerdd Z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             C   s   dS )zCTell if a key exists in the mapping; equivalent to ``__contains__``Nr   )r   r   r   r   has_key   s    zIExtendedReadMapping.has_keyN)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ddZdd	d
Zdd ZdS )IExtendedWriteMappingzHAdditional mutation methods.

    These are all provided by `dict`.
    c               C   s   dS )zdelete all itemsNr   r   r   r   r   clear   s    zIExtendedWriteMapping.clearc             C   s   dS )z0 Update D from E: for k in E.keys(): D[k] = E[k]Nr   )dr   r   r   update   s    zIExtendedWriteMapping.updateNc             C   s   dS )z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in DNr   )r   r   r   r   r   
setdefault   s    z IExtendedWriteMapping.setdefaultc             C   s   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   r   r   r   pop   s    	zIExtendedWriteMapping.popc               C   s   dS )zeremove and return some (key, value) pair as a
        2-tuple; but raise KeyError if mapping is emptyNr   r   r   r   r   popitem   s    zIExtendedWriteMapping.popitem)N)N)	r
   r   r   r   r&   r(   r)   r+   r,   r   r   r   r   r%      s   

r%   c               @   s   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``
    N)r
   r   r   r   r   r   r   r   r-      s   r-   N)r   Zzope.interfacer   Zzope.interface._compatr   r    Zzope.interface.commonr   r   Z
IContainerr   r   ZISizedr   r   r   r!   r#   r%   ZIMutableMappingr-   r   r   r   r   <module>   s   
	
