import Basic, Util class Mapping(Basic.Base): "anything supporting __getitem__" def __getitem__(key): """Get the value for the given key Raise a key error if the key if not in the collection. """ class QueryMapping(Mapping): def has_key(key): """Check whether the object has an item with the given key""" def get(key, default=None): """Get the value for the given key Return the default if the key is not in the collection. """ class Sized(Basic.Base): "anything supporting __len" def __len__(): """Return the number of items in the container""" class MutableMapping(Basic.Mutable): "Has __setitem__ and __delitem__" def __setitem__(key, value): """Set the value for the given key""" def __delitem__(key): """delete the value for the given key Raise a key error if the key if not in the collection.""" class EnumerableMapping(Mapping): def keys(): """Return an Sequence containing the keys in the collection The type of the IReadSequence is not specified. It could be a list or a tuple or some other type. """ class MinimalDictionary(QueryMapping, Sized, MutableMapping, EnumerableMapping): """Provide minimal dictionary-like behavior """ def values(): """Return a IReadSequence containing the values in the collection The type of the IReadSequence is not specified. It could be a list or a tuple or some other type. """ def items(): """Return a IReadSequence containing the items in the collection An item is a key-value tuple. The type of the IReadSequence is not specified. It could be a list or a tuple or some other type. """ class Sequence(Mapping): "Keys must be integers in a sequence starting at 0." class Sequential(Sequence): "Keys must be used in order" Util.assertTypeImplements(type(()), (Sequence, Sized, Basic.HashKey)) Util.assertTypeImplements(type([]), (Sequence, Sized, MutableMapping)) Util.assertTypeImplements(type({}), (Mapping, Sized, MutableMapping))