BlueBream The Web Component Framework

2.1. What’s new in BlueBream 1.0 ?

2.1.1. Introduction

BlueBream is based on ZTK, so you can look at the ZTK documentation for major changes and migration issues.

2.1.2. Package version comparison

Package Name Zope 3.4.0 BlueBream 1.0.0
bluebream   1.0
clientform 0.2.9 (mechanize)
distribute   0.6.14
docutils 0.4 0.7
jinja2   2.5.2
lxml 1.3.6 2.2.8
martian   0.12
mechanize 0.1.7b 0.2.2
py   1.3.2
Pygments   1.3.1
python-gettext   1.0
pytz 2007k 2010l
RestrictedPython 3.4.2 3.6.0
roman   1.4.0
setuptools 0.6c9 0.6c11
Sphinx   1.0.3
transaction   1.1.0
z3c.recipe.sphinxdoc   0.0.8
z3c.testsetup   0.8.3
zc.buildout 1.1.1 1.4.3
zc.lockfile   1.0.0
zc.recipe.egg 1.0.0 1.2.2
zc.recipe.testrunner 1.0.0 1.2.1
zc.resourcelibrary 1.0.1 1.3.1
zc.sourcefactory   0.6.0
ZConfig 2.5.1 2.8.0
zdaemon 2.0.2 2.0.4
ZODB3 3.8.1 3.9.5
zodbcode 3.4.0 3.4.0
zope.annotation 3.4.1 3.5.0 3.4.3 3.7.5 3.4.3 3.5.7 3.4.1 3.14.0 3.4.4 3.7.1 3.4.0 3.5.0 3.4.0 3.5.0 3.4.1 3.7.0 3.5.1 3.8.1 3.4.1 3.9.1 3.5.6 3.9.0 3.4.0 3.4.0 3.4.1 3.5.3 3.4.1 3.4.1 3.4.0 3.5.1 3.5.1 3.5.3 3.4.1 3.6.1 3.4.4 3.6.0 3.4.0 3.5.1 3.4.1 4.0.2 3.4.0 3.5.0 3.4.1 3.5.1 3.4.1 3.8.0 3.4.4 3.6.3 3.4.0 3.5.2 3.4.0 3.4.0 3.4.1 3.7.1 3.4.1 3.6.1 3.4.5 3.6.2   3.7.2 3.4.0 3.5.0 3.4.1 3.5.2 3.4.1 3.11.1 3.4.1 3.8.0 3.4.0 3.4.0 3.4.0 3.7.0 3.4.3 3.11.1 3.4.1 3.10.1 3.4.0 3.5.1 3.4.1 3.5.1 3.4.0 3.5.0 3.5.2 3.7.5 3.4.6 3.5.2 3.4.2 3.5.0 3.5.1 3.6.2 3.4.0 3.4.0 3.4.3 3.7.5 3.4.0 3.6.0 3.4.1 3.5.0 3.4.0 3.5.0 3.4.1 3.9.2 3.4.0 3.5.1 3.4.3 3.7.0 3.4.0 3.5.0 3.4.1 3.5.1
zope.applicationcontrol   3.5.5
zope.authentication   3.7.1
zope.broken   3.6.0
zope.browser   1.3
zope.browsermenu   3.9.1
zope.browserpage   3.12.2
zope.browserresource   3.10.3
zope.cachedescriptors 3.4.1 3.5.1
zope.catalog   3.8.1
zope.component 3.4.0 3.9.5
zope.componentvocabulary   1.0
zope.configuration 3.4.0 3.7.2
zope.container   3.11.1
zope.contentprovider 3.4.0 3.7.2
zope.contenttype 3.4.0 3.5.1
zope.copy   3.5.0
zope.copypastemove 3.4.0 3.6.0
zope.datetime 3.4.0 3.4.0
zope.deferredimport 3.4.0 3.5.2
zope.deprecation 3.4.0 3.4.0
zope.documenttemplate 3.4.0 3.4.2
zope.dottedname 3.4.2 3.4.6
zope.dublincore 3.4.0 3.7.0
zope.error 3.5.1 3.7.0
zope.event 3.4.0 3.5.0-1
zope.exceptions 3.4.0 3.6.1
zope.file 0.3.0 0.5.0
zope.filerepresentation 3.4.0 3.6.0
zope.formlib 3.4.0 4.0.4
zope.hookable 3.4.0 3.4.1
zope.html 1.0.1 2.1.0
zope.i18n 3.4.0 3.7.4
zope.i18nmessageid 3.4.3 3.5.3
zope.index 3.4.1 3.6.1
zope.interface 3.4.1 3.6.1
zope.intid   3.7.2
zope.keyreference   3.6.2
zope.kgs   1.2.0
zope.lifecycleevent 3.4.0 3.6.1
zope.location 3.4.0 3.9.0
zope.login   1.0.0
zope.mimetype 0.3.0 1.3.0
zope.minmax 1.1.0 1.1.2
zope.modulealias 3.4.0 3.4.0
zope.pagetemplate 3.4.0 3.5.2
zope.password   3.6.1
zope.pluggableauth   1.0.1
zope.principalannotation   3.6.1
zope.principalregistry   3.7.0
zope.processlifetime   1.0
zope.proxy 3.4.2 3.6.1
zope.ptresource   3.9.0
zope.publisher 3.4.6 3.12.4
zope.ramcache   1.0
zope.rdb 3.4.0 3.5.0
zope.schema 3.4.0 3.7.0 3.4.1 3.7.2
zope.securitypolicy 3.4.1 3.6.1
zope.sendmail 3.4.0 3.7.2
zope.sequencesort 3.4.0 3.4.0
zope.server 3.4.3 3.6.2
zope.session 3.4.1 3.9.2   3.9.1
zope.size 3.4.0 3.4.1
zope.structuredtext 3.4.0 3.5.0
zope.tal 3.4.1 3.5.2
zope.tales 3.4.0 3.5.1
zope.testbrowser 3.4.2 3.9.0
zope.testing 3.5.6 3.9.5
zope.thread 3.4 3.4
zope.traversing 3.4.1 3.13
zope.viewlet 3.4.2 3.7.2
zope.xmlpickle 3.4.0 3.4.0

2.1.3. Possible errors and solutions

While running buildout, you may get module import errors like this:

ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global authentication')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global broken')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global error')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global i18n')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global session')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global schema')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global zopeappgenerations')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global keyreference')
ConfigurationError: ('Invalid value for', 'package', 'ImportError: Module has no global principalannotation')


Add the egg name (Eg:- to install_requires inside as given here. Aftern adding this, you need to run ./bin/buildout command again.


Another solution is to inlude egg name (Eg:- in the Buildout part where other eggs are listed using``zc.recipe.egg`` recipe as given here:

recipe = zc.recipe.egg
eggs = samplproject
interpreter = breampy

Import error:

If you get error like this:

ZopeXMLConfigurationError: File "/home/baiju/myapp/src/myapp/browser.zcml", line 21.2-27.8
ConfigurationError: ('Invalid value for', 'for', "ImportError: Couldn't import, No module named folder.interfaces")

Open the browser.zcml file and look at line number 21, inside that ZCML declaration change: to

If you get error like this:

raise ValueError("Undefined permission id", permission_id)
zope.configuration.config.ConfigurationExecutionError: <type 'exceptions.ValueError'>: ('Undefined permission id', 'zope.ManageApplication')

You need to include zope.applicationcontrol package in your ZCML configuration file (site.zcml) as the permission definition is available there.

If you are getting an error like this when accessing login.html view.

line 82, in unauthorized
   a = ILoginPassword(request)
TypeError: ('Could not adapt', <zope.publisher.browser.BrowserRequest
instance URL=http://localhost:9060/@@login.html>, <InterfaceClass

You need to include zope.login package in your ZCML configuration file (site.zcml) as the adapter registration is available there:

<include package="zope.login" />

2.1.4. ChangeLog of individual packages bluebream 1.0b4 (2010-08-26)

  • Change custom interpreter name: s/breampy/bbpy
  • Fixed the generated buildout and make it repeatable
  • Added the “extends-cache” Buildout option to cache the extended configuration files
  • warn the user if the project template has significant changes
  • Added empty overrides.zcml - show best practices to developers
  • updated to ZTK 1.0a3
  • Automatically find and suggest the latest minor version online
  • added registrations to get the correct unauthorized view 1.0b3 (2010-07-11)

  • Directly depend on the ZTK!
  • Removed the bbkit package
  • Ask the version of BlueBream at project creation
  • Automatically find and suggest the latest version online 1.0b2 (2010-06-30)

  • Include zope.error & zope.principalregistry from site.zcml 1.0b1 (2010-04-27)

  • Set name & description for the sample application
  • Use project name as i18n_domain in base template
  • Merge the two templates into a single one by allowing to create a flat or nested namespace structure, depending on the project name.
  • Enabled Distribute by default instead of Setuptools
  • Added registrations to be able to register a named vocabulary
  • removed buildout templating and include two zope.conf files, one for deployment and one for debugging with devmode 1.0a5 (2010-03-28)

  • Include the sample application in the bluebream_simple template
  • Move the sample application provided by bluebream template to a sub-package named welcome similar to bluebream_simple The sample application can be easily removed.
  • The sample application object use ‘` instead of zope.container.interfaces.IContainer
  • Include zope.session from site.zcml
  • Include browser namespace in site.zcml for convenience.
  • Added an empty [versions] part in versions.cfg with a recommendation to pin-down versions of other dependencies.
  • Remove from dependency list
  • Since BlueBream requires ZODB 3.9, FileStorage need not be wrapped with BlobStorage proxy to get ZODB blobs support.
  • The default ZODB blob layout should be ‘bushy’ Fix LP #543525
  • Use relative paths in etc/zope.conf Fix LP #543451
  • Specify i18n domain in ftesting.zcml Fix LP #543516
  • zope.browserresource package registration was missing Fix LP #541457 1.0a4 (2010-03-07)

  • Added an empty PKG-INFO Work around fix for “empty directory” problem. (refer: LP #503301) 1.0a3 (2010-03-07) 1.0a2 (2010-03-02)

  • Use a template to display default page for the root folder
  • Use zope.formlib.form.DisplayForm as base class for views instead of zope.publisher.browser.BrowserView
  • Sample application add form view name is changed from @@add to @@add_sample_app
  • Add links to to BlueBream website & mailing list
  • Added license file
  • Improve “Usage” section in README.txt
  • Include zest.release to prepare release
  • Include bluebream_simple template (This will not be released with 1.0a2 as the documentation is not ready yet)
  • Move bluebream template code to bluebream_base
  • Add static resource directory with CSS to bluebream_base (based on bluebream_simple). The new style applied to main page. 1.0a1 (2010-02-06) 0.1.9 (2010-01-13)

  • LP #506879: debug shell added. Basic usage:

    ./bin/paster shell debug.ini 0.1.8 (2010-01-12)

  • Use zope ZCML namespace as default in configure.zcml
  • Documentation improvements
  • Create a sample application by default 0.1.7 (2010-01-10)

  • Update version: zope.tales = 3.5.0
  • LP #505362: Fix. Main package name is hard-coded as ‘main’
  • Change ‘defaultView’ registration location and interface
  • LP #505413: Name of default custom Python interpreter should be able to customize 0.1.6 (2010-01-07)

  • LP #502819: Main page after a fresh installation
  • Removed hello view from template.
  • LP #502941: Add trove classifiers.
  • Mention all resources in PyPI page. 0.1.5 (2010-01-07)

  • LP #503388: Value of “namespace_package” should not be empty string.
  • Updated description, added promotional video. 0.1.4 (2010-01-04)

  • LP #503301: Work around fix for “empty directory” problem.
  • Change author as “BlueBream” team and email to zope-dev list. 0.1.3 (2010-01-04)

  • LP #502817: var directory and its subdirectories not exist
  • Documentation improvements: added “Usage” section 0.1.2 (2010-01-03)

  • Added functional testing support for project
  • Sphinx based documentation infrastruture improvements
  • LP #502529: Update wizard to ask all package meta to be updated in 0.1.1 (2010-01-02)

  • Fix missing package data. The 0.1.0 releases was broken.
  • Improve documentation. 0.1.0 (2010-01-02)

  • Initial release. RestrictedPython 3.6.0 (2010-07-09)

  • Added name check for names assigned during imports using the “from x import y” format.
  • Added test for name check when assigning an alias using multiple-context with statements in Python 2.7.
  • Added tests for protection of the iterators for dict and set comprehensions in Python 2.7. 3.6.0a1 (2010-06-05)

  • Removed support for DocumentTemplate.sequence - this is handled in the DocumentTemplate package itself. 3.5.2 (2010-04-30)

  • Removed a testing dependency on zope.testing. 3.5.1 (2009-03-17)

  • Added tests for Utilities module.
  • Filtered DeprecationWarnings when importing Python’s sets module. 3.5.0 (2009-02-09)

  • Dropped legacy support for Python 2.1 / 2.2 (__future__ imports of nested_scopes / generators.). 3.4.3 (2008-10-26)

  • Fixed deprecation warning: with is now a reserved keyword on Python 2.6. That means RestrictedPython should run on Python 2.6 now. Thanks to Ranjith Kannikara, GSoC Student for the patch.
  • Added tests for ternary if expression and for ‘with’ keyword and context managers. transaction 1.1.1 (2010-09-16)

Bug Fixes:

  • Code in held on to local references to traceback objects after calling sys.exc_info() to get one, causing potential reference leakages.
  • Fixed hexlify NameError in transaction._transaction.oid_repr and add test. 1.1.0 (1010-05-12)

New Features:

  • Transaction managers and the transaction module can be used with the with statement to define transaction boundaries, as in:

    with transaction:
        ... do some things ...

    See transaction/tests/convenience.txt for more details.

  • There is a new iterator function that automates dealing with transient errors (such as ZODB confict errors). For example, in:

    for attempt in transaction.attempts(5):
        with attempt:
            ... do some things ..

    If the work being done raises transient errors, the transaction will be retried up to 5 times.

    See transaction/tests/convenience.txt for more details.

Bugs fixed: 1.0.1 (2010-05-07)

  • LP #142464: remove double newline between log entries: it makes doing smarter formatting harder.
  • Updated tests to remove use of deprecated zope.testing.doctest. 1.0.0 (2009-07-24)

  • Fix test that incorrectly relied on the order of a list that was generated from a dict.
  • Remove crufty DEPENDENCIES.cfg left over from zpkg. 1.0a1 (2007-12-18)

  • Initial release, branched from ZODB trunk on 2007-11-08 (aka “3.9.0dev”).
  • Remove (deprecated) support for beforeCommitHook alias to addBeforeCommitHook.
  • Add weakset tests.
  • Remove unit tests that depend on ZODB.tests.utils from test_transaction (these are actually integration tests). z3c.testsetup 0.8.3 (2010-09-15)

  • Fixed tests on windows related to testrunner problems with multiple layers run in subprocesses.
  • Fixed some tests on windows, mostly because of path separator issues 0.8.2 (2010-07-30)

  • Fixed tests not to fail when some buildbot takes minutes to run the tests.
  • Fix tests to work also under Python 2.7. 0.8.1 (2010-07-25)

  • The encoding parameter is ignored under Python 2.4. This was already true for the 0.8 release, but now we silently ignore it instead of raising exceptions. For Python >= 2.5 nothing changed. 0.8 (2010-07-24)

  • Use standard lib doctest instead of zope.testing.doctest.
  • z3c.testsetup now looks in zope.testrunner for testrunner first (which was ripped out of zope.testing). Using testrunner from zope.testing is still supported. See bottom of testrunner.txt in sources for details.
  • Fix tests to stay compatible with more recent zope testrunners. This should us keep compatible with ZTK 1.0a2. 0.7 (2010-05-17)

  • Fix NameError bug in the warning message in case is not availble when trying to run a functional doc test. This error presented itself as a highly cryptic ImportError when actually running tests. 0.6.1 (2009-11-19)

  • Test files that we attempt to read but that do not exist raise an error instead of passing silently.
  • Internal refactoring: regex caching. 0.6 (2009-11-19)

  • Python unittest modules with an import error now result in a visible warning. Previously, such problems would be hidden. Also the python testrunner could not report them as broken as we did not pass those test files to the testrunner.
  • Fixed regex for detecting the old ”:test-layer: python” marker: it did not work when prefixed with restructuredtext’s ”..” comment marker. 0.5.1 (2009-10-22)

  • Reverted allow_teardown default back to False to prevent confusion. 0.5 (2009-09-23) Bug fixes
  • Checkers are now applied to non-functional doctests too. Thanks to Jonathan Ballet for patches.
  • Normal UnitTest layers are now registered correctly.
  • :layer: now detects functional ZCML layers. If the defined layer is derived from zope.testing.functional.ZCMLLayer, then the test is set up with the same kind of testcase as :functional-zcml-layer:.
  • Reordered and cleaned up the documentation. Feature changes
  • By default, functional layer tests now use the allow_teardown=True option of the ZCMLLayer. This prevents the zcml layer from running in a subprocess which throws off profiling and thus code coverage tools. Running it in a subprocess is only normally needed when you do things like adding an interface to a class after the fact in your code. You can overrid it in the register_all_tests() call by setting allow_teardown=False. 0.4 (2009-06-11) Bug fixes
  • Made z3c.testsetup selftests work with zope.testing >= 3.7.3. Thanks to Jonathan Ballet for pointing to that problem.
  • Ignore *nix hidden test files (i.e. such starting with a dot in filename) by default. Thanks to Jonathan Ballet for patch.
  • ZCML files registered via the default layer are now separated from each other, even if they own the same filename. Therefore you can now register a default layer with an ftesting.zcml in one subpackage while having another ftesting.zcml in another package. This was not handled correctly before. Many thanks go to Jonathan Ballet who contributed a patch. Feature Changes
  • Added z3c.testsetup.testrunner that provides wrappers for zope.testing.testrunner``s ``run() and run_internal() functions. Using it, one can make sure that running testrunners inside tests will work regardless of which version of zope.testing is used during testruns. 0.3 (2009-02-23) Bug fixes
  • Updated doctest examples to reflect new zope.testing behaviour.
  • z3c.testsetup really shouldn’t require any more. If you use it in an environment without this package, then you cannot register functional tests, which is determined when loading register_all_tests from z3c.testsetup.
  • Broken modules are ignored while scanning for tests.
  • Modules are not loaded anymore if their source code does not provide a suitable marker string. For this to work, the default checker method isTestModule now expects a martian.scan.ModuleInfo as argument and not a real module. Module infos can be easily created by using module_info_from_dotted_name and module_info_from_package from the martian.scan package. Feature Changes
  • New set of testfile markers:

    • :doctest:

      marks a testfile as a doctest.

    • :unittest:

      marks a testfile as a regular unittest.

    • :layer:

      applies the given layer definition to the tests in the doctest file.

    • :zcml-layer: filename.zcml

      sets up a ZCML layer with the given filename and applies this layer to the doctests in the doctest file.

    • :functional-zcml-layer: filename.zcml

      sets up a ZCML layer with the given filename and applies this layer to the doctests in the doctest file. Furthermore the tests are set up as functional doc tests.

    • :setup:

      applies the setUp function denoted by the dotted name to the tests in the doctest file.

    • :teardown:

      applies the tearDown function denoted by the dotted name to the tests in the doctests file.

    See the examples in tests/othercave and README.txt to learn more about using these new directives.

    The old :test-layer: marker is still supported but it is deprecated now and will vanish at least with the 0.5 version of z3c.testsetup. 0.2.2 (2008-02-29) Bug fixes
  • z3c.testsetup now does not require zope.component nor for usage in other packages. You must take care, that those packages are available during tests, for example by adding those packages to your 0.2.1 (2008-02-18) Bug fixes
  • Fix faulty upload egg. 0.2 (2008-02-17) Feature Changes
  • An ftesting.zcml in the root of a handled package is now taken as default layer for functional doctests if it exists. 0.1 (2008-02-15)

  • Initial Release zc.buildout 1.4.3 (2009-12-10)

Bugs fixed:

  • Using pre-detected setuptools version for easy_installing tgz files. This prevents a recursion error when easy_installing an upgraded “distribute” tgz. Note that setuptools did not have this recursion problem solely because it was packaged as an .egg, which does not have to go through the easy_install step. 1.4.2 (2009-11-01)

New Feature:

  • Added a –distribute option to the bootstrap script, in order to use Distribute rather than Setuptools. By default, Setuptools is used.

Bugs fixed:

  • While checking for new versions of setuptools and buildout itself, compare requirement locations instead of requirement objects.
  • Incrementing didn’t work properly when extending multiple files.
  • The download API computed MD5 checksums of text files wrong on Windows. 1.4.1 (2009-08-27)

New Feature:

  • Added a debug built-in recipe to make writing some tests easier.

Bugs fixed:

  • (introduced in 1.4.0) option incrementing (-=) and decrementing (-=) didn’t work in the buildout section.
  • Option incrementing and decrementing didn’t work for options specified on the command line.
  • Scripts generated with relative-paths enabled couldn’t be symbolically linked to other locations and still work.
  • Scripts run using generated interpreters didn’t have __file__ set correctly.
  • The standard Python -m option didn’t work for custom interpreters. 1.4.0 (2009-08-26)

  • When doing variable substitutions, you can omit the section name to refer to a variable in the same section (e.g. ${:foo}).
  • When doing variable substitution, you can use the special option, _buildout_section_name_ to get the section name. This is most handy for getting the current section name (e.g. ${:_buildout_section_name_}).
  • A new special option, < allows sections to be used as macros.
  • Added annotate command for annotated sections. Displays sections key-value pairs along with the value origin.
  • Added a download API that handles the download cache, offline mode etc and is meant to be reused by recipes.
  • Used the download API to allow caching of base configurations (specified by the buildout section’s ‘extends’ option). 1.3.1 (2009-08-12)

  • Bug fixed: extras were ignored in some cases when versions were specified. 1.3.0 (2009-06-22)

  • Better Windows compatibility in test infrastructure.
  • Now the has an optional –version argument, that can be used to force zc.buildout version to use.
  • zc.buildout.testing.buildoutSetUp installs a new handler in the python root logging facility. This handler is now removed during tear down as it might disturb other packages reusing buildout’s testing infrastructure.
  • fixed usage of ‘relative_paths’ keyword parameter on Windows
  • Added an unload entry point for extensions.
  • Fixed bug: when the relative paths option was used, relative paths could be inserted into sys.path if a relative path was used to run the generated script. 1.2.1 (2009-03-18)

  • Refactored generation of relative egg paths to generate simpler code. 1.2.0 (2009-03-17)

  • Added a relative_paths option to zc.buildout.easy_install.script to generate egg paths relative to the script they’re used in. 1.1.2 (2009-03-16)

  • Added Python 2.6 support. Removed Python 2.3 support.

  • Fixed remaining deprecation warnings under Python 2.6, both when running our tests and when using the package.

  • Switched from using os.popen* to subprocess.Popen, to avoid a deprecation warning in Python 2.6. See:

  • Made sure the ‘redo_pyc’ function and the doctest checkers work with Python executable paths containing spaces.

  • Expand shell patterns when processing the list of paths in develop, e.g:

    develop = ./local-checkouts/*
  • Conditionally import and use hashlib.md5 when it’s available instead of md5 module, which is deprecated in Python 2.6.

  • Added Jython support for bootstrap, development bootstrap and zc.buildout support on Jython

  • Fixed a bug that would cause buildout to break while computing a directory hash if it found a broken symlink (Launchpad #250573) zc.lockfile 1.0.0 (2008-10-18)

  • Fixed a small bug in error logging. 1.0.0b1 (2007-07-18)

Initial release ZConfig 2.8.0 (2010-04-13) 2.7.1 (2009-06-13)

  • Improved documentation
  • Fixed tests failures on windows. 2.7.0 (2009-06-11)

  • Added a convenience function, ZConfig.configureLoggers(text) for configuring loggers.
  • Relaxed the requirement for a logger name in logger sections, allowing the logger section to be used for both root and non-root loggers. 2.6.1 (2008-12-05)

  • Fixed support for schema descriptions that override descriptions from a base schema. If multiple base schema provide descriptions but the derived schema does not, the first base mentioned that provides a description wins.
  • Fixed compatibility bug with Python 2.5.0.
  • No longer trigger deprecation warnings under Python 2.6. 2.6.0 (2008-09-03)

  • Added support for file rotation by time by specifying when and interval, rather than max-size, for log files.
  • Removed dependency on setuptools from the zc.recipe.testrunner 1.2.1 (2010-08-24)

  • Fixed a lot of windows issues
  • Nailed versions to ZTK 1.0a2 (oh well, we have to have at least some stability)
  • Fixed some other test failures that seemed to come from other packages 1.2.0 (2009-03-23)

  • Added a relative-paths option to use egg, test, and working-directory paths relative to the test script. 1.1.0 (2008-08-25)

  • Requiring at least zope.testing 3.6.0.
  • Fixed a bug: Parallel runs of layers failed when using working-directory parameter. zc.resourcelibrary 1.3.1 (2010-03-24)

  • Resource libraries that are required during a retried request are now correctly registered and injected to the HTML.
  • Import hooks functionality from zope.component after it was moved there from This lifts the dependency on
  • Removed an unused ISite import and thereby, the undeclared dependency on zope.location. 1.3.0 (2009-10-08)

  • Use zope.browserresource instead of, removing a dependency on latter.
  • Look up the “resources view” via queryMultiAdapter instead of looking into the adapter registry.
  • Moved the dependency on to the test dependencies. 1.2.0 (2009-06-04)

  • Use instead of Removes direct dependency on 1.1.0 (2009-05-05)

New features:

  • An attempt to generate resource URLs using the “resources view” (@@) is now made; if unsuccesful, we fall back to the previous method of crafting the URL by hand from the site url. This ensures that the resource library respects the existing plugging points for resource publishing (see
  • You can now explicitly specify where resource links should be inserted using the special marker comment ‘<!– zc.resourcelibrary –>’. 1.0.2 (2009-01-27)

  • Remove from dependencies, substituting its uses with direct imports.
  • Use zope-dev at mailing list address instead of zope3-dev at as the latter one is retired.
  • Change “cheeseshop” to “pypi” in the package homepage. zc.sourcefactory 0.6.0 (2009-08-15)

  • Change package homepage to PyPI instead of Subversion.
  • Dropped Support for Zope 3.2 by removing a conditional import.
  • Use hashlib for Python 2.5 and later to avoid deprecation warnings. 0.5.0 (2009-02-03)

  • FactoredContextualSourceBinder.__call__ now accepts arguments giving the args to pass to source class. ContextualSourceFactory now uses a class variable to tell what kind of Source to make.
  • Use zope.intid instead of
  • Corrected e-mail address as has been retired. 0.4.0 (2008-12-11)

  • Removed dependency. Changed ITerms import from to zope.browser.interfaces. [projekt01] 0.3.5 (2008-12-08)

  • Fixed bug in __new__ of contexual factories that would disallow subclasses to use constructors that expect a different signature. [icemac] 0.3.4 (2008-08-27)

  • Added all documents in package to long description, so they are readable in pypi. [icemac] 0.3.3 (2008-06-10)

  • Fixed bug in __new__ of factories that would disallow subclasses to use constructors that expect a different signature. (Thanks to Sebastian Wehrmann for the patch.) 0.3.2 (2008-04-09)

  • Fixed scalability bug caused by missing __nonzero__ on ValueMappingSource 0.3.1 (2008-02-12)

  • Fixed scalability bug caused by missing __nonzero__ on BasicSourceFactory 0.3.0

  • Added class-level defaults for attributes that are declared in the interfaces to not have the Zope 2 security machinery complain about them. 0.2.1 (2007-07-10)

  • Fixed a bug in the contextual token policy that was handling the resolution of values for a given token incorrectly. 0.2.0 (2007-07-10)

  • Added a contextual token policy interface that allows getToken and getValue to access the cotext for contextual sources.
  • Added a contextual term policy interface that allows createTerm and getTitle to access the context for contextual sources.
  • Added compatibility for Zope 3.2 and Zope 2.9 (via Five 1.3) zdaemon 2.0.4 (2009-04-20)

  • Version 2.0.3 broke support for relative paths to the socket (-s option and socket-name parameter), now relative paths work again as in version 2.0.2.
  • Fixed change log format, made table of contents nicer.
  • Fixed author’s email address.
  • Removed zpkg stuff. 2.0.3 (2009-04-11)

  • Added support to bootstrap on Jython.
  • If the run directory does not exist it will be created. This allow to use /var/run/mydaemon as run directory when /var/run is a tmpfs (LP #318118). Bugs Fixed
  • No longer uses a hardcoded filename (/tmp/demo.zdsock) in unit tests. This lets you run the tests on Python 2.4 and 2.5 simultaneously without spurious errors.
  • make -h work again for both runner and control scripts. Help is now taken from the __doc__ of the options class users by the zdaemon script being run. ZODB3 3.9.5 (2010-04-23) Bugs Fixed 3.9.4 (2009-12-14) Bugs Fixed
  • A ZEO threading bug could cause transactions to read inconsistent data. (This sometimes caused an AssertionError in Connection._setstate_noncurrent.)
  • DemoStorage.loadBefore sometimes returned invalid data which would trigger AssertionErrors in ZODB.Connection.
  • History support was broken when using stprages that work with ZODB 3.8 and 3.9.
  • zope.testing was an unnecessary non-testing dependency.
  • Internal ZEO errors were logged at the INFO level, rather than at the error level.
  • The FileStorage backup and restore script, repozo, gave a deprecation warning under Python 2.6.
  • C Header files weren’t installed correctly.
  • The undo implementation was incorrect in ways that could cause subtle missbehaviors. 3.9.3 (2009-10-23) Bugs Fixed
  • 2 BTree bugs, introduced by a bug fix in 3.9.0c2, sometimes caused deletion of keys to be improperly handled, resulting in data being available via iteraation but not item access. 3.9.2 (2009-10-13) Bugs Fixed
  • ZEO manages a separate thread for client network IO. It created this thread on import, which caused problems for applications that implemented daemon behavior by forking. Now, the client thread isn’t created until needed.
  • File-storage pack clean-up tasks that can take a long time unnecessarily blocked other activity.
  • In certain rare situations, ZEO client connections would hang during the initial connection setup. 3.9.1 (2009-10-01) Bugs Fixed
  • Conflict errors committing blobs caused ZEO servers to stop committing transactions. 3.9.0 (2009-09-08) New Features (in more or less reverse chronological order)
  • The Database class now has an xrefs keyword argument and a corresponding allow-implicit-cross-references configuration option. which default to true. When set to false, cross-database references are disallowed.

  • Added support for RelStorage.

  • As a convenience, the connection root method for returning the root object can now also be used as an object with attributes mapped to the root-object keys.

  • Databases have a new method, transaction, that can be used with the Python (2.5 and later) with statement:

    db = ZODB.DB(...)
    with db.transaction() as conn:
         # ... do stuff with conn

    This uses a private transaction manager for the connection. If control exits the block without an error, the transaction is committed, otherwise, it is aborted.

  • Convenience functions ZODB.connection and ZEO.connection provide a convenient way to open a connection to a database. They open a database and return a connection to it. When the connection is closed, the database is closed as well.

  • The ZODB.config databaseFrom... methods now support multi-databases. If multiple zodb sections are used to define multiple databases, the databases are connected in a multi-database arrangement and the first of the defined databases is returned.

  • The zeopack script has gotten a number of improvements:

    • Simplified command-line interface. (The old interface is still supported, except that support for ZEO version 1 servers has been dropped.)
    • Multiple storages can be packed in sequence.
      • This simplifies pack scheduling on servers serving multiple databases.
      • All storages are packed to the same time.
    • You can now specify a time of day to pack to.
    • The script will now time out if it can’t connect to s storage in 60 seconds.
  • The connection now estimates the object size based on its pickle size and informs the cache about size changes.

    The database got additional configurations options (cache-size-bytes and historical-cache-size-bytes) to limit the cache size based on the estimated total size of cached objects. The default values are 0 which has the interpretation “do not limit based on the total estimated size”. There are corresponding methods to read and set the new configuration parameters.

  • Connections now have a public opened attribute that is true when the connection is open, and false otherwise. When true, it is the seconds since the epoch (time.time()) when the connection was opened. This is a renaming of the previous _opened private variable.

  • FileStorage now supports blobs directly.

  • You can now control whether FileStorages keep .old files when packing.

  • POSKeyErrors are no longer logged by ZEO servers, because they are really client errors.

  • A new storage interface, IExternalGC, to support external garbage collection,, has been defined and implemented for FileStorage and ClientStorage.

  • As a small convenience (mainly for tests), you can now specify initial data as a string argument to the Blob constructor.

  • ZEO Servers now provide an option, invalidation-age, that allows quick verification of ZEO clients have been disconnected for less than a given time even if the number of transactions the client hasn’t seen exceeds the invalidation queue size. This is only recommended if the storage being served supports efficient iteration from a point near the end of the transaction history.

  • The FileStorage iterator now handles large files better. When iterating from a starting transaction near the end of the file, the iterator will scan backward from the end of the file to find the starting point. This enhancement makes it practical to take advantage of the new storage server invalidation-age option.

  • Previously, database connections were managed as a stack. This tended to cause the same connection(s) to be used over and over. For example, the most used connection would typically be the only connection used. In some rare situations, extra connections could be opened and end up on the top of the stack, causing extreme memory wastage. Now, when connections are placed on the stack, they sink below existing connections that have more active objects.

  • There is a new pool-timeout database configuration option to specify that connections unused after the given time interval should be garbage collection. This will provide a means of dealing with extra connections that are created in rare circumstances and that would consume an unreasonable amount of memory.

  • The Blob open method now supports a new mode, ‘c’, to open committed data for reading as an ordinary file, rather than as a blob file. The ordinary file may be used outside the current transaction and even after the blob’s database connection has been closed.

  • ClientStorage now provides blob cache management. When using non-shared blob directories, you can set a target cache size and the cache will periodically be reduced try to keep it below the target size.

    The client blob directory layout has changed. If you have existing non-shared blob directories, you will have to remove them.

  • ZODB 3.9 ZEO clients can connect to ZODB 3.8 servers. ZODB ZEO clients from ZODB 3.2 on can connect to ZODB 3.9 servers.

  • When a ZEO cache is stale and would need verification, a ZEO.interfaces.StaleCache event is published (to zope.event). Applications may handle this event and take action such as exiting the application without verifying the cache or starting cold.

  • There’s a new convenience function, ZEO.DB, for creating databases using ZEO Client Storages. Just call ZEO.DB with the same arguments you would otherwise pass to ZEO.ClientStorage.ClientStorage:

    import ZEO
    db = ZEO.DB(('some_host', 8200))
  • Object saves are a little faster

  • When configuring storages in a storage server, the storage name now defaults to “1”. In the overwhelmingly common case that a single storage, the name can now be omitted.

  • FileStorage now provides optional garbage collection. A ‘gc’ keyword option can be passed to the pack method. A false value prevents garbage collection.

  • The FileStorage constructor now provides a boolean pack_gc option, which defaults to True, to control whether garbage collection is performed when packing by default. This can be overridden with the gc option to the pack method.

    The ZConfig configuration for FileStorage now includes a pack-gc option, corresponding to the pack_gc constructor argument.

  • The FileStorage constructor now has a packer keyword argument that allows an alternative packer to be supplied.

    The ZConfig configuration for FileStorage now includes a packer option, corresponding to the packer constructor argument.

  • MappingStorage now supports multi-version concurrency control and iteration and provides a better storage implementation example.

  • DemoStorage has a number of new features:

    • The ability to use a separate storage, such as a file storage to store changes
    • Blob support
    • Multi-version concurrency control and iteration
    • Explicit support for demo-storage stacking via push and pop methods.
  • Wen calling ZODB.DB to create a database, you can now pass a file name, rather than a storage to use a file storage.

  • Added support for copying and recovery of blob storages:

    • Added a helper function, ZODB.blob.is_blob_record for testing whether a data record is for a blob. This can be used when iterating over a storage to detect blob records so that blob data can be copied.

      In the future, we may want to build this into a blob-aware iteration interface, so that records get blob file attributes automatically.

    • Added the IBlobStorageRestoreable interfaces for blob storages that support recovery via a restoreBlob method.

    • Updated ZODB.blob.BlobStorage to implement IBlobStorageRestoreable and to have a copyTransactionsFrom method that also copies blob data.

  • New ClientStorage configuration option drop_cache_rather_verify. If this option is true then the ZEO client cache is dropped instead of the long (unoptimized) verification. For large caches, setting this option can avoid effective down times in the order of hours when the connection to the ZEO server was interrupted for a longer time.

  • Cleaned-up the storage iteration API and provided an iterator implementation for ZEO.

  • Versions are no-longer supported.

  • Document conflict resolution (see ZODB/ConflictResolution.txt).

  • Support multi-database references in conflict resolution.

  • Make it possible to examine oid and (in some situations) database name of persistent object references during conflict resolution.

  • Moved the ‘transaction’ module out of ZODB. ZODB depends upon this module, but it must be installed separately.

  • ZODB installation now requires setuptools.

  • Added offset information to output of fstail script. Added test harness for this script.

  • Added support for read-only, historical connections based on datetimes or serials (TIDs). See src/ZODB/historical_connections.txt.

  • Removed the ThreadedAsync module.

  • Now depend on zc.lockfile Bugs Fixed
  • CVE-2009-2701: Fixed a vulnerability in ZEO storage servers when blobs are available. Someone with write access to a ZEO server configured to support blobs could read any file on the system readable by the server process and remove any file removable by the server process.

  • BTrees (and TreeSets) kept references to internal keys.

  • BTree Sets and TreeSets don’t support the standard set add method. (Now either add or the original insert method can be used to add an object to a BTree-based set.)

  • The runzeo script didn’t work without a configuration file. (

  • Officially deprecated PersistentDict (

  • Calling __setstate__ on a persistent object could under certain uncommon cause the process to crash.

  • When committing transactions involving blobs to ClientStorages with non-shared blob directories, a failure could occur in tpc_finish if there was insufficient disk space to copy the blob file or if the file wasn’t available.

  • Savepoint blob data wasn’t properly isolated. If multiple simultaneous savepoints in separate transactions modified the same blob, data from one savepoint would overwrite data for another.

  • Savepoint blob data wasn’t cleaned up after a transaction abort.

  • Opening a blob with modes ‘r+’ or ‘a’ would fail when the blob had no committed changes.

  • PersistentList’s sort method did not allow passing of keyword parameters. Changed its sort parameter list to match that of its (Python 2.4+) UserList base class.

  • Certain ZEO server errors could cause a client to get into a state where it couldn’t commit transactions.

  • Fixed vulnerabilities in the ZEO network protocol that allow:

    • CVE-2009-0668 Arbitrary Python code execution in ZODB ZEO storage servers
    • CVE-2009-0669 Authentication bypass in ZODB ZEO storage servers

    The vulnerabilities only apply if you are using ZEO to share a database among multiple applications or application instances and if untrusted clients are able to connect to your ZEO servers.

  • Fixed the setup test command. It previously depended on private functions in zope.testing.testrunner that don’t exist any more.

  • ZEO client threads were unnamed, making it hard to debug thread management.

  • ZEO protocol 2 support was broken. This caused very old clients to be unable to use new servers.

  • zeopack was less flexible than it was before. -h should default to local host.

  • The “lawn” layout was being selected by default if the root of the blob directory happened to contain a hidden file or directory such as ”.svn”. Now hidden files and directories are ignored when choosing the default layout.

  • BlobStorage was not compatible with MVCC storages because the wrappers were being removed by each database connection. Fixed.

  • Saving indexes for large file storages failed (with the error: RuntimeError: maximum recursion depth exceeded). This can cause a FileStorage to fail to start because it gets an error trying to save its index.

  • Sizes of new objects weren’t added to the object cache size estimation, causing the object-cache size limiting feature to let the cache grow too large when many objects were added.

  • Deleted records weren’t removed when packing file storages.

  • Fixed and added test.

  • fixed Python 2.6 compatibility issue with ZEO/

  • using hashlib.sha1 if available in order to avoid DeprecationWarning under Python 2.6

  • made runzeo -h work

  • The monitor server didn’t correctly report the actual number of clients.

  • Packing could return spurious errors due to errors notifying disconnected clients of new database size statistics.

  • Undo sometimes failed for FileStorages configured to support blobs.

  • Starting ClientStorages sometimes failed with non-new but empty cache files.

  • The history method on ZEO clients failed.

  • Fix for bug #251037: Make packing of blob storages non-blocking.

  • Fix for bug #220856: Completed implementation of ZEO authentication.

  • Fix for bug #184057: Make initialisation of small ZEO client file cache sizes not fail.

  • Fix for bug #184054: MappingStorage used to raise a KeyError during load instead of a POSKeyError.

  • Fixed bug in Connection.TmpStore: load() would not defer to the backend storage for loading blobs.

  • Fix for bug #181712: Make ClientStorage update lastTransaction directly after connecting to a server, even when no cache verification is necessary.

  • Fixed bug in blob filesystem helper: the isSecure check was inverted.

  • Fixed bug in transaction buffer: a tuple was unpacked incorrectly in clear.

  • Bugfix the situation in which comparing persistent objects (for instance, as members in BTree set or keys of BTree) might cause data inconsistency during conflict resolution.

  • Fixed bug 153316: persistent and BTrees were using int for memory sizes which caused errors on x86_64 Intel Xeon machines (using 64-bit Linux).

  • Fixed small bug that the Connection.isReadOnly method didn’t work after a savepoint.

  • Bug #98275: Made ZEO cache more tolerant when invalidating current versions of objects.

  • Fixed a serious bug that could cause client I/O to stop (hang). This was accompanied by a critical log message along the lines of: “RuntimeError: dictionary changed size during iteration”.

  • Fixed bug #127182: Blobs were subclassable which was not desired.

  • Fixed bug #126007: tpc_abort had untested code path that was broken.

  • Fixed bug #129921: getSize() function in BlobStorage could not deal with garbage files

  • Fixed bug in which MVCC would not work for blobs.

  • Fixed bug in ClientCache that occurred with objects larger than the total cache size.

  • When an error occured attempting to lock a file and logging of said error was enabled.

  • FileStorages previously saved indexes after a certain number of writes. This was done during the last phase of two-phase commit, which made this critical phase more subject to errors than it should have been. Also, for large databases, saves were done so infrequently as to be useless. The feature was removed to reduce the chance for errors during the last phase of two-phase commit.

  • File storages previously kept an internal object id to transaction id mapping as an optimization. This mapping caused excessive memory usage and failures during the last phase of two-phase commit. This optimization has been removed.

  • Refactored handling of invalidations on ZEO clients to fix a possible ordering problem for invalidation messages.

  • On many systems, it was impossible to create more than 32K blobs. Added a new blob-directory layout to work around this limitation.

  • Fixed bug that could lead to memory errors due to the use of a Python dictionary for a mapping that can grow large.

  • Fixed bug #251037: Made packing of blob storages non-blocking.

  • Fixed a bug that could cause InvalidObjectReference errors for objects that were explicitly added to a database if the object was modified after a savepoint that added the object.

  • Fixed several bugs that caused ZEO cache corruption when connecting to servers. These bugs affected both persistent and non-persistent caches.

  • Improved the the ZEO client shutdown support to try to avoid spurious errors on exit, especially for scripts, such as zeopack.

  • Packing failed for databases containing cross-database references.

  • Cross-database references to databases with empty names weren’t constructed properly.

  • The zeo client cache used an excessive amount of memory, causing applications with large caches to exhaust available memory.

  • Fixed a number of bugs in the handling of persistent ZEO caches:

    • Cache records are written in several steps. If a process exits after writing begins and before it is finishes, the cache will be corrupt on restart. The way records are written was changed to make cache record updates atomic.
    • There was no lock file to prevent opening a cache multiple times at once, which would lead to corruption. Persistent caches now use lock files, in the same way that file storages do.
    • A bug in the cache-opening logic led to cache failure in the unlikely event that a cache has no free blocks.
  • When using ZEO Client Storages, Errors occured when trying to store objects too big to fit in the ZEO cache file.

  • Fixed bug in blob filesystem helper: the isSecure check was inverted.

  • Fixed bug in transaction buffer: a tuple was unpacked incorrectly in clear.

  • Fixed bug in Connection.TmpStore: load() would not defer to the back-end storage for loading blobs.

  • Fixed bug #190884: Wrong reference to POSKeyError caused NameError.

  • Completed implementation of ZEO authentication. This fixes issue 220856. zodbcode

(No changes) zope.annotation 3.5.0 (2009-09-07)

  • Add ZODB3 to install_requires, because it’s a true requirement of this package, not just a testing requirement, as BTrees are in use.
  • Fix one test that was inactive because it’s function was overriden by a mistake. 3.4.2 (2009-03-09)

  • Clean up package description and documentation a bit.
  • Change mailing list address to zope-dev at, as zope3-dev at is now retired.
  • Remove old zpkg-related files. 3.7.5 (2010-09-12)

  • Define __file__ in doctests to make them pass under Python 2.4. 3.7.4 (2010-09-01)

  • Prefer the standard libraries doctest module to the one from zope.testing.
  • Remove unneeded dependencies and 3.7.3 (2010-07-14)

  • Apply refactoring from #153309.
  • Fix LP bug 605057: ZCML links were no longer working (Guilherme Salgado) 3.7.2 (2010-03-07)

  • Adapted tests for Python2.4 3.7.1 (2010-01-05)

  • Updated tests to work with zope.publisher 3.12 (using zope.login). 3.7.0 (2009-12-22)

  • Updated tests to work with latest zope.testing and use zope.browserpage in favor of 3.6.8 (2009-11-18)

  • Updated the tests after moving IPossibleSite and ISite to zope.component. 3.6.7 (2009-09-29)

  • Updated the tests after moving ITraverser back to zope.traversing. 3.6.6 (2009-09-15)

  • Made the tests work again with the most recent Zope Toolkit KGS. 3.6.5 (2009-07-24)

  • Update documentation file in from README.txt to site.txt. 3.6.4 (2009-07-23)

  • The IContained interface moved to zope.location.interfaces. Make a test pass. 3.6.3 (2009-05-16)

  • Explicitly defined default views.
  • Replace relative url links with absolute ones.
  • Added z3c packages to the code browser.
  • Made bin/static-apidoc principially working (publisher and webserver mode). There are still some files which are not correctly fetched. 3.6.2 (2009-03-17)

  • Adapt principal registry book chapter to a new place, as it was moved from to zope.principalregistry.
  • Remove zcml slugs and old zpkg-related files. 3.6.1 (2009-02-04)

  • When a module provides an interface or has an __all__ attribute, use one of those for the module documentation. Fixes LP #323375.
  • Undid broken link to savepoint.txt caused in 3.6.0. The latest version of the transaction package puts savepoint.txt in the tests subpackage.
  • Expanded the presentation of module documentation.
  • Class documentation now includes constructor information. 3.6.0 (2009-01-31)

  • Use zope.container instead of
  • Use instead of and (in at least a few places).
  • savepoint.txt moved from ZODB’s test directory a level up – we follow.
  • Make compatible with new zope.traversing and zope.location. 3.5.0 (2009-01-17)

  • Adapted transaction book chapters for new transaction egg. The README.txt was removed and savepoint.txt was moved. Also add chapter about dooming transactions (doom.txt).
  • Changed mailing list address to zope-dev at, because zope3-dev is retired now.
  • Cleaned up dependencies. 3.5.7 (2010-07-08)

  • 3.5.6 was a bad egg release. 3.5.6 (2010-07-07)

  • Bugfix: Launching svn replaced the whole environment instead of just appending LANG. 3.5.5 (2010-01-09)

  • Extracted RuntimeInfo and ApplicationRoot functionality into zope.applicationcontrol. Import this functionality from this package instead (see BBB imports inside this package). 3.5.4 (2010-01-08)

  • Test dependency on zptpage removed. 3.5.3 (2010-01-05)

  • Updated to use newer zope.publisher 3.12 and zope.login to make tests work. 3.5.2 (2009-12-19)

  • Move ‘zope.ManageApplication’ permission from package
  • Break dependency on by using a conditional import 3.5.1 (2009-08-15)

  • Added missing (normal and test) dependencies.
  • Renenabled functional tests. 3.5.0 (2009-05-23)

  • The application controller is now registered as a utility so that other packages like zope.traversing and do not need to depend on this package directly. This also makes the application controller pluggable. 3.14.0 (2010-04-13)

  • make zope.testing an optional (test) dependency.
  • remove test dependency 3.13.0 (2009-12-24)

  • Import hooks functionality from zope.component after it was moved there from
  • Import ISite from zope.component after it was moved there from zope.location. This lifts the dependency on zope.location.
  • Added missing install dependency on zope.testing. 3.12.0 (2009-06-20)

  • Using zope.processlifetime interfaces and implementations directly instead of BBB imports from
  • Got rid of depencency on
  • Got rid of test dependency on 3.11 (2009-05-13)

  • Event interfaces / implementations moved to zope.processlifetime, version 1.0. Depend on this package, and add BBB imports. 3.10.1 (2009-03-31)

  • Fixed a DeprecationWarning introduced in 3.10.0.
  • Added doctests to long description to show up at pypi. 3.10.0 (2009-03-19)

  • Finally deprecate the “asObject” argument of helper functions in the module. If your code uses any of these functions, please remove the “asObject=True” argument passing anywhere, because the support for that argument will be dropped soon.
  • Move session utility bootstrapping logic from zope.session into this package. This removes a dependency from zope.session to this package.
  • Remove one more deprecated function. 3.9.0 (2009-01-31)

  • Use instead of and
  • Use zope.container instead of
  • Move error log bootstrapping logic from zope.error into this package. This removes a dependency from zope.error to this package. Also added a test for bootstrapping the error log here, which was missing in zope.error. 3.8.0 (2008-08-25)

  • Feature: Developed an entry point that allows you to quickly bring up an application instance for debugging purposes. (Implemented by Marius Gedminas and Stephan Richter.) 3.7.0 (2008-08-19)

  • Added .product.loadConfiguration test-support function; loads product configuration (only) from a file object, allowing test code (including setup) to make use of the same configuration schema support used by normal startup. 3.6.0 (2008-07-23)

  • Added additional test support functions to set the configuration for a single section, and save/restore the entire configuration. 3.5.0 (2008-06-17)

  • Added helper class for supporting product configuration tests.
  • Added documentation for the product configuration API, with tests. 3.7.1 (2010-02-11)

  • Using the new principalfactories.zcml file, from zope.pluggableauth, to avoid duplication errors, in the adapters registration. 3.7.0 (2010-02-08)

  • The Pluggable Authentication utility has been severed and released in a standalone package: zope.pluggableauth. We are now using this new package, providing backward compatibility imports to assure a smooth transition. 3.6.2 (2010-01-05)

  • Fix tests by using zope.login, and require new zope.publisher 3.12. 3.6.1 (2009-10-07)

  • Fix ftesting.zcml due to zope.securitypolicy update.
  • Don’t use in tests, use zope.component’s testing functions instead.
  • Fix functional tests and stop using port 8081. Redirecting to different port without trusted flag is not allowed. 3.6.0 (2009-03-14)

  • Separate the presentation template and camefrom/redirection logic for the loginForm.html view. Now the logic is contained in the class.
  • Fix login form redirection failure in some cases with Python 2.6.
  • Use the new zope.authentication package instead of
  • The “Password Manager Names” vocabulary and simple password manager registry were moved to the zope.password package.
  • Remove deprecated code. 3.5.0 (2009-03-06)

  • Split password manager functionality off to the new zope.password package. Backward-compatibility imports are left in place.
  • Use instead of 3.5.0a2 (2009-02-01)

  • Make old encoded passwords really work. 3.5.0a1 (2009-01-31)

  • Use zope.container instead of
  • Encoded passwords are now stored with a prefix ({MD5}, {SHA1}, {SSHA}) indicating the used encoding schema. Old (encoded) passwords can still be used.
  • Add an SSHA password manager that is compatible with standard LDAP passwords. As this encoding gives better security agains dictionary attacks, users are encouraged to switch to this new password schema.
  • InternalPrincipal now uses SSHA password manager by default. 3.5.0 (2009-12-16)

  • Avoid extraneous testing dependencies and remove test extra.
  • Avoid testing dependency.
  • Removed BBB import for IBasicSkin. 3.4.1 (2009-08-15)

  • Added missing test dependency: 3.5.0 (2009-02-05)

  • Depend on new zope.broken package for the IBroken interface. 3.7.0 (2009-07-25)

  • Use the RAM cache implementation from zope.ramcache. 3.6.0 (2009-05-27)

  • Use zope.componentvocabulary instead of 3.5.0 (2009-01-31)

  • Use zope.container instead of 3.8.1 (2010-01-08)

  • Removed unneeded dependencies on and, moved to the test dependencies.
  • Import hooks functionality from zope.component after it was moved there from This lifts the test dependency on
  • Use new zope.publisher that requires zope.login. 3.8.0 (2009-02-01)

  • Move most of this package’s code to new zope.catalog package, leaving only ZMI-related views and backward-compatibility imports here. 3.7.0 (2009-01-31)

  • Change catalog’s addMenuItem permission to zope.ManageServices as it doesn’t make any sense to add an empty catalog that you can’t modify with zope.ManageContent permission and it’s completely useless without indexes. So there’s no need to show a menu item.
  • Replaced dependency on with a lighter-weight dependency upon the newly refactored zope.container package. 3.6.0 (2009-01-03)

  • Make TextIndex addform use default values as specified in interface. Also, change “searchableText” to “getSearchableText” there, as it’s the right value.
  • Add Keyword (case-insensitive and case-sensitive) catalog indices. It’s now possible to use them, because ones in zope.index now implement IIndexSearch interface.
  • Add support for sorting, reversing and limiting result set in the searchResults method, using new IIndexSort interface features of zope.index. 3.5.2 (2008-12-28)

  • Remove testing dependencies from install_requires. 3.9.1 (2010-09-01)

  • No longer using deprecated zope.testing.doctest. Use python’s build-in doctest instead.
  • Replaced the dependency on zope.deferredimport with BBB imports. 3.9.0 (2010-07-19)

  • Added missing BBB import in
  • Requiring at least zope.component 3.8 where some modules have moved which are BBB imported here. 3.8.4 (2010-01-08)

  • Import hooks functionality from zope.component after it was moved there from
  • Import ISite and IPossibleSite from zope.component after they were moved there from zope.location. This lifts the direct dependency on zope.location.
  • Fix tests using a newer zope.publisher that requires zope.login. 3.8.3 (2009-07-11)

  • Removed unnecessary dependency on 3.8.2 (2009-05-22)

  • Fix missing import in 3.8.1 (2009-05-21)

  • Add deprecation note. 3.8.0 (2009-05-21)

  • IMPORTANT: this package is now empty except for some ZMI definitions in Functionality from this package has been moved to, zope.componentvocabulary and zope.component, so preferably import from those locations.
  • zope.componentvocabulary has the vocabulary implementations that were in now, import them from there for backwards compatibility.
  • moved zope:resource and zope:view directive implementation and tests over into zope.component [zcml]. 3.7.0 (2009-04-01)

  • Removed deprecated zope:defaultView directive and its implementation. New directive to set default view is browser:defaultView. 3.6.1 (2009-03-12)

  • Make class directive schemas importable from old location, raising a deprecation warning. It was moved in the previous release, but some custom directives could possibly use its schemas.
  • Deprecate import of ClassDirective to announce about new location.
  • Change package’s mailing list address to zope-dev at, because zope3-dev at is now retired.
  • Adapt to the move of IDefaultViewName from zope.component.interfaces to zope.publisher.interfaces. 3.6.0 (2009-01-31)

  • Moved the implementation of the <class> directive from this package to In particular, the module has moved to, and a compatibility import has been left in its place.
  • Extracted from with backwards compatibility imports in place. Local site related functionality is now in and packages should import from there.
  • Remove more deprecated on 3.5 code:
    • module that was pointing to the removed back35’s LayerField.
    • module that was moved to zope.component.interface ages ago.
    • zope:content and zope:localUtility directives.
    • zope:factory directive.
    • deprecated imports in zope.component.metaconfigure
    • browser:tool directive and all zope.component.browser meta.zcml stuff.
  • Remove “back35” extras_require as it doesn’t make any sense now.
  • Remove zope.modulealias test dependency as it is not used anywhere.
  • Deprecate ISite and IPossibleSite imports from They were moved to zope.location.interfaces ages ago. Fix imports in itself. 3.5.0 (2008-10-13)

  • Remove deprecated code slated for removal on 3.5. 3.9.1 (2010-09-14)

  • Removed a testing dependency on
  • Replaced a testing dependency on with one on the base zope.securitypolicy distribution. 3.9.0 (2010-08-19)

  • Updated ftesting.zcml to use the new permission names exported by zope.dublincore 3.7. 3.8.2 (2010-01-08)

  • Fix tests using a newer zope.publisher that requires zope.login. 3.8.1 (2009-12-26)

  • Fixed test_directive. Some parts of were moved to zope.browsermenu and zope.browserpage.
  • Moved tests/ to browser/tests.
  • Added undeclared install dependency on
  • Test no longer use deprecated zope.testing.doctestunit but python’s doctest instead. 3.8.0 (2009-05-13)

  • Moved IAdding interface to zope.browser.interfaces, leaving BBB imports. 3.7.2 (2009-03-12)

  • Show a “nothing to add” message instead of empty list in the adding view, if there’s nothing to add.
  • Don’t show the “Add” menu item if there’s nothing to add.
  • Adapt to the removal of deprecated interfaces from zope.component.interfaces. Now IAdding inherits from zope.publisher.interfaces.browser.IBrowserView. 3.7.1 (2009-02-05)

  • Updated test to accomodate “Pythonic” exception now raised from __setitem__ provided by zope.container (KeyError instead of zope.exceptions.UserError). 3.7.0 (2009-01-31)

  • Remove long-time deprecated IContentContainer class.

  • We now rely on a new package called zope.container, which contains the basic implementation of zope.container and is intended to have less dependencies. We have gone through a wide range of packages and updated their dependencies to point to zope.container so that they will also have less indirect dependencies.

    For backwards compatibility we have left the original modules in in place and have placed imports to make sure the symbols exist in their original locations. 3.6.2 (2008-10-21)

  • Fixed bug in _zope_app_container_contained.c. 3.6.1 (2008-10-15) 3.6.0 (2008-05-06)

  • Added an IBTreeContainer interface that allows an argument to the items, keys, and values methods with the same semantics as for a BTree object. The extended interface is implemented by the BTreeContainer class. 3.5 (2007-10-11)

  • Updated bootstrap script to current version.
  • Store length of BTreeContainer in its own Length object for faster __len__ implementation of huge containers.
  • Send IObjectModifiedEvent when changing the title through the @@contents.html view. This fixes
  • Resolve ZopeSecurityPolicy and IRolePermissionManager deprecation warning. 3.4 (2007-04-22)

  • Initial release as a separate project, corresponds to from Zope 3.4.0a1.

(No changes) 3.5.3 (2010-03-11)

  • Avoid creating a DAV namespace adapter per property in PROPPATCH (create only one per namespace in a given request). See LP #98454. 3.5.2 (2010-01-08)

  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.1 (2009-09-15)

  • Corrected invalid use of datetime.strftime. The timezone is denoted by %Z. 3.5.0 (2009-02-01)

  • Use zope.container instead of
  • Use instead of 3.4.2 (2009-01-27)

  • Substitute by direct calls to its wrapped apis. See bug 219302.

(No changes) 3.5.1 (2009-12-15)

  • Added missing zcml namespace to the configure file. 3.5.0 (2009-12-15)

  • Moved CheckDependency event handler and its tests into this package from its former place in zope.container. 3.5.3 (2010-09-01)

  • Removed the dependency on, added missing dependencies.
  • Replaced the use of zope.deferredimport with direct imports. 3.5.2 (2009-01-22)

  • Removed from dependencies, replacing its uses with direct imports.
  • Clean dependencies.
  • Changed mailing list address to, changed url from cheeseshop to pypi.
  • Use zope.ManageServices permission instead of zope.ManageContent for errorRedirect view and menu item, because all IErrorReportingUtility views are registered for zope.ManageServices as well.
  • Fix package’s README.txt 3.6.1 (2010-01-08)

  • Require zope.browserpage which now contains namedtemplate.
  • Fix ftesting.zcml due to zope.securitypolicy update.
  • Fix tests using a newer zope.publisher that requires zope.login. 3.6.0 (2009-05-18)

  • ISystemErrorView interface has been moved to zope.browser.interfaces, leaving BBB import here.
  • Cut dependency on zope.formlib by requiring newer version of which now contains namedtemplate. 3.5.0 (2009-04-06)

  • Use new zope.authentication instead of
  • Removed deprecated code and thus removed dependency on zope.deferredimport.
  • Removed old zpkg-related SETUP.cfg file. 3.4.2 (2009-01-27)

  • Substitute by direct calls to its wrapped apis. See bug 219302.
  • Fixed author email and home page. 3.6.0 (2010-08-19)

  • Updated ftesting.zcml to use the new permission names exported by zope.dublincore 3.7.
  • Using python’s doctest instead of deprecated zope.testing.doctest. 3.5.1 (2010-01-08)

  • Fix ftesting.zcml due to zope.securitypolicy update.
  • Added missing dependency on transaction.
  • Import content-type parser from zope.contenttype, reducing zope.publisher to a test dependency.
  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.0 (2009-01-31)

  • Replace use by Add missing dependency in 3.4.6 (2009-01-27)

  • Remove dependency again. Previous release was wrong. We removed the uses before, so we don’t need it anymore. 3.4.5 (2009-01-27)

  • added missing dependency: 3.5.1 (2009-02-14)

  • Added missing dependency to
  • Fixed e-mail address and homepage.
  • Fixed buildout.cfg, as there is no test extra. 3.5.0 (2009-01-31)

  • Everything except moved to and zope.container.
  • Import IPossibleSite from zope.location.interfaces instead of deprecated place in
  • Use zope.container instead of 4.0.2 (2010-01-22)

  • Seems like 4.0.1 was released already. Brown bag. 4.0.1 (2010-01-08)

  • Import ‘escape’ for backwards compatibility as packages turn out to be importing this too, even though it’s actually from the Python standard library.
  • Widget documentation is now on PyPI too. 4.0 (2010-01-08)

  • The widget implementations have been moved to zope.formlib. This makes this package depend on zope.formlib. The dependency of zope.formlib on this package has been broken. 3.12.1 (2009-12-22)

  • Added missing zope.datetime dependency. 3.12.0 (2009-12-22)

  • Use zope.browserpage in favor of 3.11.1 (2009-12-22)

  • Prefer zope.testing.doctest over doctestunit and adjust test output to newer zope.schema release. 3.11.0 (2009-12-18)

  • Use zope.component.testing in favor of where possible.
  • Define dummy standard_macros for test purposes. This reduces the test dependencies by and zope.browserresource.
  • Removed the and testing dependencies.
  • Refactored code to remove dependency.
  • Made the tests independent of
  • Reduce test dependencies by avoiding and 3.10.0 (2009-12-17)

  • Avoid the dependency, by defining our own FormMacros. 3.9.0 (2009-10-08)

  • Internationalized ‘Invalid value’ used with ConversionError
  • Added dependency on transaction and test dependency on
  • Moved dependencies on ZODB3 and zope.location to the test extra.
  • Reduced the dependency on to a dependency on zope.browsermenu plus a test dependency on zope.browserpage. 3.8.1 (2009-07-23)

  • Fix unittest failure due to translation update. 3.8.0 (2009-05-24)

  • Use standard properties instead of zope.cachedescriptors.
  • Require zope.browser 1.1 instead of for IAdding. 3.7.3 (2009-05-11)

  • Fixed invalid markup. 3.7.2 (2009-03-12)

  • Fixed bug where OrderedMultiSelectWidget did not respect the widgets size attribute.
  • Fixed bug in SequenceWidget where it crashed while trying to iterate a missing_value (None in most of cases) on _getRenderedValue.
  • Adapt to removal of deprecated interfaces from zope.component.interfaces. The IView was moved to zope.publisher and we use our custom IWidgetFactory interface instead of removed zope.component.interfaces.IViewFactory.
  • Fix tests to work on Python 2.6. 3.7.1 (2009-01-31)

  • Adapt to the upcoming zope.schema release 3.5.1 which will also silence the spurious set failures. 3.7.0 (2008-12-11)

  • use zope.browser.interfaces.ITerms instead of
  • Depending on zope.schema>=3.5a1 which uses the builtin set instead of the sets module. 3.6.4 (2008-11-26)

  • The URIDisplayWidget doesn’t render an anchor for empty/None values. 3.6.3 (2008-10-15)

  • Get rid of deprecated usage of LayerField from, replaced by zope.configuration.fields.GlobalInterface. 3.6.2 (2008-09-08)

  • Fixed restructured text in doc tests to unbreak the PyPI page.

(3.6.1 skipped due to a typo) 3.6.0 (2008-08-22)

  • Dropdown widgets display an item for the missing value even if the field is required when no value is selected. See zope/app/form/browser/README.txt on how to switch this off for BBB.
  • Source select widgets for required fields are now required as well. They used not to be required on the assumption that some value would be selected by the browser, which had always been wrong except for dropdown widgets. 3.5.0 (2008-06-05)

  • Translate the title on SequenceWidget’s “Add <title>” button.
  • No longer uses zapi. 3.4.2 (2008-02-07)

  • Made display widgets for sources translate message IDs correctly. 3.5.0 (2009-02-01)

  • Use zope.container instead of 3.5.1 (2010-01-08)

  • Depend on new zope.processlifetime interfaces instead of using BBB imports from
  • Fix ftesting.zcml due to zope.securitypolicy update.
  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.0 (2009-04-05)

  • Moved getRootFolder utility method from to
  • Removed not necessary install dependency on 3.4.2 (2009-01-27)

  • Provide more logging output for the various stages and actions of evolving a database.
  • Fixed bug: A failing last generation would allow starting an app server without having evolved to the minimum generation.
  • Substitute by direct calls to its wrapped apis. See bug 219302.
  • Corrected author email and home page address. 3.8.0 (2010-04-19)

  • Remove dependency on by using the support instead.

    At the time of this writing the test dependency on cannot be removed however, because there is a dependency on for testing, which pulls in the world. 3.7.0 (2010-04-13)

  • Remove unnecessary dependency on
  • Fix for an edge case: If someone does a defaultView for the context object and someone comes with a not allowed method, the exception view fails on getAdapters. 3.6.1 (2010-01-08)

  • Replaced the dependency on zope.deprecation with BBB imports
  • Made the dependency on explicit
  • Fix tests using a newer zope.publisher that requires zope.login. 3.6.0 (2009-05-23)

  • Moved IHTTPException, IMethodNotAllowed, and MethodNotAllowed from to zope.publisher.interfaces.http, fixing dependency cycles involving 3.5.2 (2009-04-01)

  • Replaced deprecated ‘zope:defaultView’ directive with ‘browser:defaultView’ 3.5.1 (2009-03-12)

  • If the ‘CONTENT_LENGTH’ header is provided, provide this length as argument to the read method of the input stream object. 3.5.0 (2009-02-01)

  • Change dependency on to zope.container. 3.4.5 (2010-01-28)

  • Backport r108613 from trunk: Fix for an edge case: If someone does a defaultView for the context object and someone comes with a not allowed method, the exception view fails on getAdapters 3.4.4 (2009-01-29)

  • Make tests compatible with new zope.traversing release. 3.4.3 (2009-01-27)

  • Added missing depencendy: 3.4.2 (2009-01-26)

  • Add a couple of tests to the OPTIONS verb.
  • Substitute by direct calls to its wrapped apis and get rid of as a dependency. See bug LP219302. 3.6.3 (2010-09-01)

  • Remove undeclared dependency on zope.deferredimport.
  • Use zope.publisher >= 3.9 instead of 3.6.2 (2009-10-07)

  • Fix test_translate and follow recent change of HTTPResponse.redirect. 3.6.1 (2009-08-15)

  • Added a missing testing dependency on 3.6.0 (2009-03-18)

  • Some of ZCML configuration was moved into another packages:

    • The global INegotiator utility registration was moved into zope.i18n.
    • The include of zope.i18n.locales was also moved into zope.i18n.
    • The registration of IModifiableUserPreferredLanguages adapter was moved into
    • The IAttributeAnnotation implementation statement for HTTPRequest was moved into zope.publisher and will only apply if zope.annotation is available.
    • The IUserPreferredCharsets adapter registration was also moved into zope.publisher.
  • Depend on zope.component >= 3.6 instead of as the queryNextUtility function was moved there.

  • Remove the old module as the directive was moved to zope.i18n ages ago. 3.5.0 (2009-02-01)

  • Use zope.container instead of 3.4.6 (2009-01-27)

  • Fix a simple inconsistent MRO problem in tests
  • Substitute by direct calls to its wrapped apis. See bug 219302. 3.4.5 (unreleased)

  • This was skipped over by accident. 3.5.2 (2010-07-08)

  • 3.5.1 was a bad release 3.5.1 (2010-07-07)

  • Fixed tests and test tearDown to actually close the DB. 3.5.0 (2009-05-21)

  • Factor out ObjectInterfacesVocabulary into zope.componentvocabulary.
  • Remove various test dependencies.

(No changes) 3.7.1 (2010-01-10)

  • Fix ftesting.zcml due to the zope.securitypolicy update.
  • Removed unneeded dependency on, added the missing one on
  • Added test dependency on zope.login. 3.7.0 (2009-02-01)

  • Move core functionality to new zope.intid package, leaving only ZMI-related browser views here.

    Note, that if you used the exclude directive from zc.configuration package to exclude the subscribers.zcml file from, you need to change the directive to exclude it from zope.intid now. 3.6.0 (2009-01-31)

  • Changed dependency from to zope.container.
  • Move test dependencies and as 3.5.1 (2008-12-11)

  • Make it possible to subscribe object-specific handlers for IntIdAddedEvent/IntIdRemovedEvent. Use them like the
  • Include utility->id mapping of added ids to the IntIdAddedEvent.
  • Removed testing dependencies from install_requires. 3.5.0 (2008-06-19)

  • Separate subscriber configuration into a separate ZCML file. 3.6.1 (2010-03-07)

  • Adapted tests for Python 2.4
  • Added license file 3.6.0 (2009-01-39)

  • Move all functionality to new zope.keyreference package. This package only provides backward-compatibility imports now. 3.5.0b2 (unknown)

  • Performance related change to the conflict resolution code in
  • Added support for new ZODB.ConflictResolution.PersistentReference behavior to persistent key references so that they can now, in many cases, allow conflict resolution when they are used as keys or set members in ZODB BTrees data structures.
  • Move zope.testing to the “test” extra require, because it’s only needed for testing. 3.4.0 (2007-10-24)

  • Initial release independent of the main Zope tree. zope.applicationcontrol 3.5.5 (2010-01-09)

  • Initial release, extracted from 3.6.2 (2010-07-31)

  • Updated copyright to Zope Foundation, even in pot template.
  • Updated e-mail address in pot template to current address of zope mailing list.
  • Added missing test dependency on zope.i18n. 3.6.1 (2010-05-17)

  • Updated Dutch and German translations. 3.6.0 (2009-12-28)

  • Added configure.zcml which registers the translations in the package. So the package contains its configuration. (Till now it was done in 3.5.2 (2009-12-22)

  • Updated tests to handle Unicode correctly.
  • Update Japanese Translation (thanks Takeshi Yamamoto). 3.5.1 (2009-01-27)

  • Added missing dependency (zope.tal) for tests. 3.5.0 (2009-01-26)

  • Moved the dependencies of the extract console script into an extract extras_require to avoid runtime dependencies.
  • Fixed bug #227582 (bad size in zh_CN locale) 3.7.2 (2010-03-21)

  • Added missing i18n domain to browser.zcml. 3.7.1 (2010-02-22)

  • The namespace wasn’t declared correctly. 3.7.0 (2009-03-14)

Initial release. This package was extracted from to separate the functionality without additional dependencies. 3.5.0 (2009-02-01)

  • Use instead of in test.
  • Remove usage of deprecated 3.5.2 (2010-01-08)

  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.1 (2009-03-21)

  • Use instead of 3.5.0 (2009-02-01)

  • Removed OnlineHelpTopicFactory, simple and SimpleViewClass. All of them where using old deprecated and removed Zope3 imports. None of them where used and tested.
  • Use zope.container instead of
  • Removed use of 3.11.1 (2010-09-01)

  • Add metaconfigure.registerType BBB import because some packages use it.
  • Use doctest from standard library instead of zope.testing.doctest. 3.11.0 (2010-04-26)

  • Move tales:expressiontype directive down into zope.browserpage. 3.10.1 (2010-01-04)

  • Fixed the zope.browserpage imports in the namedtemplate module. 3.10.0 (2009-12-22)

  • Moved named template implementation to zope.browserpage. 3.9.0 (2009-12-22)

  • Moved viewpagetemplatefile, simpleviewclass and metaconfigure.registerType into the zope.browserpage package, reversing the dependency. 3.8.0 (2009-12-16)

  • Refactored nested macro test from a functional test into a unit test. This allowed to remove the last outside dependencies.
  • Fixed undeclared testing dependency on
  • Copy trivial NoTraverser class from to avoid a ZCML dependency on that package.
  • Correct testing dependency to point to zope.securitypolicy instead of its variant. The app version is no longer required since 3.4.1.
  • Removed the inline-evaluation extra referring to There’s no code or ZCML left pointing to that package. 3.7.1 (2009-05-27)

  • Restored module, using BBB imports from zope.pagetemplate.engine. 3.7.0 (2009-05-25)

  • Moved the engine module and associated testing machinery to zope.pagetemplate (version 3.5.0). 3.6.0 (2009-05-18)

  • Moved namedtemplate.* from zope.formlib here as it is more about a page template engine than a formular library. This also breaks some dependencies on zope.formlib.
  • Added doctests to long_description to show up on pypi. 3.5.0 (2009-02-01)

  • Use zope.container instead of 3.8.1 (2010-06-15)

  • Fixed BBB imports which pointed to a not existing zope.preferences package. 3.8.0 (2010-06-12)

  • Depend on split out zope.preference. 3.7.0 (2010-06-11)

  • Added HTML labels to ZMI forms.
  • Removed as it seems to be unused.
  • Added tests for the ZMI views. 3.6.0 (2009-02-01)

  • Use zope.container instead of 3.5.0 (2009-01-17)

  • Get rid of dependency, replacing its uses with direct imports from original places.
  • Change mailing address from zope3-dev to zope-dev, as the first one is retired now.
  • Fix tests for python 2.6.
  • Remove zpkg stuff and zcml include files for old mkzopeinstance-based instances.

(No changes) 3.7.0 (2009-12-26)

  • Depend on new zope.processlifetime interfaces instead of using BBB imports from
  • Removed unneeded dependency on, added the missing one on transaction. 3.6.1 (2009-03-31)

  • Got rid of DeprecationWarning in >= 3.10. Ironically older versions now produce a DeprecationWarning. 3.6.0 (2009-03-09)

  • Most of functionality is now moved to the zope.principalannotation package. This package now only provides the bootstrap subscriber for the zope3 application server as well as browser menu item for adding PrincipalAnnotationUtility using ZMI. 3.5.1 (2009-03-06)

  • Make boostrap subscriber called on IDatabaseOpenedWithRootEvent instead of IDatabaseOpenedEvent, because this can cause bug if subscriber will be called before root object is created.
  • Use instead of 3.5.0 (2009-02-01)

  • Move boostrap subscriber to bootstrap.zcml file and browser menu item definition to browser.zcml file to ease overriding and excluding configuration.
  • Use zope.container instead of 3.11.1 (2010-04-19)

  • Fix up tests to work with newer release (3.9.0). 3.11.0 (2010-04-13)

  • Don’t depend on and anymore in the tests. 3.10.2 (2010-01-08)

  • Lift the test dependency on 3.10.1 (2010-01-08)

  • make zope.testing an optional (test) dependency
  • Fix tests using a newer zope.publisher that requires zope.login. 3.10.0 (2009-12-15)

  • Moved EndRequestEvent and IEndRequestEvent to zope.publisher.
  • Moved BeforeTraverseEvent and IBeforeTraverseEvent to zope.traversing.
  • Removed dependency on zope.i18n.
  • Import hooks functionality from zope.component after it was moved there from
  • Import ISite from zope.component after it was moved there from zope.location. 3.9.0 (2009-09-29)

  • An abort within handleExceptions could have failed without logging what caused the error. It now logs the original problem.
  • Moved registration of and tests for two publication-specific event handlers here from in order to invert the package dependency.
  • Declared the missing dependency on zope.location. 3.8.1 (2009-06-21)

  • Bug fix: The publication traverseName method used ProxyFactory rather than the publication proxy method. 3.8.0 (2009-06-20)

  • Added a proxy method that can be overridden in subclasses to control how/if security proxies are created.
  • Replaced zope.deprecation dependency with backward-compatible imports 3.7.0 (2009-05-23)

  • Moved the publicationtraverse module to zope.traversing, removing the -> dependency (which was a cycle).
  • Moved IHTTPException to zope.publisher, removing the dependency on
  • Moved the DefaultViewName API from to zope.publisher.defaultview, making it accessible to other packages that need it.
  • Look up the application controller through a utility registration rather than a direct reference. 3.6.0 (2009-05-18)

  • Use zope:adapter ZCML directive instead of zope:view. This avoid dependency on
  • Update imports from to zope.authentication and zope.principalregistry.
  • Use zope.browser.interfaces.ISystemError to avoid dependency on
  • Refactored tests so they can run successfully with ZODB 3.8 and 3.9. 3.5.3 (2009-03-13)

  • Adapt to the removal of IXMLPresentation from which was removed to adapt to removal of deprecated interfaces from zope.component. 3.5.2 (2009-03-10)

  • Use ISkinnable.providedBy(request) instead of IBrowserRequest as condition for calling setDefaultSkin. This at the same time removes dependency to the browser part of zope.publisher.
  • Remove deprecated code.
  • Use built-in set class instead of the deprecated sets.Set and thus don’t cause deprecation warning in Python 2.6. 3.5.1 (2009-01-31)

  • Import ISite from zope.location.interfaces instead of deprecated place in 3.5.0 (2008-10-09)

  • Now annotates the request with the connection to the main ZODB when getApplication is called.
  • Removed support for non-existent Zope versions. 3.10.1 (2010-01-08)

  • Fix tests using a newer zope.publisher that requires zope.login. 3.10.0 (2009-08-31)

  • Fix test dependency on zope.container, now we depend on zope.container >= 3.9. 3.9.0 (2009-08-27)

Refactor package, spliting it to several new packages:

  • zope.browserresource - the resources mechanism was moved here, see its CHANGES.txt for more information about changes during move.
  • zope.ptresource - the page template resource was moved into another package so zope.browserresource doesn’t depend on any templating system. See zope.ptresource’s CHANGES.txt for more information.
  • zope.browsermenu - the menu mechanism was moved here completely.
  • zope.browserpage - the browser:page directive and friends were moved here. Also, these directives don’t depend hardly on menu system anymore, so they simply ignore the “menu” argument when zope.browsermenu is not available.

Backward-compatibility imports are provided, so there should not be much impact for those who uses old imports.

The CacheableBrowserLanguages and ModifiableBrowserLanguages adapters were moved into zope.publisher package, as well as browser:defaultSkin and browser:defaultView ZCML directives and ZCML class configuration for zope.publisher classes.

ZCML registrations of IXMLRPCPublisher adapters for zope.container were moved into zope.container for now. 3.8.4 (2009-07-23)

  • Added dependency on, it is used by 3.8.3 (2009-06-18)

  • Bugfix: Fix IAbsoluteURL for IResource configuration. The latest release was moving the url generation for resources to an adapter which was a good idea. But the adapter was configured for IDefaultBrowserLayer. This means every existing project which dosen’t use IDefaultBrowserLayer will get a wrong IAbsoluteURL adapter and is loosing the @@ part in the resource url. 3.8.2 (2009-06-16)

  • Remove test dependency on
  • Calling a resource to get its URL now uses IAbsoluteURL. 3.8.1 (2009-05-25)

  • Updated to use zope.pagetemplate.engine module (requires versino 3.5.0 or later), instead of precursor.
  • Replaced zope.deprecation dependency with BBB imports 3.8.0 (2009-05-23)

  • There is no direct dependency on anymore (even in the tests).
  • Moved the publicationtraverse module to zope.traversing, removing the -> dependency (which was a cycle).
  • Moved the DefaultViewName API from to zope.publisher.defaultview, making it accessible to other packages that need it. 3.7.0 (2009-05-22)

  • Use zope.componentvocabulary instead of (except for tests and IBasicViewInformation).
  • Use zope.browser for IAdding interface (instead of
  • Update references to to point to the new locations in zope.component.testfiles.views. 3.6.2 (2009-03-18)

  • Register IModifiableUserPreferredLanguages adapter in the ZCML configuration of package. This was previously done by 3.6.1 (2009-03-12)

  • Remove deprecated code.
  • Adapt to removal of deprecated interfaces from zope.component.interfaces. The IResource is now moved to The IView and IDefaultViewName is now in zope.publisher.interfaces. The IPresentation interface was removed completely. 3.6.0 (2009-01-31)

  • Use zope.container instead of
  • Use instead of 3.5.3 (2009-01-27)

  • Finally removed <browser:skin> and <browser:layer> that were marked as deprecated in 2006/02. 3.5.2 (2008-12-06)

  • Added possibility to specify custom item class in menuItem, subMenuItem and addMenuItem directives using the item_class argument (LP #291865).
  • Menu items registered with <browser:page/> were not re-registered after the first functional test layer ran. In any subsequent functional test layer the items where not availabe (introduced in 3.5.0a3).
  • Added a hook to specify a different BaseURL for resources. This makes sense if you want to put resources on a Content Delivery Network. All you need to do is to register an named Adapter ‘resource’ that implements IAbsoluteURL. 3.5.1 (2008-10-13)

  • Removed usage of deprecated LayerField from 3.5.0 (2008-08-05)

  • Refactored code to provide more hooks when deriving code from this pacakge.
    • A resource’s URL creation is now in its own method.
    • The resource class of factories can be overwritten.
    • The cache timeout value can now be set as a class or instance attribute. 3.5.0a4 (2007-12-28)

  • Backed out the changes for the controversial XML-RPC skin support. 3.5.0a3 (2007-11-27)

  • make it possible to override menus: this was not possible because new interfaces where created any time a menu with the same name was created.
  • Resolve ZopeSecurityPolicy deprecation warning. 3.5.0a2 (2007-08-23)

  • <browser:defaultView> now accepts classes as well as interfaces. 3.5.0a1 (2007-08-21)

  • Added a layer attribute to xmlrpc:view. This works just like layers for browser:view etc. but uses the IXMLRPCSkinType. 3.5.1 (2009-07-21)

  • Require the new roman package, since docutils does not install it correctly. 3.5.0 (2009-01-17)

  • Adapted to docutils 0.5 for ReST rendering: get rid of the ZopeTranslator class, because docutils changed the way it uses translator so previous implementation doesn’t work anymore. Instead, use publish_parts and join needed parts in the render method of the renderer itself.
  • Removed deprecated meta.zcml stuff and zpkg stuff.
  • Replaced __used_for__ with zope.component.adapts calls. 3.5.1 (2010-01-08)

  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.0 (2009-02-01)

  • Use zope.container instead of 3.5.0 (2008-12-16)

  • Remove deprecated vocabulary directive.
  • Add test for component-based vocabulary registry. 3.7.5 (2010-01-08)

  • Move ‘zope.ManageApplication’ permission to
  • Fix tests using a newer zope.publisher that requires zope.login. 3.7.3 (2009-11-29)

  • provide a clean zope setup and move to a test dependency
  • removed unused dependencies like ZODB3 etc. from install_requires 3.7.2 (2009-09-10)

  • Added data attribute to ‘_protections.zcml’ for PersistentList and PersistentDict to accomodate UserList and UserDict behavior when they are proxied. 3.7.1 (2009-08-15)

  • Changed globalmodules.zcml to avoid making declarations for deprecated standard modules, to avoid deprecation warnings.

    Note that globalmodules.zcml should be avoided. It’s better to make declarations for only what you actually need to use. 3.7.0 (2009-03-14)

  • All interfaces, as well as some authentication-related helper classes and functions (checkPrincipal, PrincipalSource, PrincipalTerms, etc.) were moved into the new zope.authentication package. Backward-compatibility imports are provided.
  • The “global principal registry” along with its zcml directives was moved into new “zope.principalregistry” package. Backward-compatibility imports are provided.
  • The IPrincipal -> zope.publisher.interfaces.logginginfo.ILoggingInfo adapter was moved to zope.publisher. Backward-compatibility import is provided.
  • The PermissionsVocabulary and PermissionIdsVocabulary has been moved to the package. Backward-compatibility imports are provided.
  • The registration of the “zope.Public” permission as well as some other common permissions, like “zope.View” have been moved to Its configure.zcml is now included by this package.
  • The “protect” function is now a no-op and is not needed anymore, because now knows about i18n messages and __name__ and __parent__ attributes and won’t protect them by default.
  • The addCheckerPublic was moved from to Backward-compatibility import is provided.
  • The LocalPermission class is now moved to new package. This package now only has backward-compatibility imports and zcml includes.
  • Cleanup dependencies after refactorings. Also, don’t depend on for tests anymore.
  • Update package’s description to point about refactorings done. 3.6.2 (2009-03-10)

  • The Allow, Deny and Unset permission settings was preferred to be imported from zope.securitypolicy.interfaces for a long time and now they are completely moved there from as well as the PermissionSetting class. The only thing left for backward compatibility is the import of Allow/Unset/Deny constants if zope.securitypolicy is installed to allow unpickling of security settings. 3.6.1 (2009-03-09)

  • Depend on new zope.password package instead of to get password managers for the authentication utility, thus remove dependency on
  • Use template for AuthUtilitySearchView instead of ugly HTML constructing in the python code.
  • Bug: The sha and md5 modules has been deprecated in Python 2.6. Whenever the ZCML of this package was included when using Python 2.6, a deprecation warning had been raised stating that md5 and sha have been deprecated. Provided a simple condition to check whether Python 2.6 or later is installed by checking for the presense of json module thas was added only in Python 2.6 and thus optionally load the security declaration for md5 and sha.
  • Remove deprecated code, thus removing explicit dependency on zope.deprecation and zope.deferredimport.
  • Cleanup code a bit, replace old __used_for__ statements by adapts calls. 3.6.0 (2009-01-31)

  • Changed mailing list address to zope-dev at, because zope3-dev is retired now. Changed “cheeseshop” to “pypi” in the package homepage.
  • Moved the protectclass module to leaving only a compatibility module here that imports from the new location.
  • Moved the <module> directive implementation to
  • Use zope.container instead of;. 3.5.3 (2008-12-11)

  • use zope.browser.interfaces.ITerms instead of 3.5.2 (2010-01-08)

  • Remove deprecated compatibility imports. Now, this package only contains ZMI views for zope.securitypolicy.
  • Update package’s description and mailing list address.
  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.1 (2009-01-27)

  • Added missing dependency for tests: 3.5.0 (2008-12-11)

  • use zope.browser.interfaces.ITerms instead of This version requires 3.7.0 or higher if you use the browser part of this package. (grant form)
  • Substitute by direct calls to its wrapped apis. See bug 219302 3.5.0 (2009-12-19)

  • Use zope.password instead of
  • Depend on new zope.processlifetime implementations instead of using BBB imports from 3.6.2 (2010-09-01)

  • Remove undeclared dependency on zope.deferredimport. 3.6.1 (2010-02-06)

  • Include meta.zcml from zope.securitypolicy 3.6.0 (2009-02-01)

  • Use instead of in tests. 3.5.2 (2009-01-27)

  • Fixed tearDown-Error in tests.

(No changes) 3.7.5 (2010-04-10)

  • Switch doctests to use the stdlib doctest module, rather than the deprecated zope.testing.doctest variant. 3.7.4 (2010-01-08)

  • Import hooks functionality from zope.component after it was moved there from
  • Import ISite from zope.component after it was moved there from zope.location. This lifts the dependency on zope.location.
  • Fix tests using a newer zope.publisher that requires zope.login. 3.7.3 (2009-08-20)

  • Fixed tests for python 2.4 as well as python 2.5 and 2.6; the change in version 3.7.1 introduced test regressions in python 2.4. 3.7.2 (2009-07-24)

  • Adjusted tests after the referenced memory leak problem has been fixed in zope.component. 3.7.1 (2009-07-21)

  • Fixed failing tests. The code revealed that the tests expected the wrong value. 3.7.0 (2009-06-19)

  • Depend on new zope.processlifetime interfaces instead of using BBB imports from
  • Removed unused dependency on 3.6.2 (2009-04-26)

  • Removed deprecated back35 module and loose the dependency on zope.deferredimport.
  • Adapt to refactoring. We depend on zope.password now instead.
  • Adapt to latest refactoring. We don’t need this package anymore. 3.6.1 (2009-03-12)

  • Use ISkinnable.providedBy(request) instead of IBrowserRequest as condition for calling setDefaultSkin in HTTPCaller. This at the same time removes dependency to the browser part of zope.publisher.
  • Adapt to the move of IDefaultViewName from zope.component.interfaces to zope.publisher.interfaces.
  • Remove the DEPENDENCIES.cfg file for zpkg. 3.6.0 (2009-02-01)

  • Fix AttributeError in (when called without name argument).
  • Use zope.container instead of
  • Use instead of and for some parts. 3.5.6 (2008-10-13)

  • Change argument variable name in provideAdapter to not conflict with buitin keyword in Python 2.6. 3.5.5 (2008-10-10)

  • Re-configured functional test setup to create test-specific instances of HTTPCaller to ensure that cookies are not shared by doctests in a test suite. 3.5.4 (2008-08-25)

  • Clean up some transaction management in the functional test setup. 3.5.3 (2008-08-22)

  • Fix isolation enforcement for product configuration around individual tests. 3.5.2 (2008-08-21)

  • Added missing dependency information in
  • Added missing import.
  • Repair memory leak fix released in 3.4.3 to be more sane in the presence of generations. 3.5.1 (2008-08-20)

  • Correct Fred’s “I’m a doofus” release. 3.5.0 (2008-08-20)

  • Add support for product-configuration as part of functional layers; this more closely mirrors the configuration order for normal operation. 3.6.0 (2009-02-01)

  • Converted from using to zope.container. 3.5.1 (2009-01-29)

  • Add compatibility for newer zope.traversing releases that require us to explicitly set up testing. This also works with older releases. 3.5.0 (2009-01-17)

  • Get rid of dependency, replacing its uses with direct imports.
  • Clean up dependencies, move testing and rotterdam dependencies to extra requires.
  • Fix mailing list address to instead of retired Change cheeseshop to pypi in the package url.
  • Replace __used_for__ in with zope.component.adapts calls to make more sense.
  • Remove obsolete zpkg files, zcml include file for mkzopeinstance-based installations, versions.txt that makes no sense now. 3.5.0 (2009-07-24)

  • Update tests to work with latest packages. 3.4.2 (2009-01-27)

  • Fix tests. Remove unused code.
  • Add zope.testbrowser to testing dependencies for ZEO tests.
  • Remove unneeded dependency on ZODB3.
  • Remove dependency on, substituting its uses with direct imports.
  • Change “cheeseshop” to “pypi” in the package homepage. 3.5.0 (2009-02-01)

  • Adjusted tests so that basic objects and interfaces are pulled from and zope.location rather than 3.9.2 (2010-05-23)

  • Fixed test breakage due to changes in mechanize 0.2.0. 3.9.1 (2010-04-24)

  • Add support for testing XMLRPC using
  • Fix a bug in the status string handling in’s FakeResponse. 3.9.0 (2010-04-19)

  • Return a FakeResponse object in, so it becomes easier to port over tests from’s HTTPCaller.
  • X-Powered-By header is now stripped by as it is by
  • Bugfix: initialize any <logger> defined in the config, as does. (Fixes #291147) 3.8.0 (2010-04-14)

  • is now a lot more compatible with the HTTPCaller() functionality in, which it can replace:
    • same transaction behavior - pending transactions are committed before request and synchronized afterwards.
    • support for browser.handleErrors (for zope.testbrowser).
    • support for clear-text (non-base64) Basic authentication headers, which are easier to read in the tests (though not correct in actual HTTP traffic). 3.7.0 (2010-04-13)

  • Rewrite tests in order not to dependent on and

  • introduces new testing functionality that can replace the old functionality in In addition, it supports using zope.testbrowser with WSGI directly (instead of relying on, which pulls in a lot of dependencies).

    The interesting parts are:

    • this sets up a minimal layer that allows you to use the new WSGI-enabled Browser.
    • this is a subclass of Browser from zope.testbrowser.browser. Use it instead of zope.testbrowser.browser directly to use the test browser with WSGI. You need to use BrowserLayer with your tests for this to work.
    • this is the equivalent to the http() function in It allows low-level HTTP access through WSGI. You need to use BrowserLayer with your tests for this to work. 3.6.1 (2010-01-29)

  • Support product configuration sections in Zope configuration files. 3.6.0 (2009-06-20)

  • Import database events directly from zope.processlifetime instead of using BBB imports in 3.5.2 (2009-04-03)

  • The WSGIPublisherApplication uses now the ILoggingInfo concept given from zope.publisher.interfaces.logginginfo for log user infos usable for access logs. This allows you to implement your own access log user info message. See zope.publisher.interfaces.logginginfo.ILoggingInfo for more information. 3.5.1 (2009-03-31)

  • The WSGIPublisherApplication call now provides a user name in the environment meant for use in logs. 3.5.0 (2009-02-10)

  • Make devmode warning message more generic. We don’t nesessary have the etc/zope.conf file nowadays when using buildout-based setups.

  • Add an application factory for Paste. So Zope application can now be easily deployed with Paste .ini configuration like this:

    use =
    config_file = %(here)s/zope.conf
    handle_errors = false

    The config_file is a required argument, however the handle_errors defaults to True if not specified. Setting it to False allows you to make WSGIPublisherApplication not handle exceptions itself but propagate them to an upper middleware, like WebError or something.

  • The WSGIPublisherApplication constructor and getWSGIApplication function now accept optional handle_errors argument, described above.

  • Change mailing list address to zope-dev at instead of retired one. 3.5.1 (2010-02-06)

  • Fix test by including zope.login
  • Include ftesting.zcml from
  • Include meta.zcml from zope.securitypolicy 3.5.0 (2009-02-01)

  • Update with 3.7.0 (2009-12-28)

  • Use new which has its own configure.zcml.
  • No longer using zope.testing.doctestunit as it is deprecated now. Using python’s doctest module. 3.6.1 (2009-12-16)

  • Removed reference to no longer existing configure.zcml from 3.6.0 (2009-07-11)

  • No longer depends on deprecated but on zope.componentvocabulary. 3.5.5 (2009-05-23)

  • Added missing dependencies, including and 3.5.4 (2009-05-18)

  • Added missing dependency, as we include its ZCML.
  • Added missing test dependency to make tests pass. 3.5.3 (2009-02-04)

  • Added dependency (we include its ZCML). 3.5.2 (2009-01-31)

  • We depended on zope.formlib but didn’t include its configuration. Now it’s included in configure.zcml.
  • We include ZCML of but didn’t mention it as a dependency. 3.5.1 (2008-12-28)

  • Add include of Because component-based vocabularies are used everywhere and we need to import somehow to make it work. This is needed because of removal of the include of’s meta.zcml in the previous release. 3.5.0 (2008-12-16)

  • Remove deprecated include of
  • Remove deprecated include of
  • Remove use of zope.modulealias. 3.5.0 (2009-04-05)

  • Moved getRootFolder utility method from to
  • Fixed author email and home page address. 3.5.1 (2010-01-08)

  • Use zope.pagetemplate instead of
  • Fix tests using a newer zope.publisher that requires zope.login. 3.5.0 (2009-01-31)

  • Use zope.container instead of
  • Use instead of Add missing dependency on zope.authentication 3.7.1 (2010-04-30)

  • Removed undeclared testing dependency on zope.testing. 3.7.0 (2009-03-14)

Initial release. This package was splitted off from to provide a separate common interface definition for authentication utilities without extra dependencies. zope.broken 3.6.0 (2010-01-09)

  • The IBroken interface has been merged into the ZODB3 distribution. Import the interface from there, while providing a copy for backwards compatibility with older versions of the ZODB3. 3.5.0 (2009-02-04)

  • Created zope.broken to hold depended upon bits of zope.browser 1.3 (2010-04-30)

  • Removed test extra and zope.testing dependency. 1.2 (2009-05-18)

  • Moved ISystemErrorView interface here from to break undesirable dependencies.
  • Fixed home page and author’s e-mail address.
  • Added doctests to long_description. 1.1 (2009-05-13)

  • Moved IAdding interface here from to break undesirable dependencies. 1.0 (2009-05-13)

  • Moved IView and IBrowserView interfaces here from zope.publisher.interfaces to break undesirable dependencies. 0.5.0 (2008-12-11)

  • Moved ITerms interface here from to break undesirable dependencies. zope.browsermenu 3.9.1 (2010-04-30)

  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest. 3.9.0 (2009-08-27)

Initial release. This package was splitted off zope.browserpage 3.12.2 (2010-05-24)

  • Fixed unit tests broken under Python 2.4 by the switch to the standard library doctest module. 3.12.1 (2010-04-30)

  • Prefer the standard library’s doctest module to the one from zope.testing. 3.12.0 (2010-04-26)

  • Move the implementation of tales:expressiontype here from 3.11.0 (2009-12-22)

  • Also moved named template implementation from here. 3.10.1 (2009-12-22)

  • We need to depend on the untrustedpython extra of, since we import from zope.pagetemplate.engine. 3.10.0 (2009-12-22)

  • Remove dependency on by moving viewpagetemplatefile, simpleviewclass and metaconfigure.registerType into this package. 3.9.0 (2009-08-27)

  • Initial release. This package was split off from zope.browserresource 3.10.3 (2010-04-30)

  • Prefer the standard libraries doctest module to the one from zope.testing. 3.10.2 (2009-11-25)

  • The previous release had a broken egg, sorry. 3.10.1 (2009-11-24)

  • Import hooks functionality from zope.component after it was moved there from This lifts the dependency on and thereby, ZODB.
  • Import ISite and IPossibleSite from zope.component after they were moved there from zope.location. 3.10.0 (2009-09-25)

  • Add an ability to forbid publishing of some files in the resource directory, this is done by fnmatch’ing the wildcards in the forbidden_names``class attribute of ``DirectoryResource. By default, the .svn is in that attribute, so directories won’t publish subversion system directory that can contain private information. 3.9.0 (2009-08-27)

Initial release. This package was splitted off as a part of refactoring process.

Additional changes that are made during refactoring:

  • Resource class for file resources are now selected the pluggable way. The resource directory publisher and browser:resource ZCML directive now creating file resources using factory utility lookup based on the file extension, so it’s now possible to add new resource types without introducing new ZCML directives and they will work inside resource directories as well.

    NOTE: the “resource_factories” attribute from the DirectoryResource was removed, so if you were using this attribute for changing resource classes for some file extensions, you need to migrate your code to new utility-based mechanism.

    See zope.browserresource.interfaces.IResourceFactoryFactory interface.

  • The Image resource class was removed, as they are actually simple files. To migrate, simply rename the “image” argument in browser:resource and browser:i18n-resource directives to “file”, if you don’t do this, resouces will work, but you’ll get deprecation warnings.

    If you need custom behaviour for images, you can register a resource factory utility for needed file extensions.

  • The PageTemplateResource was moved into a separate package, “zope.ptresource”, which is a plugin for this package now. Because of that, the “template” argument of browser:resource directive was deprecated and you should rename it to “file” to migrate. The PageTemplateResource will be created for “pt”, “zpt” and “html” files automatically, if zope.ptresource package is included in your configuration.

  • Fix stripping the “I” from an interface name for icon title, if no title is specified.

  • When publishing a resource via Resources view, set resource parent to an ISite object, not to current site manager.

  • Clean up code and improve test coverage. zope.cachedescriptors 3.5.1 (2010-04-30)

  • Removed undeclared testing dependency on zope.testing. 3.5.0 (2009-02-10)

  • Remove dependency on ZODB by allowing to specify storage factory for zope.cachedescriptors.method.cachedIn which is now dict by default. If you need to use BTree instead, you must pass it as factory argument to the zope.cachedescriptors.method.cachedIn decorator.
  • Remove zpkg-related file.
  • Clean up package description and documentation a bit.
  • Change package mailing list address to zope-dev at, as zope3-dev at is now retired. 3.4.0 (2007-08-30)

Initial release as an independent package zope.catalog 3.8.1 (2009-12-27)

  • Removed dependency. 3.8.0 (2009-02-01)

  • Move core functionality from to this package. The package now only contains ZMI-related browser views and backward-compatibility imports. zope.component 3.9.5 (2010-07-09)

  • Fix test requirements specification. 3.9.4 (2010-04-30)

  • Prefer the standard libraries doctest module to the one from zope.testing. 3.9.3 (2010-03-08)

  • The ZCML directives provided by zope.component now register the components in the registry returned by getSiteManager instead of the global registry. This allows the hooking of the getSiteManager method before the load of a ZCML file to register the components in a custom registry. 3.9.2 (2010-01-22)

  • Fixed a bug introduced by recent refactoring, where passing CheckerPublic to securityAdapterFactory wrongly wrapped the factory into a LocatingUntrustedAdapterFactory. 3.9.1 (2010-01-21)

  • The tested testrunner somehow gets influenced by options of the outer testrunner, such a the -v option. We modified the tests so that it avoids this. 3.9.0 (2010-01-21)

  • Add testlayer support. It is now possible to load a ZCML file within tests more easily. See and zope.component.testlayer.txt. 3.8.0 (2009-11-16)

  • Removed the dependencies on zope.proxy and from the zcml extra: zope.component does not hard depend on them anymore; the support for security proxied components ZCML registrations is enabled only if and zope.proxy are available.
  • Moved the IPossibleSite and ISite interfaces here from zope.location as they are dealing with zope.component’s concept of a site, but not with location.
  • Moved the functionality to zope.component.hooks as it isn’t actually dealing with’s concept of a site. 3.7.1 (2009-07-24)

  • Fixed a problem, where queryNextUtility could fail if the context could not be adapted to a IComponentLookup.

  • Fixed 2 related bugs:

    When a utility is registered and there was previously a utility registered for the same interface and name, then the old utility is unregistered. The 2 bugs related to this:

    • There was no Unregistered for the implicit unregistration. Now there is.
    • The old utility was still held and returned by getAllUtilitiesRegisteredFor. In other words, it was still considered registered, eeven though it wasn’t. A particularly negative consequence of this is that the utility is held in memory or in the database even though it isn’t used. 3.7.0 (2009-05-21)

  • The HookableTests were not run by the testrunner.
  • Add in zope:view and zope:resource implementations into zope.component.zcml (dependency loaded with zope.component [zcml]). 3.6.0 (2009-03-12)

  • IMPORTANT: the interfaces that were defined in the zope.component.bbb.interfaces and deprecated for years are now (re)moved. However, some packages, including part of zope framework were still using those interfaces. They will be adapted for this change. If you were using some of those interfaces, you need to adapt your code as well:

    • The IView and IDefaultViewName were moved to zope.publisher.interfaces.

    • The IResource was moved to

    • IContextDependent, IPresentation, IPresentationRequest, IResourceFactory, IViewFactory were removed completely.

      If you used IViewFactory in context of, there’s now IWidgetFactory in the instead.

  • Add getNextUtility/queryNextUtility functions that used to be in earlier (and in even more earlier).

  • Added a pure-Python ‘hookable’ implementation, for use when ‘zope.hookable’ is not present.

  • Removed use of ‘zope.deferredimport’ by breaking import cycles.

  • Cleanup package documentation and changelog a bit. Add sphinx-based documentation building command to the buildout.

  • Remove deprecated code.

  • Change package’s mailing list address to zope-dev at, because zope3-dev at is now retired. 3.5.1 (2008-07-25) 3.5.0 (2008-07-25)

  • Support registration of utilities via factories through the component registry and return factory information in the registration information. This fixes
  • Optimized un/registerUtility via storing an optimized data structure for efficient retrieval of already registered utilities. This avoids looping over all utilities when registering a new one. zope.componentvocabulary 1.0 (2009-05-19)

  • Initial public release, derived from and to replace them. zope.configuration 3.7.2 (2010-04-30)

  • Prefer the standard libraries doctest module over zope.testing.doctest. 3.7.1 (2010-01-05)

  • Jython support: use __builtin__ module import rather than assuming __builtins__ is available
  • Jython support: deal with the fact that the Jython SAX parser returns attribute sets that have an empty string indicating no namespace instead of None.
  • Allow test to run at least a subset of the tests that would be run when using the zope testrunner: test runs 53 tests, while bin/test runs 156. 3.7.0 (2009-12-22)

  • Adjust testing output to newer zope.schema.
  • Prefer zope.testing.doctest over doctestunit. 3.6.0 (2009-04-01)

  • Removed dependency of zope.deprecation package.
  • Don’t suppress deprecation warnings any more in ‘zope.configuration’ package level. This makes it more likely other packages will generate deprecation warnings now, which will allow us to remove more outdated ones.
  • Don’t fail when zope.testing is not installed.
  • Added missing processFile method to IConfigurationContext. It is already implemented in the mix-in class, zope.configuration.config.ConfigurationContext, and used by implementations of include and exclude directives. 3.5.0 (2009-02-26)

  • Added the exclude directive to standard directives. It was previously available via zc.configuration package and now it’s merged into zope.configuration.
  • Changed package’s mailing list address to zope-dev at, change “cheeseshop” to “pypi” in the package’s url. 3.4.1 (2008-12-11)

  • Use built-in ‘set’ type, rather than importin the ‘sets’ module, which is deprecated in Python 2.6.
  • Added support to bootstrap on Jython. zope.container 3.11.0 (2009-12-31)

  • Copy two trivial classes from zope.cachedescriptors into this package, which allows us to remove that dependency. We didn’t actually use any caching properties as the dependency suggested. 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
  • Break testing dependency on 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 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 by using a zcml condition on the qsubscriber ZCML directive that registers the CheckDependency handler for IObjectRemovedEvent. If is not installed, this subscriber will never be registered. 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 Fixes:
  • 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 This package is intended to have far less dependencies than
  • This package also contains the container implementation that used to be in zope.contentprovider 3.6.1 (2009-12-23)

  • Ensure that our configure.zcml can be loaded without requiring further dependencies. It uses a tales:expressiontype directive defined in We keep that dependency optional, as not all consumers of this package use ZCML to configure the expression type. 3.6.0 (2009-12-22)

  • Updated test dependency to use zope.browserpage. 3.5.0 (2009-03-18)

  • Add very simple, but useful base class for implementing content providers, see zope.contentprovider.provider.ContentProviderBase.
  • Remove unneeded testing dependencies. We only need zope.testing and
  • Remove zcml slug and old zpkg-related files.
  • Added setuptools dependency to
  • Clean up package’s description and documentation a bit. Remove duplicate text in README.
  • Change mailing list address to zope-dev at instead of retired one.
  • Change cheeseshop to pypi in the package url. zope.contenttype 3.5.1 (2010-03-23)

  • LP #242321: fix IndexError raised when testing strings consisting solely of leading whitespace.
  • Updated mime-type for .js to be application/javascript. 3.5.0 (2009-10-22)

  • Moved the implementation of zope.publisher.contenttype to zope.contenttype.parse, moved tests along. 3.4.3 (2009-12-28)

  • Updated mime-type for .js to be application/javascript. 3.4.1 (2009-02-04) zope.copy 3.5.0 (2009-02-09)

  • Initial release. The functionality was extracted from zc.copy to provide a generic object copying mechanism with minimal dependencies. zope.copypastemove 3.6.0 (2009-12-16)

  • Use zope.principalannotation in favor of its app variant.
  • Avoid and testing dependencies. 3.5.2 (2009-08-15)

  • Fix documentation for the IObjectCopier.copyTo method.
  • Added missing dependency on 3.5.1 (2009-02-09)

  • Use the new zope.copy package for ObjectCopier to provide pluggable copying mechanism that is not dependent on zope.location hardly.
  • Move the ItemNotFoundError exception to the interfaces module as it’s part of public API. Old import still works as we actually use it where it was previously defined, however, the new import place is preferred. 3.5.0 (2009-01-31)

  • Use zope.container instead of 3.4.1 (2009-01-26)

  • Moved the test dependencies to a test extra requirement. zope.datetime

(No changes) zope.deferredimport 3.5.0 (2009-02-04)

  • Added support to bootstrap on Jython.
  • Added reference documentation. zope.deprecation

(No changes) zope.documenttemplate 3.4.2 (2008/10/10)

  • Re-release 3.4.1 3.4.1 (2008/10/10)

  • Fixed usage of ‘with’ as a variable name. It is now a keyword in Python 2.6, causing a SyntaxError. zope.documenttemplate now supports Python 2.6. zope.dottedname 3.4.6 (2009-09-15)

  • Make tests pass on python26. 3.4.5 (2009-01-27)

  • Move README.txt in the egg, so tests works with the released egg as well. 3.4.4 (2009-01-27)

  • Fix ReST in README.txt, fix broken tests with recent zope.testing. 3.4.3 (2008-12-02)

  • More documentation and tests. zope.dublincore 3.7.0 (2010-08-19)

  • Removed backward-compatibility shims for deprecated* permissions.
  • Removed include the zcml configuration of zope.dublincore.browser.
  • Using python`s doctest instead of deprecated zope.testing.doctest. 3.6.0 (2009-12-02)

  • Removed the marker interface IZopeDublinCoreAnnotatable which doesn’t seem to be used.
  • Made the registration of ZDCAnnotatableAdapter conditional, lifting the dependency on zope.annotation and thereby the ZODB, leaving it as a test dependency. 3.5.0 (2009-09-15)

  • Add missing dependencies.
  • Get rid of any testing dependencies beyond zope.testing.
  • Include browser ZCML configuration only if zope.browserpage is installed.
  • Specify i18n domain in package’s configure.zcml, because we use message IDs for permission titles.
  • Remove unused imports, fix one test that was inactive because of being overriden by another one by a mistake. 3.4.2 (2009-01-31)

  • Declare dependency on zope.datetime. 3.4.1 (2009-01-26)

  • Test dependencies are declared in a test extra now.
  • Fix: Make CreatorAnnotator not to fail if participation principal is None zope.error 3.7.0 (2009-09-29)

  • Clean up dependencies. Drop all testing dependencies as we only need zope.testing now.
  • Fix ImportError when zope.testing is not available for some reason.
  • Remove zcml slug and old zpkg-related files.
  • Remove word “version” from changelog entries.
  • Change package’s mailing list address to zope-dev at as zope3-dev at is now retired. Also change cheeseshop to pypi in the package’s homepage url.
  • Add dependency on ZODB3 as we use Persistent.
  • Use a mock request for testing. Dropped the dependency on zope.publisher which was really only a testing dependency.
  • Reduced the dependency on zope.container to one on zope.location by no longer using the Contained mix-in class. 3.6.0 (2009-01-31)

  • Use zope.container instead of
  • Move error log bootstrapping logic (which was untested) to, to which we added a test. zope.event 3.4.1 (2009-03-03)

  • A few minor cleanups. zope.exceptions 3.6.1 (2010-07-06)

  • Fixed tests to work under Python 2.7.
  • PEP8 cleanup and removed obsolete build infrastructure files. 3.6.0 (2010-05-02)

  • Added support to bootstrap on Jython.
  • Added Python 3 support.
  • The dependency on zope.testing seemed spurious, possibly a rest of a real dependency that is gone now. I removed it. 3.5.2 (2008-04-30)

  • Updated CHANGES.txt. 3.5.1 (2008-04-28)

  • Reverted changes in 3.5.0. 3.5.0

  • Added the capability for exceptions to be formatted line-by-line. Unfortunately, also introduced a bug cause each line of the exception to be its own log message. zope.file 0.5.0 (2009-07-23)

  • Change package’s mailing list address to zope-dev at instead of the retired one.
  • Made tests compatible with ZODB 3.9.
  • Removed not needed install requirement declarations. 0.4.0 (2009-01-31)

  • openDetached is now protected by zope.View instead of zope.ManageContent.
  • Use zope.container instead of zope.filerepresentation 3.6.0 (2009-10-08)

  • Added IRawReadFile and IRawWriteFile interfaces. These extend IReadFile and IWritefile, respectively, to behave pretty much like a standard Python file object with a few embellishments. This in turn allows efficient, iterator- based implementations of file reading and writing.
  • Removed DEPENDENCIES.cfg
  • Removed dependency on zope.container: IReadDirectory and IWriteDirectory inherit only from interfaces defined in zope.interface and zope.interface.common.mapping. 3.5.0 (2009-01-31)

  • Changed use of to zope.container. zope.formlib 4.0.4 (2010-07-06)

  • Fixed tests to pass under Python 2.7.
  • Fix validation of “multiple” attributes in 4.0.2 (2010-03-07)

  • Adapted tests for Python 2.4 (enforce sorting for short pprint output) 4.0.1 (2010-02-21)

  • Documentation uploaded to PyPI now contains widget documentation.
  • Escape MultiCheckBoxWidget content [LP:302427]. 4.0 (2010-01-08)

  • Widget implementation and all widgets from have been moved into zope.formlib, breaking zope.formlib’s dependency on (instead now depends on zope.formlib).

    Widgets can all be imported from zope.formlib.widgets.

    Widget base classes and render functionality is in zope.formlib.widget.

    All relevant widget interfaces are now in zope.formlib.interfaces. 3.10.0 (2009-12-22)

  • Use named template from zope.browserpage in favor of 3.9.0 (2009-12-22)

  • Use ViewPageTemplateFile from zope.browserpage. 3.8.0 (2009-12-22)

  • Adjusted test output to new zope.schema release. 3.7.0 (2009-12-18)

  • Rid ourselves from test dependencies.
  • Fix: Button label needs escaping 3.6.0 (2009-05-18)

  • Remove deprecated imports.
  • Remove dependency on (use IAdding from zope.browser.interfaces) instead. Depend on zope.browser>=1.1 (the version with IAdding).
  • Moved namedtemplate to, to cut some dependencies on zope.formlib when using this feature. Left BBB imports here. 3.5.2 (2009-02-21)

  • Adapt tests for Python 2.5 output. 3.5.1 (2009-01-31)

  • Adapt tests to upcoming zope.schema release 3.5.1. 3.5.0 (2009-01-26) New Features
  • Test dependencies are declared in a test extra now.

  • Introduced zope.formlib.form.applyData which works like applyChanges but returns a dictionary with information about which attribute of which schema changed. This information is then sent along with the IObjectModifiedEvent.

    This fixes Bugs Fixed
  • Actions that cause a redirect (301, 302) do not cause the render method to be called anymore.
  • The zope.formlib.form.Action class didn’t fully implement zope.formlib.interfaces.IAction.
  • zope.formlib.form.setupWidgets and zope.formlib.form.setupEditWidgets did not check for write access on the adapter but on context. This fixes zope.hookable 3.4.1 (2009-04-05)

  • Updated tests for compatibility with Python 2.6 traceback formats.
  • Use Jython-compatible zope.html 2.1.0 (2010-05-25)

  • Use CKEditor 3.2.1
  • Added configuration to use un-minified version of CKEditor when using dev mode.
  • Fixed import that caused test failures. 2.0.0 (2009-09-04)

  • Add CKeditor 3.0 widget. 1.2.0 (2009-07-06)

  • Use FCKeditor
  • Remove _samples directory and erect a barrier to its resurrection 1.1.0 (2008-06-18)

  • Use FCKeditor 2.6
  • Use versioned directories for javascript to cache-bust zope.i18n 3.7.2 (2009-12-14)

  • It’s a critical error when the GetText library is unavailable and compilation is required.
  • Use getSiteManager rather than getGlobalSiteManager in ZCML (these should be one in the same in any non-fancy setup, however if you’ve hooked getSiteManager, you want the ZCML handler to use the hooked version). 3.7.1 (2009-08-07)

  • Fixed the interpackage translation domain merging feature to actually work. We need to defer the merging into the ZCML handler execution phase, as the utilities don’t exist yet during the ZCML parsing phase. Thx to Andreas Zeidler for finding and fixing the issue in PlacelessTranslationService in the first place.
  • Fix translation domains translating a message for a different domain. In the process, fix testMessageIDTranslateForDifferentDomain which seemed to work by mistake as the “other” and “default” domains used the same catalog. This is basically a reversion of 39991. 3.7.0 (2009-03-18)

  • Updated locale data to CLDR 1.1. This introduces contextual month and day names and different month/day name widths. More CLDR updates are expected, see the “nadako-cldr” branch of zope.i18n.
  • Add configure.zcml that registers standard negotiator utility and includes zope.i18n.locales configuration. This was previously done by 3.6.0 (2008-10-26)

  • Fixed a test failure in the compile mo file support.
  • Move the zcml support into an extra. This reduces the dependencies of a standard zope.i18n install by half a dozen packages. 3.5.0 (2008-07-10)

  • Feature: Added new top-level negotiate function, which can be used to negotiate the language when the available languages are set globally via zope_i18n_allowed_languages.
  • Feature: Added support for restricting the available languages. We support an environment variable called zope_i18n_allowed_languages now, which is a list of comma or space separated language codes. If the environment variable is set, the ZCML registration will only process those folders which are in the allowed languages list.
  • Feature: Added optional automatic compilation of mo files from po files. You need to depend on the zope.i18n [compile] extra and set an environment variable called zope_i18n_compile_mo_files to any True value to enable this option.
  • Feature: Re-use existing translation domains when registering new ones. This allows multiple packages to register translations in the same domain. If the same message exists in multiple catalogs the one registered first will take precedence.
  • Feature: Recursive translations of message strings with mappings (, thanks to Hermann Himmelbauer for the inital patch.
  • Bug: When parsing a date, the parsing pattern did not ensure that the line started and ended with the matching pattern, so that ‘1/1/2007’ parsed into ‘1/1/20’ for example. zope.i18nmessageid 3.5.3 (2010-08-10)

  • Made compilation of C extension optional again; 3.5.1 broke this inasmuch as this package become unusable on non-CPython platforms. Making the compilation of the C extension optional again implied removing code added in 3.5.1 which made the C extension a setuptools “Feature” and readding code from 3.5.0 which overrides the distutils build_ext command.
  • Move pickle equality tests into a unittest.TestCase test to make it easier to condition the tests on whether the C extension has been compiled. This also makes the tests pass on Jython. 3.5.2 (2010-04-30)

  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest. 3.5.1 (2010-04-10)

  • LP #257657 / 489529: Fix memory leak in C extension.
  • Fixed the compilation of the C extension with python 2.6: refactored it as a setuptools Feature. 3.5.0 (2009-06-27)

  • Made compilation of C extension optional.
  • Added support to bootstrap on Jython.
  • Changed package’s mailing list address from zope3-dev at to zope-dev at, because zope3-dev is now retired.
  • Reformatted change log to common formatting style.
  • Update package description and docs a little.
  • Remove old .cfg files for zpkg. zope.index 3.6.1 (2010-07-08)

  • TextIndex: reuse the lexicon from the underlying Okapi / Cosine index, if passed. (LP #232516)
  • Lexicon: avoid raising an exception when indexing None. (LP #598776) 3.6.0 (2009-08-03)

  • Improved test readability and reached 100% test coverage.
  • Fixed a broken optimization in okascore.c: it was passing a Python float to the PyInt_AS_LONG() macro. This resulted in wrong scores, especially on 64 bit platforms, where all scores typically ended up being zero.
  • Changed okascore.c to produce the same results as its Python equivalent, reducing the brittleness of the text index tests. 3.5.2 (2009-06-09)

  • Port okascore.c optimization used in okapiiindex from Zope2 catalog implementation. This module is compiled conditionally, based on whether your environment has a working C compiler.
  • Don’t use len(self._docweight) in okapiindex _search_wids method (obtaining the length of a BTree is very expensive at scale). Instead use self.documentCount(). Also a Zope2 port. 3.5.1 (2009-02-27)

  • The baseindex, okapiindex, and lexicon used plain counters for various lengths, which is unsuitable for production applications. Backport code from Zope2 indexes which opportunistically replaces the counters with BTree.Length objects.
  • Backport non-insane version of baseindex._del_wordinfo from Zope2 text index. This improves deletion performance by several orders of magnitude.
  • Don’t modify given query dictionary in the KeywordIndex.apply method.
  • Move FieldIndex’s sorting functionality to a mixin class so it can be reused by zc.catalog’s ValueIndex. 3.5.0 (2008-12-30)

  • Remove zope.testing from dependencies, as it’s not really needed.

  • Define IIndexSort interface for indexes that support sorting.

  • Implement sorting for FieldIndex (adapted from repoze.catalog/ZCatalog).

  • Add an apply method for KeywordIndex/TopicIndex, making them implement IIndexSearch that can be useful in catalog.

  • Optimize the search method of KeywordIndex/TopicIndex by using multiunion for the or operator and sorting before intersection for and.

  • IMPORTANT: KeywordIndex/TopicIndex now use IFSets instead of IISets. This makes it more compatible with other indexes (for example, when using in catalog). This change can lead to problems, if your code somehow depends on the II nature of sets, as it was before.

    Also, FilteredSets used to use IFSets as well, if you have any FilteredSets pickled in the database, you need to migrate them to IFSets yourself. You can do it like that:

    filter._ids =

    Where filter is an instance of FilteredSet.

  • IMPORTANT: KeywordIndex are now non-normalizing. Because it can be useful for non-string keywords, where case-normalizing doesn’t make any sense. Instead, it provides the normalize method that can be overriden by subclasses to provide some normalization.

    The CaseInsensitiveKeywordIndex class is now provided that do case-normalization for string-based keywords. The old CaseSensitiveKeywordIndex is gone, applications should use KeywordIndex for that.

Looks like the KeywordIndex/TopicIndex was sort of abadonware and wasn’t used by application developers, so after some discussion we decided to refactor them to make them more usable, optimal and compatible with other indexes and catalog.

Porting application from old KeywordIndex/TopicIndex to new ones are rather easy and explained above, so we believe that it isn’t a problem. Please, use or mailing lists, if you have any problems with migration.

Thanks Chris McDonough of repoze for supporting and useful code. zope.interface 3.6.1 (2010-05-03)

  • A non-ascii character in the changelog made 3.6.0 uninstallable on Python 3 systems with another default encoding than UTF-8.
  • Fixed compiler warnings under GCC 4.3.3. 3.6.0 (2010-04-29)

  • LP #185974: Clear the cache used by Specificaton.get inside Specification.changed. Thanks to Jacob Holm for the patch.

  • Added support for Python 3.1. Contributors:

    Lennart Regebro Martin v Loewis Thomas Lotze Wolfgang Schnerring

    The 3.1 support is completely backwards compatible. However, the implements syntax used under Python 2.X does not work under 3.X, since it depends on how metaclasses are implemented and this has changed. Instead it now supports a decorator syntax (also under Python 2.X):

    class Foo:

    can now also be written:

    class Foo:

    There are 2to3 fixers available to do this change automatically in the zope.fixers package.

  • Python 2.3 is no longer supported. 3.5.4 (2009-12-23)

  • Use the standard Python doctest module instead of zope.testing.doctest, which has been deprecated. 3.5.3 (2009-12-08) 3.5.2 (2009-07-01)

  • BaseAdapterRegistry.unregister, unsubscribe: Remove empty portions of the data structures when something is removed. This avoids leaving references to global objects (interfaces) that may be slated for removal from the calling application. 3.5.1 (2009-03-18)

  • verifyObject: use getattr instead of hasattr to test for object attributes in order to let exceptions other than AttributeError raised by properties propagate to the caller
  • Add Sphinx-based documentation building to the package buildout configuration. Use the bin/docs command after buildout.
  • Improve package description a bit. Unify changelog entries formatting.
  • Change package’s mailing list address to zope-dev at as zope3-dev at is now retired. 3.5.0 (2008-10-26)

  • Fixed declaration of _zope_interface_coptimizations, it’s not a top level package.
  • Add a DocTestSuite for module, so their tests are run.
  • Allow to bootstrap on Jython.
  • Fix ISpecification was missing a declaration for __iro__.
  • Added optional code optimizations support, which allows the building of C code optimizations to fail (Jython).
  • Replaced _flatten with a non-recursive implementation, effectively making it 3x faster. zope.intid 3.7.2 (2009-12-27)

  • Use the zope.component API in favor of ztapi.
  • Removed dependency. 3.7.1 (2009-05-18)

  • Remove dependencies on zope.container. Instead import Object*Event classes from zope.lifecycleevent and import IContained from zope.location. In order to be able to do this, depend on zope.lifecycleevent>=3.5.2 and zope.location>=3.5.4.
  • Remove a dependency on zope.container.contained.Contained (this is a dumb base class that defines __parent__ and __name__ as None and declares that the class implements IContained). 3.7.0 (2009-02-01)

  • Split out this package from The latter one now only contains browser views and compatibility imports while whole IntId functionality is moved here. zope.keyreference 3.6.2 (2009-09-15)

  • Made the tests pass with ZODB3.9, which changed the repr() of the persistent classes. 3.6.1 (2009-02-01)

  • Load keyreferences, pickled by old even if its not installed anymore (so don’t break if one updates a project that don’t directly depends on 3.6.0 (2009-01-31)

  • Rename to zope.keyreference. zope.kgs 1.2.0 (2009-07-24)

  • Add ability to specify the extra-includes for running tests. 1.1.0 (2009-02-01)

  • Added ‘–no-links’, ‘–no-index’, and ‘–no-minimal-index’ options to the site generation sctipt to make it faster.
  • Generating list of latest versions does not fail anymore, if downloading and parsing of the index page fails.
  • Update links to PyPI web sites. 1.0.1 (2009-01-29)

  • Fix documentation in all scripts, fixing missing imports and incorrect wording.
  • The package should depend on python-dateutl and not datetutil, since the latter is not available in PyPI anymore. 1.0.0 (2009-01-29)

  • Initial version as zope.kgs.
    • A script that extracts the relevant part of the changelog of each package in the KGS.
    • A script that lists all versions of a package released after the latest version listed in the KGS.
    • A script that manages the generation of the entire KGS site.
      • Generates generic and version-specific pages.
      • Page generation is template-based for easy customization.
    • Generate links.html file which lists all controlled packages files.
    • Features copied from zope.release:
      • Parser for KGS configuration files.
      • Generate versions.cfg and buildout.cfg script.
    • Features copied from zc.mirrorcheeseshopslashsimple:
      • Generate new index pages for the controlled packages. zope.lifecycleevent 3.6.1 (2010-04-30)

  • Removed dependency on undeclared zope.testing.doctest. 3.6.0 (2009-12-29)

  • Refactor tests to loose zope.annotation and zope.dublincore as dependencies. 3.5.2 (2009-05-17)

  • IObjectMovedEvent, IObjectAddedEvent, IObjectRemovedEvent interfaces and ObjectMovedEvent, ObjectAddedEvent and ObjectRemovedEvent classes copied here from zope.container (plus tests). The intent is to allow packages that rely on these interfaces or the event classes to rely on zope.lifecycleevent (which has few dependencies) instead of zope.container (which has many). 3.5.1 (2009-03-09)

  • Remove deprecated code and thus remove dependency on zope.deferredimport.
  • Change package’s mailing list address to zope-dev at, as zope3-dev at is now retired.
  • Update package’s description and documentation. 3.5.0 (2009-01-31)

  • Remove old module declarations from classes.
  • Use zope.container instead of zope.location 3.9.0 (2009-12-29)

  • Moved LocationCopyHook related tests to zope.copy and remove a test dependency on that package. 3.8.2 (2009-12-23)

  • Fixed a typo in the configure.zcml. 3.8.1 (2009-12-23)

  • Removed dependency on zope.copy: the LocationCopyHook adapter is registered only if zope.copy is available.
  • Use the standard Python doctest module instead of zope.testing.doctest, which has been deprecated. 3.8.0 (2009-12-22)

  • Adjusted to testing output caused by new zope.schema. 3.7.1 (2009-11-18)

  • Moved the IPossibleSite and ISite interfaces to zope.component as they are dealing with zope.component’s concept of a site, but not with location. 3.7.0 (2009-09-29)

  • Added getParent() to ILocationInfo and moved the actual implementation here from zope.traversal.api, analogous to getParents().
  • Actually removed deprecated PathPersistent class from zope.location.pickling.
  • Moved ITraverser back to zope.traversing where it belongs conceptually. The interface had been moved to zope.location to invert the package interdependency but is no longer used here. 3.6.0 (2009-08-27)

  • New feature release: deprecated locationCopy, CopyPersistent and PathPersistent from zope.location.pickling. These changes were already part of the 3.5.3 release, which was erroneously numbered as a bugfix relese.
  • Removed dependency on zope.deferredimport, directly import deprecated modules without using it. 3.5.5 (2009-08-15)

  • Add zope.deferredimport as a dependency as it’s used directly by zope.location.pickling. 3.5.4 (2009-05-17)

  • Add IContained interface to zope.location.interfaces module. This interface was moved from zope.container (after zope.container 3.8.2); consumers of IContained may now depend on zope.location rather than zope.container to reduce dependency cycles. 3.5.3 (2009-02-09)

  • Use new zope.copy package for implementing location copying. Thus there’s changes in the zope.locaton.pickling module:

    • The locationCopy and CopyPersistent was removed in prefer to their equivalents in zope.copy. Deprecated backward-compatibility imports provided.
    • The module now provides a zope.copy.interfaces.ICopyHook adapter for ILocation objects that replaces the old CopyPersistent functionality of checking for the need to clone objects based on their location. 3.5.2 (2009-02-04)

  • Split RootPhysicallyLocatable adapter back from LocationPhysicallyLocatable, because the IRoot object may not always provide ILocation and the code for the root object is also simplier. It’s basically a copy of the RootPhysicallyLocatable adapter from zope.traversing version 3.5.0 and below with getParents method added (returns an empty list). 3.5.1 (2009-02-02)

  • Improve test coverage.
  • The new getParents method was extracted from zope.traversing and added to ILocationInfo interface in the previous release. Custom ILocationInfo implementations should make sure they have this method as well. That method is already used in zope.traversing.api.getParents function.
  • Make getName of LocationPhysicallyLocatable always return empty string for the IRoot object, like RootPhysicallyLocatable from zope.traversing did. So, now LocationPhysicallyLocatable is fully compatible with RootPhysicallyLocatable, making the latter one obsolete.
  • Change package mailing list address to zope-dev at instead of retired zope3-dev at 3.5.0 (2009-01-31)

  • Reverse the dependency between zope.location and zope.traversing. This also causes the dependency to various other packages go away. zope.login 1.0.0 (2009-12-31)

  • Extracted BasicAuthAdapter and FTPAuth adapters from zope.publisher. They should have never gone into that package in the first place. zope.mimetype 1.3.0 (2010-06-26)

  • Added testing dependency on zope.component [test].
  • Use zope.formlib instead of for select widget.
  • Conform to repository policy. 1.2.0 (2009-12-26)

  • Converted functional tests to unit tests and get rid of all extra test dependencies as a result.
  • Use the ITerms interface from zope.browser.
  • Declared missing dependencies, resolved direct dependency on
  • Import content-type parser from zope.contenttype, adding a dependency on that package. 1.1.2 (2009-05-22)

  • No longer depends on 1.1.1 (2009-04-03)

  • Fixed wrong package version (version 1.1.0 was released as 0.4.0 at pypi but as 1.1dev at
  • Fixed author email and home page address. 1.1.0 (2007-11-01)

  • Package data update.
  • First public release. 1.0.0 (2007-??-??)

  • Initial release. zope.minmax 1.1.2 (2009-09-24)

  • Use the standard Python doctest module instead of the deprecated zope.testing.doctest. 1.1.1 (2009-09-09)

  • Fixed homepage link and mailing list address.
  • Cleaned up. 1.1 (2007-10-02)

  • Refactored package setup. 1.0 (2007-09-28)

  • No further changes since 1.0b2 1.0b2 (2007-07-09)

  • Removed _p_independent method from AbstractValue class. 1.0b1 (2007-07-03)

  • Initial release. zope.modulealias

(no changes) zope.pagetemplate 3.5.2 (2010-07-08)

  • Fixed PTRuntimeError exception messages to be consistent across Python versions, and compatibile with the output under Python 2.4. (More readable than the previous output under Python 2.6 as well.) 3.5.1 (2010-04-30)

  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s doctest.
  • Added dependency on “ [untrustedpython]” because the ‘engine’ module uses it. 3.5.0 (2009-05-25)

  • Added test coverage reporting support.
  • Moved ‘engine’ module and related test scaffolding here from package. 3.4.2 (2009-03-17)

  • Remove old zpkg-related DEPENDENCIES.cfg file.
  • Change package’s mailing list address to zope-dev at, as zope3-dev at is now retired.
  • Change cheeseshop to pypi in the packages’ homepage url. 3.4.1 (2009-01-27)

  • Fix test due to recent changes in zope.tal. zope.password 3.6.1 (2010-05-27)

  • The SSHAPasswordManager.checkPassword() would not handle unicode input (even if the string would only contain ascii characters). Now, the encoded_password input will be encoded to ascii, which is deemed safe as it should not contain non-ascii characters anyway. 3.6.0 (2010-05-07)

  • Removed zope.testing dependency for tests.
  • Updated some copyright headers to comply to repository policy.
  • Added zpasswd script formerly hold in Contrary to former zpasswd script, which used “Plain Text” as default password manager, now SSHA is used as default. 3.5.1 (2009-03-14)

  • Make security protection directives in configure.zcml execute only if is installed. This will allow reuse of the configure.zcml file in environments without, for example with repoze.zcml.
  • Add “Password Manager Names” vocabulary for use with zope.schema and zope.component, like it was in It’s an optional feature so it doesn’t add hard dependency. We use “vocabulary” extra to list dependencies needed for vocabulary functionality. 3.5.0 (2009-03-06)

First release. This package was splitted off from to separate password manager functionality that is greatly re-usable without any bit of and to reduce its dependencies. zope.pluggableauth 1.0.3 (2010-07-09)

  • Fixed dependency declaration. 1.0.2 (2010-07-90) 1.0.1 (2010-02-11)

  • Adapters are now declared in a new ZCML file : principalfactories.zcml. This avoids duplication errors in 1.0 (2010-02-05)

  • Splitting off from zope.principalannotation 3.6.1 (2010-05-05)

  • Fixed a test failure in nested local site manager setup.
  • Removed dependency on zope.container. 3.6.0 (2009-03-09)

Initial release. This package was splitted off to remove its dependencies on “zope 3 application server” components.

In addition, the following changes were made after split off:

  • The IAnnotations implementation was fixed to look in the higher-level utility not only on __getitem__, but also on get and __nonzero.
  • Tests was reworked into the README.txt doctest.
  • Added a buildout part that generates Sphinx documentation from the README.txt zope.principalregistry 3.7.0 (2009-03-14)

  • Remove zope.container dependency, as contained principals didn’t make any sense, since PrincipalRegistry never provided IContainer. Also, zope.container pulls a number dependencies, that are not needed for non-persistent principal registry (like, ZODB, for example).

    Set __name__ and __parent__ by hand to provide some backward-compatibility and to save a pointer to registry from principal objects.

  • Initial release. This package was splitted from as a part of the refactoring process to provide global principal registry without extra dependencies. zope.processlifetime zope.proxy 3.6.1 (2010-07-06)

  • Make tests compatible with Python 2.7. 3.6.0 (2010-04-30)

  • Removed test extra and the remaining dependency on zope.testing.
  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest. 3.5.0 (2009/01/31)

  • Added support to bootstrap on Jython.
  • Use zope.container instead of zope.ptresource 3.9.0 (2009-08-27)

Initial release. This package was splitted off as a part of refactoring process. It’s now a plugin for another package that was refactored from - zope.browserresource. See its documentation for more details.

Other changes:

  • Don’t render PageTemplateResource when called as the IResource interface requires that __call__ method should return an absolute URL. When accessed by browser, it still will be rendered, because “browserDefault” method now returns a callable that will render the template to browser. zope.publisher 3.12.4 (2010-07-15)

  • LP #131460: Make principal logging unicode safe.
  • Remove use of string exceptions in tests,
  • Add IStartRequestEvent and StartRequestEvent for using in (matching up with IEndRequestEvent and EndRequestEvent). This included refactoring to produce one definition of ‘event with a request’ - IRequestEvent. 3.12.3 (2010-04-30)

  • LP #209440: Don’t obscure original exception when handling retries in publish.publish() with handleErrors == False. This change makes debugging such exception in unit tests easier. Thanks to James Henstridge for the patch.
  • LP #98395: allow unicode output of XML content whose mimetype does not begin with text/, per RFC 3023 as well as for content types ending in +xml such as Mozilla XUL’s application/vnd+xml. Thanks to Justin Ryan for the patch. 3.12.2 (2010-04-16)

  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest’.
  • Fixed bug where xml-rpc requests would hang when served using paster.httpserver. 3.12.1 (2010-02-21)

  • BaseRequest.traverse should not call traversal hooks on elements previously traversed but wrapped in a security Proxy. 3.12.0 (2009-12-31)

  • Reverted change done in 3.6.2. The zope.authentication dependency has been removed again. The BasicAuthAdapter and FTPAuth adapters are now found in the new zope.login package. 3.11.0 (2009-12-15)

  • Moved EndRequestEvent and IEndRequestEvent from into this package. 3.10.1 (2009-11-28)

  • Version 3.10.0 needs at least version 3.5 of zope.contenttype but it did not declare it. 3.10.0 (2009-10-22)

  • Moved the implementation of zope.publisher.contenttype to zope.contenttype.parse, leaving BBB imports and moving tests along. zope.contenttype is a new but light-weight dependency of this package.
  • Supported Python 2.6 by keeping QUERY_STRING out of request.form if the method is a POST. The original QUERY_STRING is still available if further processing is needed.
  • Better supported the zcml defaultSkin directive’s behavior (registering an interface as a default skin) in the setDefaultSkin function. 3.9.3 (2009-10-08)

  • Fixed the check for untrusted redirects introduced in 3.9.0 so it works with virtual hosting. 3.9.2 (2009-10-07)

  • Make redirect validation works without HTTP_HOST variable.
  • Add DoNotReRaiseException adapter that can be registered for exceptions to flag that they should not be re-raised by publisher when handle_errors parameter of the publish method is False. 3.9.1 (2009-09-01)

  • Convert a location, passed to a redirect method of HTTPRequest to string before checking for trusted host redirection, because a location object may be some non-string convertable to string, like URLGetter. 3.9.0 (2009-08-27)

  • Some parts of packages was moved into this package during refactoring:

    • IModifiableUserPreferredLanguages adapter for requests
    • browser:defaultView and browser:defaultSkin ZCML directives
    • IHTTPView, IXMLRPCView and like interfaces
    • security ZCML declarations for some of zope.publisher classes
  • Introduced IReRaiseException interface. If during publishing an exception occurs and for this exception an adapter is available that returns False on being called, the exception won’t be reraised by the publisher. This happens only if handle_errors parameter of the publish() method is set to False. Fixes problems when acting in a WSGI pipeline with a debugger middleware enabled.

    See for details.

  • Fix #98471: Restrict redirects to current host. This causes a ValueError to be raised in the case of redirecting to a different host. If this is intentional, the parameter trusted can be given.

  • Moved dependency on zope.testing from install_requires to tests_require.

  • Removed behavior of doing a time.sleep in the supportsRetry http request.

  • Add a fix for Internet Explorer versions that upload files will full filesystem paths as filenames. 3.8.0 (2009-05-23)

  • Moved IHTTPException, IMethodNotAllowed, and MethodNotAllowed from to zope.publisher.interfaces.http, fixing dependency cycles involving
  • Moved the DefaultViewName API from to zope.publisher.defaultview, making it accessible to other packages that need it. 3.7.0 (2009-05-13)

  • Move IView and IBrowserView interfaces into zope.browser.interfaces, leaving BBB imports. 3.6.4 (2009-04-26)

  • Added some BBB code to setDefaultSkin to allow IBrowserRequest’s to continue to work without configuring any special adapter for IDefaultSkin.
  • Move getDefaultSkin to the skinnable module next to the setDefaultSkin method, leaving a BBB import in place. Mark IDefaultBrowserLayer as a IBrowserSkinType in code instead of relying on the ZCML to be loaded. 3.6.3 (2009-03-18)

  • Mark HTTPRequest as IAttributeAnnotatable if zope.annotation is available, this was previously done by
  • Register IHTTPRequest -> IUserPreferredCharsets adapter in ZCML configuration. This was also previously done by 3.6.2 (2009-03-14)

  • Add an adapter from to zope.publisher.interfaces.logginginfo.ILoggingInfo. It was moved from as a part of refactoring process.

  • Add adapters from HTTP and FTP request to zope.authentication.ILoginPassword interface. They are moved from as a part of refactoring process. This change adds a dependency on the zope.authentication package, but it’s okay, since it’s a tiny contract definition-only package.

    See for reasoning. 3.6.1 (2009-03-09)

  • Fix: remove IBrowserRequest dependency in http implementation based on condition for setDefaultSkin. Use ISkinnable instead of IBrowserRequest. 3.6.0 (2009-03-08)

  • Clean-up: Move skin related code from zope.publisher.interfaces.browser and zope.publisher.browser to zope.publihser.interfaces and zope.publisher.skinnable and provide BBB imports. See skinnable.txt for more information.

  • Fix: ensure that we only apply skin interface in setDefaultSkin which also provide IBrowserSkinType. This will ensure that we find a skin if the applySkin method will lookup for a skin based on this type interface.

  • Fix: Make it possible to use adapters and not only interfaces as skins from the adapter registry. Right now the defaultSkin directive registers simple interfaces as skin adapters which will run into a TypeError if someone tries to adapter such a skin adapter. Probably we should change the defaultSkin directive and register real adapters instead of using the interfaces as fake adapters where we expect adapter factories.

  • Feature: allow to use applySkin with different skin types using the optional argument skinType which is by default set to IBrowserSkinType

  • Feature: implemented the default skin pattern within adapters. This allows us to register default skins for other requests then only IBrowserRequest using IDefaultSkin adapters.

    Note, ISkinnable and ISkinType and the skin implementation should be moved out of the browser request modules. Packages like z3c.jsonrpc do not depend on IBrowserRequest but they are skinnable.

  • Feature: added ISkinnable interface which allows us to implement the apply skin pattern not only for IBrowserRequest

  • Fix: Don’t cause warnings on Python 2.6

  • Fix: Make IBrowserPage inherit IBrowserView.

  • Move IView and IDefaultViewName from zope.component.interfaces to zope.publisher.interfaces. Stop inheriting from deprecated (for years) interfaces defined in zope.component.

  • Remove deprecated code.

  • Clean-up: Move “zope.testing” from extras to dependencies, per Zope Framework policy. Remove as a dependency: tests run fine without it. 3.5.6 (2009-02-14)

Bugs fixed:

  • An untested code path that incorrectly attempted to construct a NotFound was fixed, with a test. 3.5.5 (2009-02-04)

  • LP #322486: setStatus() now allows any int()-able status value. 3.5.4 (2008-09-22)

Bugs fixed:

  • LP #98440: interfaces lost on retried request
  • LP #273296: dealing more nicely with malformed HTTP_ACCEPT_LANGUAGE headers within getPreferredLanguages().
  • LP #253362: dealing more nicely with malformed HTTP_ACCEPT_CHARSET headers within getPreferredCharsets().
  • LP #98284: Pass the size argument to readline, as the version of twisted used in supports it.
  • Fix the LP #98284 fix: do not pass size argument of None that causes cStringIO objects to barf with a TypeError. 3.5.3 (2008-06-20)

Bugs fixed:

  • It turns out that some Web servers (Paste for example) do not send the EOF character after the data has been transmitted and the read() of the cached stream simply hangs if no expected content length has been specified. 3.5.2 (2008-04-06)

Bugs fixed:

  • A previous fix to handle posting of non-form data broke handling of form data with extra information in the content type, as in:

    application/x-www-form-urlencoded; charset=UTF-8 3.5.1 (2008-03-23)

Bugs fixed:

  • When posting non-form (and non-multipart) data, the request body was consumed and discarded. This makes it impossible to deal with other post types, like xml-rpc or json without resorting to overly complex “request factory” contortions.


    The zope.publisher.http.HTTPCharsets was confused by the Zope 2 publisher, which gives missleading information about which headers it has. 3.5.0 (2008-03-02)

Features added:

  • Added a PasteDeploy app_factory implementation. This should make it easier to integrate Zope 3 applications with PasteDeploy. It also makes it easier to control the publication used, giving far greater control over application policies (e.g. whether or not to use the ZODB). 3.4.2 (2007-12-07)

  • Made segmentation of URLs not strip (trailing) whitespace from path segments to allow URLs ending in %20 to be handled correctly. (#172742) 3.4.1 (2007-09-29)

No changes since 3.4.1b2. 3.4.1b2 (2007-08-02)

  • zope.publisher now works on Python 2.5.
  • Fix a problem with request.get() when the object that’s to be retrieved is the request itself. 3.4.1b1 (2007-07-13)

No changes. 3.4.0b2 (2007-07-05)

  • Fix HTTPInputStream understands both the CONTENT_LENGTH and HTTP_CONTENT_LENGTH environment variables. It is also now tolerant of empty strings and will treat those as if the variable were absent. 3.4.0b1 (2007-07-05)

  • Fix caching issue. The input stream never got cached in a temp file because of a wrong content-length header lookup. Added CONTENT_LENGTH header check in addition to the previous used HTTP_CONTENT_LENGTH. The HTTP_ prefix is sometimes added by some CGI proxies, but CONTENT_LENGTH is the right header info for the size.
  • Fix HTTPResponse.handleException should set the content type 3.4.0a1 (2007-04-22)

Initial release as a separate project, corresponds to zope.publisher from Zope 3.4.0a1 zope.ramcache 1.0 (2009-07-23)

  • Broke out the ram cache functionality from zope.rdb 3.5.0 (2009/01/31)

  • Use zope.container instead of 3.4.2 (2008/10/10)

  • Re-release 3.4.1 3.4.1 (2008/10/10)

  • Remove body of DatabaseException, base Exception class already provides the same functionality.
  • Use hashlib.md5 instead of if available. md5 module is deprecated and will be removed in a future Python release.
  • Remove usage of ‘as’ as variable name. ‘as’ is a keyword in Python 2.6 and generates a SyntaxError. zope.schema 3.7.0 (2010-09-12)

  • Improve error messages when term tokens or values are duplicates.
  • Fix the buildout so the tests run. 3.6.4 (2010-06-08)

  • fix validation of schema with Object Field that specify Interface schema. 3.6.3 (2010-04-30)

  • Prefer the standard libraries doctest module to the one from zope.testing. 3.6.2 (2010-04-30)

  • Avoid maximum recursion when validating Object field that points to cycles
  • Made the dependency on zope.i18nmessageid optional. 3.6.1 (2010-01-05)

  • Allow “ test” to run at least a subset of the tests runnable via bin/test (227 for test vs. 258. for bin/test)
  • Make zope.schema._bootstrapfields.ValidatedProperty descriptor work under Jython.
  • Make “ test” tests pass on Jython. 3.6.0 (2009-12-22)

  • Prefer zope.testing.doctest over doctestunit.
  • Extend validation error to hold the field name.
  • Add FieldProperty class that uses Field.get and Field.set methods instead of storing directly on the instance __dict__. 3.5.4 (2009-03-25)

  • Don’t fail trying to validate default value for Choice fields with IContextSourceBinder object given as a source. See
  • Add an interface for DottedName field.
  • Add vocabularyName attribute to the IChoice interface, change “vocabulary” attribute description to be more sensible, making it zope.schema.Field instead of plain zope.interface.Attribute.
  • Make IBool interface of Bool more important than IFromUnicode so adapters registered for IBool take precendence over adapters registered for IFromUnicode. 3.5.3 (2009-03-10)

  • Make Choice and Bool fields implement IFromUnicode interface, because they do provide the fromUnicode method.
  • Change package’s mailing list address to zope-dev at, as zope3-dev at is now retired.
  • Fix package’s documentation formatting. Change package’s description.
  • Add buildout part that builds Sphinx-generated documentation.
  • Remove zpkg-related file. 3.5.2 (2009-02-04)

  • Made validation tests compatible with Python 2.5 again (hopefully not breaking Python 2.4)
  • Added an __all__ package attribute to expose documentation. 3.5.1 (2009-01-31)

  • Stop using the old old set type.
  • Make tests compatible and silent with Python 2.4.
  • Fix __cmp__ method in ValidationError. Show some side effects based on the existing __cmp__ implementation. See validation.txt
  • Make ‘repr’ of the ValidationError and its subclasses more sensible. This may require you to adapt your doctests for the new style, but now it makes much more sense for debugging for developers. 3.5.0a2 (2008-12-11)

  • Move zope.testing to “test” extras_require, as it is not needed for zope.schema itself.
  • Change the order of classes in SET_TYPES tuple, introduced in previous release to one that was in 3.4 (SetType, set), because third-party code could be dependent on that order. The one example is z3c.form’s converter. 3.5.0a1 (2008-10-10)

  • Added the doctests to the long description.
  • Removed use of deprecated ‘sets’ module when running under Python 2.6.
  • Removed spurious doctest failure when running under Python 2.6.
  • Added support to bootstrap on Jython.
  • Added helper methods for schema validation: getValidationErrors and getSchemaValidationErrors.
  • zope.schema now works on Python2.5 3.7.3 (2010-04-30)

  • Prefer the standard libraries doctest module to the one from zope.testing.
  • Fixed directlyProvides IVocabularyFactory for PermissionIdsVocabulary in Python code, even if it’s unnecessary because IVocabularyFactory is provided in zcml.
  • Removed the dependency on the zope.exceptions package: now imports DuplicationError from zope.exceptions if available, otherwise it defines a package-specific DuplicationError class which inherits from Exception. 3.7.2 (2009-11-10)

  • Added compatibility with Python 2.6 abstract base classes. 3.7.1 (2009-08-13)

  • Fix for LP bug 181833 (from Gustavo Niemeyer). Before “visiting” a sub-object, a check should be made to ensure the object is still valid. Because garbage collection may involve loops, if you garbage collect an object, it is possible that the actions done on this object may modify the state of other objects. This may cause another round of garbage collection, eventually generating a segfault (see LP bug). The Py_VISIT macro does the necessary checks, so it is used instead of the previous code. 3.7.0 (2009-05-13)

  • Made pytz a soft dependency: the checker for pytz.UTC is created / tested only if the package is already present. Run bin/test_pytz to run the tests with pytz on the path. 3.6.3 (2009-03-23)

  • Ensure that simple zope.schema’s VocabularyRegistry is used for PermissionVocabulary tests, because it’s replaced implicitly in environments with installed that makes that tests fail.
  • Fixed a bug in DecoratedSecurityCheckerDescriptor which made security-wrapping location proxied exception instances throw exceptions on Python 2.5. See 3.6.2 (2009-03-14)

  • Add zope.i18nmessageid.Message to non-proxied basic types. It’s okay, because messages are immutable. It was done by before.
  • Add “__name__” and “__parent__” attributes to list of available by default. This was also done by package before.
  • Added PermissionsVocabulary and PermissionIdsVocabulary vocabularies to the module. They were moved from the package.
  • Add zcml permission definitions for most common and useful permissions, like “zope.View” and “zope.ManageContent”, as well as for the special “zope.Public” permission. They are placed in a separate “permissions.zcml” file, so it can be easily excluded/redefined. They are selected part of permissions moved from and used by many zope.* packages.
  • Add addCheckerPublic helper function in module that registers the “zope.Public” permission as an IPermission utility.
  • Add security declarations for the class.
  • Improve test coverage. 3.6.1 (2009-03-10)

  • Use from imports instead of zope.deferred to avoid circular import problems, thus drop dependency on zope.deferredimport.
  • Raise NoInteraction when is called without interaction being active (LP #301565).
  • Don’t define security checkers for deprecated set types from the “sets” module on Python 2.6. It’s discouraged to use them and set and frozenset built-in types should be used instead.
  • Change package’s mailng list address to zope-dev at as zope3-dev at is now retired.
  • Remove old zpkg-related files. 3.6.0 (2009-01-31)

  • Install decorated security checker support on LocationProxy from the outside.
  • Added support to bootstrap on Jython.
  • Moved the protectclass module from to this package to reduce the number of dependencies on
  • Moved the <module> directive implementation from to this package.
  • Moved the <class> directive implementation from to this package. 3.5.2 (2008-07-27)

  • Made C code compatible with Python 2.5 on 64bit architectures. 3.5.1 (2008-06-04)

  • Add frozenset, set, reversed, and sorted to the list of safe builtins. 3.5.0 (2008-03-05)

  • Changed title for to be more presentable. 3.4.0 (2007-10-02)

  • Updated meta-data. 3.4.0b5 (2007-08-15)

  • Bug: Fixed a circular import in the C implementation. 3.4.0b4 (2007-08-14)

  • Bug: had an ugly/brittle id. 3.4.0b3 (2007-08-14)

  • now works on Python 2.5
  • Bug: wasn’t a valid principal (didn’t provide IPrincipal).
  • Bug: Fixed inclusion of doctest to use the doctest module from zope.testing. Now tests can be run multiple times without breaking. (#98250) 3.4.0b2 (2007-06-15)

  • Bug: Removed stack extraction in newInteraction. When using eggs this is an extremly expensive function. The publisher is now more than 10 times faster when using eggs and about twice as fast with a zope trunk checkout. 3.4.0b1

  • Temporarily fixed the hidden (and accidental) dependency on zope.testing to become optional.

Note: The releases between 3.2.0 and 3.4.0b1 where not tracked as an individual package and have been documented in the Zope 3 changelog. 3.2.0 (2006-01-05)

  • Corresponds to the verison of the package shipped as part of the Zope 3.2.0 release.
  • Removed deprecated helper functions, ‘proxy.trustedRemoveSecurityProxy’ and ‘proxy.getProxiedObject’.
  • Made handling of ‘management.{end,restore}Interaction’ more careful w.r.t. edge cases.
  • Made behavior of ‘canWrite’ consistent with ‘canAccess’: if ‘canAccess’ does not raise ‘ForbiddenAttribute’, then neither will ‘canWrite’. See:
  • Code style / documentation / test fixes. 3.1.0 (2005-10-03)

  • Added support for use of the new Python 2.4 datatypes, ‘set’ and ‘frozenset’, within checked code.
  • C security proxy acquired a dependency on the ‘proxy.h’ header from the ‘zope.proxy’ package.
  • XXX: the spelling of the ‘#include’ is bizarre! It seems to be related to ‘zpkg’-based builds, and should likely be revisited. For the moment, I have linked in the ‘zope.proxy’ package into our own ‘include’ directory. See the subversion checkin:
  • Updated checker to avoid re-proxying objects which have and explicit ‘__Security_checker__’ assigned.
  • Corresponds to the verison of the package shipped as part of the Zope 3.1.0 release.
  • Clarified contract of ‘IChecker’ to indicate that its ‘check*’ methods may raise only ‘Forbidden’ or ‘Unauthorized’ exceptions.
  • Added interfaces, (‘IPrincipal’, ‘IGroupAwarePrincipal’, ‘IGroup’, and ‘IPermission’) specifying contracts of components in the security framework.
  • Code style / documentation / test fixes. 3.0.0 (2004-11-07)

  • Corresponds to the version of the package shipped as part of the Zope X3.0.0 release. zope.securitypolicy 3.6.1 (2009-07-24)

  • Make tests work when the default and Zope vocabulary registry compete in the cleanup. 3.6.0 (2009-03-14)

  • Change dependency to the new zope.authentication package, dropping a big number of unused dependencies.
  • Get rid of and other testing dependencices.
  • Add ZODB3 to install dependencies, because we use Persistent class. We didn’t fail before, because it was installed implicitly. 3.5.1 (2009-03-10)

  • Don’t depend on the hook extra of zope.component, as we don’t need it explicitly.
  • Import security settings (Allow, Deny, Unset) in the interfaces module from the zope.securitypolicy.settings, added in previous release instead of old The will be adapted to import them from zope.securitypolicy.interfaces.
  • Use _z_instances instead of __instances__ for storing instances for zope.securitypolicy.settings.PermissionSetting singleton implementation, because __*__ name pattern is reserved for special names in python.
  • Add security protections for the PermissionSetting.
  • Improve documentation formatting, add it to the package’s long description.
  • Remove unneeded dependencies.
  • Remove old zpkg-related files and zcml slugs. 3.5.0 (2009-01-31)

  • Include settings that were previously imported from 3.4.2 (2009-01-28)

  • Changed mailing list address to zope-dev at Fix package homepage to the pypi page.
  • Fix test in buildout which still depended on by mistake.
  • Remove explicit dependency on from; nothing in the code directly depends on this. zope.sendmail 3.7.2 (2010-04-30)

  • Removed no longer required testing dependency on zope.testing.
  • Maildir storage for queue can now handle unicode passed in for message or to/from addresses (change backported from repoze.sendmail).
  • Tests use stdlib doctest instead of zope.testing.doctest. 3.7.1 (2010-01-13)

  • Backward compatibility import of zope.sendmail.queue.QueueProcessorThread in 3.7.0 (2010-01-12)

  • Removed dependency on the security support is optional, and only available if the package is available. This change is similar to the optional security support introduced in zope.component 3.8.0, and in fact it uses the same helpers.
  • Sort by modification time the messages in zope.sendmail.maildir so earlier messages are sent before later messages during queue processing.
  • Added the new parameter processorThread to the queuedDelivery ZCML directive: if False, the QueueProcessorThread is not started and thus an independent process must process the queue; it defaults to True for b/c.
  • Provide a console script zope-sendmail which can be used to process the delivery queue in case processorThread is False. The console script can either process the messages in the queue once, or run in “daemon” mode. 3.6.1 (2009-11-16)

  • Depend on zope.component >= 3.8.0, which supports the new semantic of zope.component.zcml.proxify needed by zope.sendmail.zcml. 3.6.0 (2009-09-14)

  • Use simple vocabulary factory function instead of custom UtilityTerm and UtilityVocabulary classes, copied from in the previous release.
  • Depend on the transaction package instead of ZODB3.
  • Remove zcml slugs and zpkg-related files.
  • Work around problem when used with Python >=2.5.1. See . 3.5.1 (2009-01-26)

  • Copied over the UtilityTerm and UtilityVocabulary implementation from to avoid a dependency.
  • Work around a problem when smtp quit fails, the mail was considered not delivered where just the quit failed. 3.5.0 (2008-07-05)

  • final release (identical with 3.5.0b2) 3.5.0b2 (2007-12-19) 3.5.0b1 (2007-11-08)

  • Added README.txt
  • Can now talk to servers that don’t implement EHLO
  • Fix bug that caused files with very long names to be created
  • Fix for move aside mail that’s causing 5xx server responses. 3.5.0a2 (2007-10-23)

  • Cleaned up does_esmtp in faux SMTP connection classes provided by the tests.
  • If the QueueProcessorThread is asked to stop while sending messages, do so after sending the current message; previously if there were many, many messages to send, the thread could stick around for quite a while. 3.5.0a1 (2007-10-23)

  • QueueProcessorThread now accepts an optional parameter interval for defining how often to process the mail queue (default is 3 seconds)
  • Several QueueProcessorThreads (either in the same process, or multiple processes) can now deliver messages from a single maildir without duplicates being sent. zope.sequencesort

(No changes) zope.server 3.6.2 (2010-06-11)

  • The log message “Exception during task” is no longer logged to the root logger but to zope.server.taskthreads. 3.6.1 (2009-10-07)

  • Made tests pass with current zope.publisher which restricts redirects to the current host by default. 3.6.0 (2009-05-27)

  • Moved some imports from test modules to their setUp to prevent failures when ZEO tests are run by the same testrunner
  • Removed unused dependency on zope.deprecation.
  • Remove old zpkg-related DEPENDENCIES.cfg file. 3.5.0 (2008-03-01) 3.5.0a2 (2007-06-02)

Made WSGI server really WSGI-compliant by adding variables to the environment that are required by the spec. 3.5.0a1 (2007-06-02)

Added a factory and entry point for PasteDeploy. 3.4 (2007-04-22)

  • Initial release as a separate project, corresponds to zope.server from Zope 3.4.0a1
  • Made WSGI server really WSGI-compliant by adding variables to the environment that are required by the spec. zope.session 3.9.2 (2009-11-23)

  • Fix Python 2.4 hmac compatibility issue by only using hashlib in Python versions 2.5 and above.
  • Use the CookieClientIdManager’s secret as the hmac key instead of the message when constructing and verifying client ids.
  • Make it possible to construct CookieClientIdManager passing cookie namespace and/or secret as constructor’s arguments.
  • Use zope.schema.fieldproperty.FieldProperty for “namespace” attribute of CookieClientIdManager, just like for other attributes in its interface. Also, make ICookieClientIdManager’s “namespace” field an ASCIILine, so it accepts only non-unicode strings for cookie names. 3.9.1 (2009-04-20)

  • Restore compatibility with Python 2.4. 3.9.0 (2009-03-19)

  • Don’t raise deprecation warnings on Python 2.6.
  • Drop dependency on zope.annotation. Instead, we make classes implement IAttributeAnnotatable in ZCML configuration, only if zope.annotation is available. If your code relies on annotatable CookieClientIdManager and PersistentSessionDataContainer and you don’t include the zcml classes configuration of this package, you’ll need to use classImplements function from zope.interface to make those classes implement IAttributeAnnotatable again.
  • Drop dependency on, use standard date formatting function from the email.utils module.
  • Zope 3 application bootstrapping code for session utilities was moved into package, thus drop dependency on in this package.
  • Drop testing dependencies, as we don’t need anything behind zope.testing and previous dependencies was simply migrated from before.
  • Remove zpkg files and zcml slugs.
  • Update package’s description a bit. 3.8.1 (2009-02-23)

  • Add an ability to set cookie effective domain for CookieClientIdManager. This is useful for simple cases when you have your application set up on one domain and you want your identification cookie be active for subdomains.
  • Python 2.6 compatibility change. Encode strings before calling as the function no longer accepts the unicode() type. 3.8.0 (2008-12-31)

  • Add missing test dependency on and 3.7.1 (2008-12-30)

  • Specify i18n_domain for titles in apidoc.zcml
  • ZODB 3.9 no longer contains ZODB.utils.ConflictResolvingMappingStorage, fixed tests, so they work both with ZODB 3.8 and 3.9. 3.7.0 (2008-10-03)

New features:

  • Added a ‘postOnly’ option on CookieClientIdManagers to only allow setting the client id cookie on POST requests. This is to further reduce risk from broken caches handing the same client id out to multiple users. (Of course, it doesn’t help if caches are broken enough to cache POSTs.) 3.6.0 (2008-08-12)

New features:

  • Added a ‘secure’ option on CookieClientIdManagers to cause the secure set-cookie option to be used, which tells the browser not to send the cookie over http.

    This provides enhanced security for ssl-only applications.

  • Only set the client-id cookie if it isn’t already set and try to prevent the header from being cached. This is to minimize risk from broken caches handing the same client id out to multiple users. 3.5.2 (2008-06-12)

  • Remove ConflictErrors caused on SessionData caused by setting lastAccessTime. 3.5.1 (2008-04-30)

  • Split up the ZCML to make it possible to re-use more reasonably. 3.5.0 (2008-03-11)

  • Change the default session “resolution” to a sane value and document/test it. 3.9.1 (2010-04-30)

  • Removed use of ‘zope.testing.doctest’ in favor of stdlib’s ‘doctest.
  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest. 3.9.0 (2009-12-29)

  • Avoid a test dependency on zope.copypastemove by testing the correct persistent behavior of a site manager using the normal pickle module. 3.8.0 (2009-12-15)

  • Removed functional testing setup and dependency on 3.7.1 (2009-11-18)

  • Moved the functionality to zope.component.hooks as it isn’t actually dealing with’s concept of a site.
  • Import ISite and IPossibleSite from zope.component after they were moved there from zope.location. 3.7.0 (2009-09-29)

  • Cleaned up the undeclared dependency on by moving the two relevant subscriber registrations and their tests to that package.
  • Dropped the dependency on zope.traversing which was only used to access zope.location functionality. Configure zope.location for some tests.
  • Demoted zope.configuration to a testing dependency. 3.6.4 (2009-09-01)

  • Set __parent__ and __name__ in the LocalSiteManager’s constructor after calling constructor of its superclasses, so __name__ doesn’t get overwritten with empty string by the Components constructor.
  • Don’t set __parent__ and __name__ attributes of site manager in SiteManagerContainer’s setSiteManager method, as they’re already set for LocalSiteManager. Other site manager implementations are not required to have those attributes at all, so we’re not adding them anymore. 3.6.3 (2009-07-27)

  • Propagate an ObjectRemovedEvent to the SiteManager upon removal of a SiteManagerContainer. 3.6.2 (2009-07-24)

  • Fixed tests to pass with latest packages.
  • Removed failing test of persistent interfaces, since it did not test anything in this package and used the deprecated zodbcode module.
  • Fix NameError when calling
  • The getNextUtility and queryNextUtility functions was moved to zope.component. While backward-compatibility imports are provided, it’s strongly recommended to update your imports. 3.6.1 (2009-02-28)

  • Import symbols moved from zope.traversing to zope.location from the new location.
  • Don’t fail when changing component registry bases while moving ISite object to non-ISite object.
  • Allow specify whether to create ‘default’ SiteManagementFolder on initializing LocalSiteManager. Use the default_folder argument.
  • Add a containment constraint to the SiteManagementFolder that makes it only available to be contained in ILocalSiteManagers and other ISiteManagementFolders.
  • Change package’s mailing list address to zope-dev at, as zope3-dev at is now retired.
  • Remove old unused code. Update package description. 3.6.0 (2009-01-31)

  • Use zope.container instead of 3.5.1 (2009-01-27)

  • Extracted from (trunk, 3.5.1 under development) as part of an effort to clean up dependencies between Zope packages. zope.size 3.4.1 (2009-09-10)

  • Added support to bootstrap on Jython.
  • Added docstrings
  • Beautify package’s README and include CHANGES into the description.
  • Changed package’s url to PyPI instead of Subversion. zope.structuredtext 3.5.0 (2010-04-30)

  • Updated docs to conform to ZTK / Sphinx usage.
  • LP #120376: Output valid html for non-ASCII characters. zope.tal 3.5.2 (2009-10-31)

  • In talgettext.POEngine.translate, print a warning if a msgid already exists in the domain with a different default. 3.5.1 (2009-03-08)

  • Updated tests of “bad” entities for compatibility with the stricter HTMLParser module shipped with Python 2.6.x. 3.5.0 (2008-06-06) zope.tales 3.5.1 (2010-04-30)

  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest. 3.5.0 (2010-01-01)

  • Ported the lazy expression from Products.PageTemplates. zope.testbrowser 3.9.0 (2010-05-17)

  • LP #568806: Update dependency mechanize >= 0.2.0, which now includes the ClientForm APIs. Remove use of urllib2 APIs (incompatible with mechanize 0.2.0) in favor of mechanize equivalents. Thanks to John J. Lee for the patch.
  • Use stdlib doctest module, instead of zope.testing.doctest.
  • Caution: This version is no longer fully compatible with Python 2.4: handleErrors = False no longer works. 3.8.1 (2010-04-19)

  • Pinned dependency on mechanize to prevent use of the upcoming 0.2.0 release before we have time to adjust to its API changes.
  • LP #98396: testbrowser resolves relative URLs incorrectly. 3.8.0 (2010-03-05)

  • Added follow convenience method which gets and follows a link. 3.7.0 (2009-12-17)

  • Moved dependency into the scope of the PublisherConnection class. Zope2 specifies its own PublisherConnection which isn’t dependent on
  • Fixed LP #419119: return None when the browser has no contents instead of raising an exception. 3.7.0a1 (2009-08-29)

  • Remove dependency on in favor of zope.browserpage, zope.browserresource and zope.ptresource.
  • Remove dependencies on and zope.securitypolicy by using the simple PermissiveSecurityPolicy. We aren’t testing security in our tests.
  • Replaced the testing dependency on with explicit dependencies of a minimal set of packages.
  • Remove unneeded from ftesting.zcml.
  • Test dependency on zope.securitypolicy instead of its app variant. 3.6.0a2 (2009-01-31)

  • Test dependency on instead of
  • Remove useless test dependency in 3.6.0a1 (2009-01-08)

  • Author e-mail to zope-dev rather than zope3-dev.
  • New lines are no longer stripped in XML and HTML code contained in a textarea; fix requires ClientForm >= 0.2.10 (LP #268139).
  • Added cookies attribute to browser for easy manipulation of browser cookies. See brief example in main documentation, plus new cookies.txt documentation. 3.5.1 (2008-10-10)

  • Provide a work around for a mechanize/urllib2 bug on Python 2.6 missing ‘timeout’ attribute on ‘Request’ base class.
  • Provide a work around for a mechanize/urllib2 bug in creating request objects that won’t handle fragment URLs correctly. 3.5.0 (2008-03-30)

  • Added a method that allows tests to supply a body and a content type. This is handy for testing Ajax requests with non-form input (e.g. JSON).
  • Remove vendor import of mechanize.
  • Fix bug that caused HTTP exception tracebacks to differ between version 3.4.0 and 3.4.1.
  • Workaround for bug in Python Cookie.SimpleCookie when handling unicode strings.
  • Fix bug introduced in 3.4.1 that created incompatible tracebacks in doctests. This necessitated adding a patched mechanize to the source tree; patches have been sent to the mechanize project.
  • Fix by adding zope.interface and zope.schema as real dependencies
  • Fix browser.getLink documentation that was not updated since the last API modification.
  • Move tests for fixed bugs to a separate file.
  • Removed non-functional and undocumented code intended to help test servers using virtual hosting. zope.testing 3.9.5 (2010-05-19)

  • LP #579019: When layers were run in parallel, their tearDown was not called. Additionally, the first layer which was run in the main thread did not have it’s tearDown called either.
  • Deprecated zope.testing.testrunner and zope.testing.exceptions. They have been moved to a separate zope.testrunner module, and will be removed from zope.testing in 4.0.0, together with zope.testing.doctest. 3.9.4 (2010-04-13)

  • LP #560259: Fix subunit output formatter to handle layer setup errors.

  • LP #399394: Added a --stop-on-error / --stop / -x option to the testrunner.

  • LP #498162: Added a --pdb alias for the existing --post-mortem / -D option to the testrunner.

  • LP #547023: Added a --version option to the testrunner.

  • Added tests for LP #144569 and #69988. 3.9.3 (2010-03-26)

  • zope.testing.renormalizer no longer imports zope.testing.doctest, which caused deprecation warnings.
  • Fix testrunner-layers-ntd.txt to suppress output to sys.stderr.
  • Suppress zope.testing.doctest deprecation warning when running zope.testing’s own test suite. 3.9.2 (2010-03-15)

  • Fixed broken from zope.testing.doctest import * 3.9.1 (2010-03-15)

  • No changes; reuploaded to fix broken 3.9.0 release on PyPI. 3.9.0 (2010-03-12)

  • Modified the testrunner to use the standard Python doctest module instead of the deprecated zope.testing.doctest.
  • Fix testrunner-leaks.txt to use the run_internal helper, so that sys.exit() isn’t triggered during the test run.
  • Added support for conditionally using a subunit-based output formatter upon request if subunit and testtools are available. Patch contributed by Jonathan Lange. 3.8.7 (2010-01-26)

  • Downgraded the zope.testing.doctest deprecation warning into a PendingDeprecationWarning. 3.8.6 (2009-12-23)

  • Added and reuploaded to fix broken 3.8.5 release on PyPI. 3.8.5 (2009-12-23)

  • Added DocFileSuite, DocTestSuite, debug_src and debug back BBB imports back into zope.testing.doctestunit; apparently many packages still import them from there!
  • Made zope.testing.doctest and zope.testing.doctestunit emit deprecation warnings: use the stdlib doctest instead. 3.8.4 (2009-12-18)

  • Fixed missing imports and undefined variables reported by pyflakes, adding tests to exercise the blind spots.
  • Cleaned up unused imports reported by pyflakes.
  • Added two new options to generate randomly ordered list of tests and to select a specific order of tests.
  • RENormalizing checkers can be combined via + now: checker1 + checker2 creates a checker with the transformations of both checkers.
  • Test fixes for Python 2.7. 3.8.3 (2009-09-21)

  • Avoid a split() call or we get test failures when running from a directory with spaces in it.
  • Fix testrunner behavior on Windows for -j2 (or greater) combined with -v (or greater). 3.8.2 (2009-09-15)

  • Removing hotshot profiler when using Python 2.6. That makes zope.testing compatible with Python 2.6 3.8.1 (2009-08-12)

  • Avoid hardcoding sys.argv[0] as script; allow, for instance, Zope 2’s bin/instance test (LP#407916).
  • Produce a clear error message when a subprocess doesn’t follow the zope.testing.testrunner protocol (LP#407916).
  • Do not unnecessarily squelch verbose output in a subprocess when there are not multiple subprocesses.
  • Do not unnecessarily batch subprocess output, which can stymie automated and human processes for identifying hung tests.
  • Include incremental output when there are multiple subprocesses and a verbosity of -vv or greater is requested. This again is not batched, supporting automated processes and humans looking for hung tests. 3.8.0 (2009-07-24)

  • Testrunner automatically picks up descendants of unittest.TestCase in test modules, so you don’t have to provide a test_suite() anymore. 3.7.7 (2009-07-15)

  • Clean up support for displaying tracebacks with supplements by turning it into an always-enabled feature and making the dependency on zope.exceptions explicit.
  • Fix #251759: Test runner descended into directories that aren’t Python packages.
  • Code cleanups. 3.7.6 (2009-07-02)

  • Add zope-testrunner console_scripts entry point. This exposes a zope-testrunner binary with default installs allowing the testrunner to be run from the command line. 3.7.5 (2009-06-08)

  • Fix bug when running subprocesses on Windows.
  • The option REPORT_ONLY_FIRST_FAILURE (command line option “-1”) is now respected even when a doctest declares its own REPORTING_FLAGS, such as REPORT_NDIFF.
  • Fixed bug that broke readline with pdb when using doctest (see
  • Made tests pass on Windows and Linux at the same time. 3.7.4 (2009-05-01)

  • Filenames of doctest examples now contain the line number and not only the example number. So a stack trace in pdb tells the exact line number of the current example. This fixes
  • Colorization of doctest output correctly handles blank lines. 3.7.3 (2009-04-22)

  • Better deal with rogue threads by always exiting with status so even spinning daemon threads won’t block the runner from exiting. This deprecated the --with-exit-status option. 3.7.2 (2009-04-13)

  • fix test failure on Python 2.4 because of slight difference in the way coverage is reported (__init__ files with only a single comment line are now not reported)
  • fixed bug that caused the test runner to hang when running subprocesses (as a result Python 2.3 is no longer supported).
  • there is apparently a bug in Python 2.6 (related to that causes the profile tests to fail.
  • added explanitory notes to buildout.cfg about how to run the tests with multiple versions of Python 3.7.1 (2008-10-17)

  • The setupstack temporary-directory support now properly handles read-only files by making them writable before removing them. 3.7.0 (2008-09-22)

  • Added an alterate setuptools / distutils commands for running all tests using our testrunner. See ‘zope.testing.testrunner.eggsupport:ftest’.
  • Added a setuptools-compatible test loader which skips tests with layers: the testrunner used by ‘ test’ doesn’t know about them, and those tests then fail. See ‘zope.testing.testrunner.eggsupport:SkipLayers’.
  • Added support for Jython, when a garbage collector call is sent.
  • Added support to bootstrap on Jython.
  • Fixed NameError in StartUpFailure.
  • Open doctest files in universal mode, so that packages released in Windoes can be tested in Linux, for example. 3.6.0 (2008/07/10)

  • Added -j option to parallel tests run in subprocesses.
  • RENormalizer accepts plain Python callables.
  • Added –slow-test option.
  • Added –no-progress and –auto-progress options.
  • Complete refactoring of the test runner into multiple code files and a more modular (pipeline-like) architecture.
  • Unified unit tests with the layer support by introducing a real unit test layer.
  • Added a doctest for zope.testing.module. There were several bugs that were fixed:
    • README.txt was a really bad default argument for the module name, as it is not a proper dotted name. The code would immediately fail as it would look for the txt module in the README package. The default is now __main__.
    • The tearDown function did not clean up the __name__ entry in the global dictionary.
  • Fix a bug that caused a SubprocessError to be generated if a subprocess sent any output to stderr.
  • Fix a bug that caused the unit tests to be skipped if run in a subprocess. 3.5.1 (2007/08/14) Bugs Fixed
  • Post-mortem debugging wasn’t invoked for layer-setup failures. 3.5.0 (2007/07/19) New Features
  • The test runner now works on Python 2.5.
  • Added support for cProfile.
  • Added output colorizing (-c option).
  • Added –hide-secondary-failures and –show-secondary-failures options ( Bugs Fixed
  • Fix some problems with Unicode in doctests.
  • Fix “Error reading from subprocess” errors on Unix-like systems. 3.4 (2007/03/29) New Features
  • Added exit-with-status support (supports use with buildbot and zc.recipe.testing)
  • Added a small framework for automating set up and tear down of doctest tests. See setupstack.txt. Bugs Fixed
  • Fix testrunner-wo-source.txt and testrunner-errors.txt to run with a read-only source tree. 3.0 (2006/09/20)

  • Updated the doctest copy with text-file encoding support.
  • Added logging-level support to loggingsuppport module.
  • At verbosity-level 1, dots are not output continuously, without any line breaks.
  • Improved output when the inability to tear down a layer causes tests to be run in a subprocess.
  • Made zope.exception required only if the zope_tracebacks extra is requested. 2.x.y (???)

  • Fix the test coverage. If a module, for example interfaces, was in an ignored directory/package, then if a module of the same name existed in a covered directory/package, then it was also ignored there, because the ignore cache stored the result by module name and not the filename of the module. 2.0 (2006/01/05)

  • Corresponds to the version of the zope.testing package shipped as part of the Zope 3.2.0 release. zope.thread

(No changes) zope.traversing 3.13 (2010-07-09)

  • When a __parent__ attribute is available on an object, it is always used for absolute URL construction, and no ILocation adapter lookup is performed for it. This was the previous behavior but was broken (around 3.5?) due to dependency refactoring.

    If the object provides no __parent__ then an ILocation adapter lookup will be performed. This will always succeed as zope.location provides a default LocationProxy for everything, but more specific ILocation adapters can also be provided. 3.12.1 (2010-04-30)

  • Removed use of ‘zope.testing.doctestunit’ in favor of stdlib’s doctest. 3.12.0 (2009-12-29)

  • Avoid testing dependencies on zope.securitypolicies and zope.principalregistry. 3.11.0 (2009-12-27)

  • Removed testing dependency on 3.10.0 (2009-12-16)

  • Removed stray test claiming a no longer existing dependency on
  • Refactored functional tests to loose dependency on both and
  • Simplified tests for the browser sub-package by using PlacelessSetup from zope.component.testing instead of
  • Simplified test_dependencies module by using zope.configuration instead of
  • Removed testing dependency on
  • Replaced testing dependency on with zope.securitypolicy.
  • Removed testing dependency on in favor of more explicit dependencies.
  • Removed testing dependency on
  • Replaced a test dependency on with a dependency on zope.pagetemplate. 3.9.0 (2009-12-15)

  • Moved IBeforeTraverseEvent from into this package, as we already deal with publication traversal. 3.8.0 (2009-09-29)

  • In zope.traversing.api.getParent(), try to delegate to zope.location.interfaces.ILocationInfo.getParent(), analogous to getParents(). Keep returning the traversal parent as a fallback.
  • Brought ITraverser back from zope.location where it had been moved to invert the package interdependency, but is no longer used now. 3.7.2 (2009-08-29)

  • Made virtual hosting tests compatible with zope.publisher 3.9. Redirecting to a different host requires an explicit trusted redirect now. 3.7.1 (2009-06-16)

  • AbsoluteURL now implements the fact that __call__ returns the same as __str__ in a manner that it applies for subclasses, too, so they only have to override __str__ and not both. 3.7.0 (2009-05-23)

  • Moved the publicationtraverse module to zope.traversing, removing the -> dependency (which was a cycle).
  • Look up the application controller through a utility registration rather than a direct reference. 3.6.0 (2009-04-06)

  • Change configure.zcml to not depend on
  • This release includes the BBB-incompatible zope.publisher.skinnable change from 3.5.3. 3.5.4 (2009-04-06)

  • Revert BBB-incompatible use of zope.publisher.skinnable: that change belongs in a 3.6.0 release, because it requires a BBB-incompatible version of zope.publisher. 3.5.3 (2009-03-10)

  • Use applySkin from new location. zope.publisher.skinnable instead of zope.publisher.browser.
  • Use IAbsoluteURL lookup instead of the “absolute_url” view in the recursive AbsoluteURL adapters (LP: #338101). 3.5.2 (2009-02-04)

  • The RootPhysicallyLocatable is not the same as LocationPhysicallyLocatable now in zope.location. Fix the import and testing setups. 3.5.1 (2009-02-02)

  • The RootPhysicallyLocatable adapter has been superseded by the refactored zope.location.traversing.LocationPhysicallyLocatable that we depend on since 3.5.0a4.

    Remove the adapter and its registration, and making its import place pointing to zope.location.traversing.LocationPhysicallyLocatable to maintain backward-compatibility.

    This also fixes a bug introduced in version 3.5.0a4 when trying to call getParents function for the root object.

  • Use direct imports instead of compatibility ones for things that were moved to zope.location.

  • Remove the zope.traversing.interfaces.INamespaceHandler interface, as it seems not to be used for years.

  • Change package’s mailing list address to zope-dev at instead of retired zope3-dev at 3.5.0 (2009-01-31)

  • Use zope.container instead of
  • Use instead of in the unit tests.
  • Reduced, but did not eliminate, test dependencies on 3.5.0a4 (2008-08-01)

  • Reverse dependencies between zope.location and zope.traversing.
  • Updated (test) dependencies and tests to expect and work with a spec compliant TAL interpreter as available in zope.tal >= 3.5.0.
  • Fixed deprecation warning caused by using an old module name for ZopeSecurityPolicy in ftesting.zcml
  • Made sure traversing doesn’t raise an TypeError but a TraversalError when the traversal step before yielded a string. 3.5.0a3 (2007-12-28)

  • backed out the controversial ++skin++ traverser for XML-RPC. 3.5.0a2 (2007-11-28)

  • ported 3.4.1a1 to trunk
    • Do not use unicode strings to set the application server in the virtual host namespace. This caused absolute_url to create unicode URL’s.
  • Added a traverer for ++skin++ for XMLRPC skins (IXMLRPCSkinType). This also means that the normal ++skin++ namespace handler is only bound to IBrowserRequest.
  • Resolved the dependency on by importing the application controller only if the package is available. 3.4.1a1 (2007-11-13)

Do not use unicode strings to set the application server in the virtual host namespace. This caused absolute_url to create unicode URL’s. 3.4.0 (2007-09-29)

No further changes since 3.4.0a1. 3.4.0a1 (2007-04-22)

Initial release as a separate project, corresponds to zope.traversing from Zope 3.4.0a1 zope.viewlet 3.7.2 (2010-05-25)

  • Fixed unit tests broken under Python 2.4 by the switch to the standard library doctest module. 3.7.1 (2010-04-30) 3.7.0 (2009-12-22)

  • Depend on zope.browserpage in favor of 3.6.1 (2009-08-29)

  • Fixed unit tests in README.txt. 3.6.0 (2009-08-02)

  • Optimize the the script tag for the JS viewlet. This makes YSlow happy.
  • Remove ZCML slugs and old zpkg-related files.
  • Drop all testing dependncies except zope.testing. 3.5.0 (2009-01-26)

  • Removed the dependency on by moving four simple helper functions into this package and making the interface for describing the ZCML content provider directive explicit.
  • Typo fix in CSSViewlet docstring. zope.xmlpickle

(No changes)

blog comments powered by Disqus

Table Of Contents

Previous topic

2. What’s New ?

Next topic

3. Getting Started

This Page