Source code for zope.interface.common.mapping

##############################################################################
#
# Copyright (c) 2001, 2002 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Mapping Interfaces.

Importing this module does *not* mark any standard classes
as implementing any of these interfaces.
"""
from zope.interface import Interface

[docs]class IItemMapping(Interface): """Simplest readable mapping object """ def __getitem__(key): """Get a value for a key A `KeyError` is raised if there is no value for the key. """
[docs]class IReadMapping(IItemMapping): """Basic mapping interface """ def get(key, default=None): """Get a value for a key The default is returned if there is no value for the key. """ def __contains__(key): """Tell if a key exists in the mapping."""
[docs]class IWriteMapping(Interface): """Mapping methods for changing data""" def __delitem__(key): """Delete a value from the mapping using the key.""" def __setitem__(key, value): """Set a new item in the mapping."""
[docs]class IEnumerableMapping(IReadMapping): """Mapping objects whose items can be enumerated. """ def keys(): """Return the keys of the mapping object. """ def __iter__(): """Return an iterator for the keys of the mapping object. """ def values(): """Return the values of the mapping object. """ def items(): """Return the items of the mapping object. """ def __len__(): """Return the number of items. """
[docs]class IMapping(IWriteMapping, IEnumerableMapping): ''' Simple mapping interface '''
[docs]class IIterableMapping(IEnumerableMapping): """A 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. """ def iterkeys(): "iterate over keys; equivalent to ``__iter__``" def itervalues(): "iterate over values" def iteritems(): "iterate over items"
[docs]class IClonableMapping(Interface): """Something that can produce a copy of itself. This is available in `dict`. """ def copy(): "return copy of dict"
[docs]class IExtendedReadMapping(IIterableMapping): """ Something with a particular method equivalent to ``__contains__``. On Python 2, `dict` provides this method, but it was removed in Python 3. """ def has_key(key): """Tell if a key exists in the mapping; equivalent to ``__contains__``"""
[docs]class IExtendedWriteMapping(IWriteMapping): """Additional mutation methods. These are all provided by `dict`. """ def clear(): "delete all items" def update(d): " Update D from E: for k in E.keys(): D[k] = E[k]" def setdefault(key, default=None): "D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D" def pop(k, *args): """Remove specified key and return the corresponding value. ``*args`` may contain a single default value, or may not be supplied. If key is not found, default is returned if given, otherwise `KeyError` is raised""" def popitem(): """remove and return some (key, value) pair as a 2-tuple; but raise KeyError if mapping is empty"""
[docs]class IFullMapping( IExtendedReadMapping, IExtendedWriteMapping, IClonableMapping, IMapping): ''' Full mapping interface ''' # IMapping included so tests for IMapping
# succeed with IFullMapping