Metadata-Version: 1.0
Name: zope.app.container
Version: 3.5.6
Summary: Zope Container
Home-page: http://cheeseshop.python.org/pypi/zope.app.container
Author: Zope Corporation and Contributors
Author-email: zope-dev@zope.org
License: ZPL 2.1
Description: This package define interfaces of container components, and provides
        sample container implementations such as a BTreeContainer and
        OrderedContainer.
        
        
        Detailed Documentation
        **********************
        
        
        Containment constraints
        =======================
        
        Containment constraints allow us to express restrictions on the types
        of items that can be placed in containers or on the types of
        containers an item can be placed in.  We express these constraints in
        interfaces.  Let's define some container and item interfaces:
        
        >>> from zope.app.container.interfaces import IContainer, IContained
        >>> from zope.app.container.constraints import containers, contains
        
        >>> class IBuddyFolder(IContainer):
        ...     contains('.IBuddy')
        
        
        In this example, we used the contains function to declare that objects
        that provide IBuddyFolder can only contain items that provide IBuddy.
        Note that we used a string containing a dotted name for the IBuddy
        interface. This is because IBuddy hasn't been defined yet.  When we
        define IBuddy, we can use IBuddyFolder directly:
        
        >>> class IBuddy(IContained):
        ...     containers(IBuddyFolder)
        
        
        Now, with these interfaces in place, we can define Buddy and
        BuddyFolder classes and verify that we can put buddies in buddy
        folders:
        
        >>> from zope import interface
        
        >>> class Buddy:
        ...     interface.implements(IBuddy)
        
        >>> class BuddyFolder:
        ...     interface.implements(IBuddyFolder)
        
        >>> from zope.app.container.constraints import checkObject, checkFactory
        >>> from zope.component.factory import Factory
        
        >>> checkObject(BuddyFolder(), 'x', Buddy())
        >>> checkFactory(BuddyFolder(), 'x', Factory(Buddy))
        True
        
        If we try to use other containers or folders, we'll get errors:
        
        >>> class Container:
        ...     interface.implements(IContainer)
        
        >>> class Contained:
        ...     interface.implements(IContained)
        
        >>> checkObject(Container(), 'x', Buddy())
        ... # doctest: +ELLIPSIS
        Traceback (most recent call last):
        InvalidContainerType: ...
        
        >>> checkFactory(Container(), 'x', Factory(Buddy))
        False
        
        >>> checkObject(BuddyFolder(), 'x', Contained())
        ... # doctest: +ELLIPSIS
        Traceback (most recent call last):
        InvalidItemType: ...
        
        >>> checkFactory(BuddyFolder(), 'x', Factory(Contained))
        False
        
        In the example, we defined the container first and then the items.  We
        could have defined these in the opposite order:
        
        >>> class IContact(IContained):
        ...     containers('.IContacts')
        
        >>> class IContacts(IContainer):
        ...     contains(IContact)
        
        >>> class Contact:
        ...     interface.implements(IContact)
        
        >>> class Contacts:
        ...     interface.implements(IContacts)
        
        >>> checkObject(Contacts(), 'x', Contact())
        
        >>> checkFactory(Contacts(), 'x', Factory(Contact))
        True
        
        >>> checkObject(Contacts(), 'x', Buddy())
        ... # doctest: +ELLIPSIS
        Traceback (most recent call last):
        InvalidItemType: ...
        
        >>> checkFactory(Contacts(), 'x', Factory(Buddy))
        False
        
        
        
        
        =======
        CHANGES
        =======
        
        3.5.6 (2008-08-06)
        ------------------
        
        - no changes. Retag for correct release on PyPI
        
        3.5.5 (2008-07-27)
        ------------------
        
        - Made C code compatible with Python 2.5 on 64bit architectures.
        
        3.5.4 (2008-07-16)
        ---------------------
        
        - fixed #238579 / #163149: error with unicode traversing
        - fixed #221025 : adding menu is sorted with translated item
        by using a collator (better localized sorting)
        - fixed #227617 :
        - prevent the namechooser from failing on '+', '@' and '/'
        - added tests in the namechooser
        - be sure the name chooser returns unicode
        - fixed #175388 : the setitem's size modification is now done in setitemf:
        setting an existing item does not change the size,
        and the event subscribers should see the new size instead of the old size.
        Reimplemented the BTreeContainer so that it directly accesses the btree
        methods (removed an old #TODO)
        
        3.5.3 (2007-11-09)
        ------------------
        
        - Send ``IObjectModifiedEvent`` when changing the title through the
        ``@@contents.html`` view.
        
        This fixes https://bugs.edge.launchpad.net/zope3/+bug/98483.
        
        3.5.2 (2007-11-01)
        ------------------
        
        - Reactivated functional tests.
        
        3.5.1 (2007-10-31)
        ------------------
        
        - Resolve ``ZopeSecurityPolicy`` and ``IRolePermissionManager`` deprecation
        warning.
        
        3.5.0 (2007-10-11)
        ------------------
        
        - Updated package meta-data.
        
        3.5.0a1 (2007-06-29)
        --------------------
        
        * Updated bootstrap script to current version.
        
        * Store length of ``BTreeContainer`` in its own ``Length`` object for faster
        ``__len__`` implementation of huge containers.
        
        
        3.4.0a1 (2007-04-22)
        --------------------
        
        - Initial release as a separate project, corresponds to ``zope.app.container``
        from Zope 3.4.0a1.
        
Keywords: zope3 container
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Framework :: Zope3
