Skip to main content

Zope Container

Project description

This package define interfaces of container components, and provides container implementations such as a BTreeContainer and OrderedContainer, as well as the base class used by zope.site.folder for the Folder implementation.

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.container.interfaces import IContainer
>>> from zope.location.interfaces import IContained
>>> from zope.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.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.10.1 (2009-12-29)

  • Moved zope.copypastemove related tests into that package.

  • Removed no longer used zcml prefix from the configure file.

  • Stop importing DocTestSuite from zope.testing.doctestunit. Fixes compatibility problems with zope.testing 3.8.4.

3.10.0 (2009-12-15)

  • Break testing dependency on zope.app.testing.

  • Break testing dependency on zope.app.dependable by moving the code and tests into that package.

  • Import ISite from zope.component after it was moved there from zope.location.

3.9.1 (2009-10-18)

  • Rerelease 3.9.0 as it had a broken Windows 2.6 egg.

  • Marked as part of the ZTK.

3.9.0 (2009-08-28)

  • Previous releases should be versioned 3.9.0 as they are not pure bugfix releases and worth a “feature” release, increasing feature version.

    Packages that depend on any changes introduced in version 3.8.2 or 3.8.3 should depend on version 3.9 or greater.

3.8.3 (2009-08-27)

  • Move IXMLRPCPublisher ZCML registrations for containers from zope.app.publisher.xmlrpc to zope.container for now.

3.8.2 (2009-05-17)

  • Rid ourselves of IContained interface. This interface was moved to zope.location.interfaces. A b/w compat import still exists to keep old code running. Depend on zope.location>=3.5.4.

  • Rid ourselves of the implementations of IObjectMovedEvent, IObjectAddedEvent, IObjectRemovedEvent interfaces and ObjectMovedEvent, ObjectAddedEvent and ObjectRemovedEvent classes. B/w compat imports still exist. All of these were moved to zope.lifecycleevent. Depend on zope.lifecycleevent>=3.5.2.

  • Fix a bug in OrderedContainer where trying to set the value for a key that already exists (duplication error) would actually delete the key from the order, leaving a dangling reference.

  • Partially break dependency on zope.traversing by disusing zope.traversing.api.getPath in favor of using ILocationInfo(object).getPath(). The rest of the runtime dependencies on zope.traversing are currently interface dependencies.

  • Break runtime dependency on zope.app.dependable by using a zcml condition on the qsubscriber ZCML directive that registers the CheckDependency handler for IObjectRemovedEvent. If zope.app.dependable is not installed, this subscriber will never be registered. zope.app.dependable is now a testing dependency only.

3.8.1 (2009-04-03)

  • Fixed misspackaged 3.8.0

3.8.0 (2009-04-03)

  • Change configure.zcml to not depend on zope.app.component. Fixes: https://bugs.launchpad.net/bugs/348329

  • Moved the declaration of IOrderedContainer.updateOrder to a new, basic IOrdered interface and let IOrderedContainer inherit it. This allows easier reuse of the declaration.

3.7.2 (2009-03-12)

  • Fix: added missing ComponentLookupError, missing since revision 95429 and missing in last release.

  • Adapt to the move of IDefaultViewName from zope.component.interfaces to zope.publisher.interfaces.

  • Add support for reserved names for containers. To specify reserved names for some container, you need to provide an adapter from the container to the zope.container.interfaces.IReservedNames interface. The default NameChooser is now also aware of reserved names.

3.7.1 (2009-02-05)

  • Raise more “Pythonic” errors from __setitem__, losing the dependency on zope.exceptions:

    o zope.exceptions.DuplicationError -> KeyError

    o zope.exceptions.UserError -> ValueError

  • Moved import of IBroken interface to use new zope.broken package, which has no dependencies beyond zope.interface.

  • Made test part pull in the extra test requirements of this package.

  • Split the z3c.recipe.compattest configuration out into a new file, compat.cfg, to reduce the burden of doing standard unit tests.

  • Stripped out bogus develop eggs from buildout.cfg.

3.7.0 (2009-01-31)

  • Split this package off zope.app.container. This package is intended to have far less dependencies than zope.app.container.

  • This package also contains the container implementation that used to be in zope.app.folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zope.container-3.10.1.zip (147.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

zope.container-3.10.1-py2.6-win-amd64.egg (124.9 kB view details)

Uploaded Egg

zope.container-3.10.1-py2.6-win32.egg (124.1 kB view details)

Uploaded Egg

zope.container-3.10.1-py2.5-win32.egg (124.0 kB view details)

Uploaded Egg

zope.container-3.10.1-py2.4-win32.egg (125.0 kB view details)

Uploaded Egg

File details

Details for the file zope.container-3.10.1.zip.

File metadata

  • Download URL: zope.container-3.10.1.zip
  • Upload date:
  • Size: 147.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for zope.container-3.10.1.zip
Algorithm Hash digest
SHA256 df26e03b1aef3760e469dae8af10a8961b72b9f3a7291d3e0011b7750460e642
MD5 dfc5296b161124fb92857bf3234e540f
BLAKE2b-256 d93ffc8465bbd1014c3f188a9de5754328f7faa64650a04d5733fb68fdd0379f

See more details on using hashes here.

File details

Details for the file zope.container-3.10.1-py2.6-win-amd64.egg.

File metadata

File hashes

Hashes for zope.container-3.10.1-py2.6-win-amd64.egg
Algorithm Hash digest
SHA256 20e6101180467f0c2094dc2c515299735d019f70f7148974f89c3f59e4b42252
MD5 1a2dae2d738f5ce04196c3b209f83932
BLAKE2b-256 4676f070ac628f530dcf2afb2b174188cdd903037143948eb379fb0fd0f4fffe

See more details on using hashes here.

File details

Details for the file zope.container-3.10.1-py2.6-win32.egg.

File metadata

File hashes

Hashes for zope.container-3.10.1-py2.6-win32.egg
Algorithm Hash digest
SHA256 4b82670cfd2b587d157fc1b1a55112009b35c3217d0a140e8b3a89d179d52bf2
MD5 337291b0d9b4ea3b165d153f0b94483d
BLAKE2b-256 c910ca1e97d13d3bd68ea0387d4b300ec8bda2773f19c11f8e7edaa36e14b084

See more details on using hashes here.

File details

Details for the file zope.container-3.10.1-py2.5-win32.egg.

File metadata

File hashes

Hashes for zope.container-3.10.1-py2.5-win32.egg
Algorithm Hash digest
SHA256 39ab3d9b747e443ca83e3b7d7c793cfa4c8e62763cd56d03f6fd0559af98ee30
MD5 72622f9e415fa1ffaea138cca921468d
BLAKE2b-256 f1fe8c2705f58d76c112c6998bd26e01862e83e8083fb73dc226f54157d0eebd

See more details on using hashes here.

File details

Details for the file zope.container-3.10.1-py2.4-win32.egg.

File metadata

File hashes

Hashes for zope.container-3.10.1-py2.4-win32.egg
Algorithm Hash digest
SHA256 074a6a8c1128ede6d53761895b2632ed82ede2fb94421aebd04122f0b0d82d53
MD5 c58dc144cd28b6d79fccff19fc3cdd97
BLAKE2b-256 83fdb7cf7df010b48331e5e73690baa20fa649adda03b15bd1ec95d3516561f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page