[Checkins] SVN: Zope/trunk/ Updated documentation to new version number.
Hanno Schlichting
hannosch at hannosch.eu
Wed May 27 08:45:05 EDT 2009
Log message for revision 100457:
Updated documentation to new version number.
Changed:
U Zope/trunk/doc/CHANGES.rst
U Zope/trunk/doc/WHATSNEW.rst
U Zope/trunk/doc/WINDOWS.rst
D Zope/trunk/doc/ZOPE3.rst
U Zope/trunk/doc/conf.py
U Zope/trunk/doc/index.rst
U Zope/trunk/inst/WinBuilders/mk/zope.mk
U Zope/trunk/inst/generate_index.py
U Zope/trunk/inst/versions.py
U Zope/trunk/setup.py
-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/doc/CHANGES.rst 2009-05-27 12:45:04 UTC (rev 100457)
@@ -2,8 +2,8 @@
=========
This file contains change information for the current Zope release.
-Change information for previous versions of Zope can be found in the
-file HISTORY.txt.
+Change information for previous versions of Zope can be found at
+http://docs.zope.org/zope2/releases/.
Trunk (unreleased)
------------------
@@ -11,460 +11,12 @@
Restructuring
+++++++++++++
-- Removed all use of ``zope.app.pagetemplate`` by cloning / simplifying
- client code.
+* Updated documentation to new version number.
-- Use ``zope.pagetemplate.engine`` instead of ``zope.app.pagetemplate.engine``.
- (update to versions 3.5.0 and 3.7.0, respectively, along with version 3.8.1
- of ``zope.app.publisher``).
-
-- Use ``IBrowserView`` interface from ``zope.browser.interfaces``, rather than
- ``zope.publisher.interfaces.browser``.
-
-- Use ``IAdding`` interface from ``zope.browser.interfaces``, rather than
- ``zope.app.container``.
-
-- No longer depend on ``zope.app.appsetup``; use the event implementations
- from ``zope.processlifetime`` instead.
-
Features Added
++++++++++++++
-- zExceptions.convertExceptionType: new API, breaking out conversion of
- exception names to exception types from 'upgradeException'.
-- Launchpad #374719: introducing new ZPublisher events:
- PubStart, PubSuccess, PubFailure, PubAfterTraversal and PubBeforeCommit.
-
-- Testing.ZopeTestCase: Include a copy of ZODB.tests.warnhook to silence
- a DeprecationWarning under Python 2.6.
-
-- Updated packages:
-
- * python-gettext 1.0
- * pytz 2009g
- * zope.app.applicationcontrol = 3.5.0
- * zope.app.appsetup 3.11
- * zope.app.component 3.8.2
- * zope.app.container 3.8.0
- * zope.app.form 3.8.0
- * zope.app.http 3.6.0
- * zope.app.interface 3.5.0
- * zope.app.pagetemplate 3.6.0
- * zope.app.publication 3.7.0
- * zope.app.publisher 3.8.0
- * zope.browser 1.2
- * zope.component 3.7.0
- * zope.componentvocabulary 1.0
- * zope.container 3.8.2
- * zope.formlib 3.6.0
- * zope.lifecycleevent 3.5.2
- * zope.location 3.5.4
- * zope.processlifetime 1.0
- * zope.publisher 3.8.0
- * zope.security 3.7.0
- * zope.testing 3.7.4
- * zope.traversing 3.7.0
-
Bugs Fixed
++++++++++
-- Launchpad #374729: Encoding cookie values to avoid issues with
- firewalls and security proxies.
-
-- Launchpad #373583: ZODBMountPoint - fixed broken mount support and
- extended the test suite.
-
-- Launchpad #373621: catching and logging exceptions that could cause
- leaking of worker threads.
-
-- Launchpad #373577: setting up standard logging earlier within the startup
- phase for improving the analysis of startup errors.
-
-- Launchpad #373601: abort transaction before connection close in order to
- prevent connection leaks in case of persistent changes after the main
- transaction is closed.
-
-- Fix BBB regression which prevented setting browser ID cookies from
- browser ID managers created before the ``HTTPOnly`` feature landed.
- https://bugs.launchpad.net/bugs/374816
-
-- RESPONSE.handle_errors was wrongly set (to debug, should have been
- ``not debug``). Also, the check for exception constructor arguments
- didn't account for exceptions that didn't override the ``__init__``
- (which are most of them). The combination of those two problems
- caused the ``standard_error_message`` not to be called. Fixes
- https://bugs.launchpad.net/zope2/+bug/372632 .
-
-- DocumentTemplate.DT_Raise: use new 'zExceptions.convertExceptionType'
- API to allow raising non-builtin exceptions.
- Fixes https://bugs.launchpad.net/zope2/+bug/372629 , which prevented
- viewing the "Try" tab of a script with no parameters.
-
-Zope 2.12.0b1 (2009/05/06)
---------------------------
-
-Restructuring
-+++++++++++++
-
-- No longer depend on ``zope.app.locales``. Zope2 uses almost none of the
- translations provided in the package and is not required for most projects.
- The decision to include locales is left to the application developer now.
-
-- Removed the dependency on ``zope.app.testing`` in favor of providing a more
- minimal placeless setup as part of ZopeTestCase for our own tests.
-
-- updated to ZODB 3.9.0b1
-
-Features Added
-++++++++++++++
-- zExceptions.convertExceptionType: new API, breaking out conversion of
- exception names to exception types from ``upgradeException``.
-
-- Extended BrowserIdManager to expose the ``HTTPOnly`` attribute for its
- cookie. Also via https://bugs.launchpad.net/zope2/+bug/367393 .
-
-- Added support for an optional ``HTTPOnly`` attribute of cookies (see
- http://www.owasp.org/index.php/HTTPOnly). Patch from Stephan Hofmockel,
- via https://bugs.launchpad.net/zope2/+bug/367393 .
-
-Bugs Fixed
-++++++++++
-
-- ZPublisher response.setBody: don't append Accept-Encoding to Vary header if
- it is already present - this can make cache configuration difficult.
-
-2.12.0a4 (2009-04-24)
----------------------
-
-Bugs Fixed
-++++++++++
-
-- fixed versions.cfg in order to support zope.z2release for
- creating a proper index structure
-
-2.12.0a3 (2009-04-19)
----------------------
-
-The generated tarball for the 2.12.0a2 source release was incomplete, due to
-a setuptools and Subversion 1.6 incompatibility.
-
-Restructuring
-+++++++++++++
-
-- Added automatic inline migration for databases created with older Zope
- versions. The ``Versions`` screen from the ``Control_Panel`` is now
- automatically removed on Zope startup.
-
-- Removed more unused code of the versions support feature including the
- Globals.VersionNameName constant.
-
-2.12.0a2 (2009-04-19)
----------------------
-
-Restructuring
-+++++++++++++
-
-- If the <permission /> ZCML directive is used to declare a permission that
- does not exist, the permission will now be created automatically, defaulting
- to being granted to the Manager role only. This means it is possible to
- create new permissions using ZCML only. The permission will Permissions that
- already exist will not be changed.
-
-- Using <require set_schema="..." /> or <require set_attributes="..." /> in
- the <class /> directive now emits a warning rather than an error. The
- concept of protecting attribute 'set' does not exist in Zope 2, but it
- should be possible to re-use packages that do declare such protection.
-
-- Updated to Acquisition 2.12.1.
-
-- Updated to DateTime 2.12.0.
-
-- Updated to ZODB 3.9.0a12.
-
-- Removed the ``getPackages`` wrapper from setup.py which would force all
- versions to an exact requirement. This made it impossible to require
- newer versions of the dependencies. This kind of KGS information needs
- to be expressed in a different way.
-
-- removed ``extras_require`` section from setup.py (this might possibly
- break legacy code).
-
-Bugs Fixed
-++++++++++
-
-- Launchpad #348223: optimize catalog query by breaking out early from loop
- over indexes if the result set is already empty.
-
-- Launchpad #344098: in ``skel/etc/zope.conf.ing``, replaced commented-out
- ``read-only-database`` option, which is deprecated, with pointers to the
- appropos sections of ZODB's ``component.xml``. Updated the description
- of the ``zserver-read-only-mode`` directive to indicate its correct
- semantics (suppressing log / pid / lock files). Added deprecation to the
- ``read-only-database`` option, which has had no effect since Zope 2.6.
-
-- "Permission tab": correct wrong form parameter for
- the user-permission report
-
-- PageTemplates: Made PreferredCharsetResolver work with new kinds of contexts
- that are not acquisition wrapped.
-
-- Object managers should evaluate to True in a boolean test.
-
-2.12.0a1 (2009-02-26)
----------------------
-
-Restructuring
-+++++++++++++
-
-- Switched Products.PageTemplates to directly use zope.i18n.translate and
- removed the GlobalTranslationService hook.
-
-- Removed bridging code from Product.Five for PlacelessTranslationService
- and Localizer. Neither of the two is actually using this anymore.
-
-- Removed the specification of ``SOFTWARE_HOME`` and ``ZOPE_HOME`` from the
- standard instance scripts.
- [hannosch]
-
-- Made the specification of ``SOFTWARE_HOME`` and ``ZOPE_HOME`` optional. In
- addition ``INSTANCE_HOME`` is no longer required to run the tests of a
- source checkout of Zope.
-
-- Removed the ``test`` command from zopectl. The test.py script it was relying
- on does no longer exist.
-
-- Updated to ZODB 3.9.0a11. ZODB-level version support has been
- removed and ZopeUndo now is part of Zope2.
-
-- The Zope2 SVN trunk is now a buildout pulling in all dependencies as
- actual released packages and not SVN externals anymore.
-
-- Make use of the new zope.container and zope.site packages.
-
-- Updated to newer versions of zope packages. Removed long deprecated
- layer and skin ZCML directives.
-
-- Disabled the XML export on the UI level - the export functionality
- however is still available on the Python level.
-
-- No longer show the Help! links in the ZMI, if there is no help
- available. The help system depends on the product registry.
-
-- Updated the quick start page and simplified the standard content.
- The default index_html is now a page template.
-
-- Removed deprecated Draft and Version support from Products.OFSP.
- Also removed version handling from the control panel. Versions are
- no longer supported on the ZODB level.
-
-- Removed left-overs of the deprecated persistent product distribution
- mechanism.
-
-- The persistent product registry is not required for starting Zope
- anymore. ``enable-product-installation`` can be set to off if you don't
- rely on the functionality provided by the registry.
-
-- ZClasses have been deprecated for two major releases. They have been
- removed in this version of Zope.
-
-- Avoid deprecation warnings for the md5 and sha modules in Python 2.6
- by adding conditional imports for the hashlib module.
-
-- Replaced imports from the 'Globals' module throughout the
- tree with imports from the actual modules; the 'Globals' module
- was always intended to be an area for shared data, rather than
- a "facade" for imports. Added zope.deferred.deprecation entries
- to 'Globals' for all symbols / modules previously imported directly.
-
-- Protect against non-existing zope.conf path and products directories.
- This makes it possible to run a Zope instance without a Products or
- lib/python directory.
-
-- Moved exception MountedStorageError from ZODB.POSExceptions
- to Products.TemporaryFolder.mount (now its only client).
-
-- Moved Zope2-specific module, ZODB/Mount.py, to
- Products/TemporaryFolder/mount.py (its only client is
- Products/TemporaryFolder/TemporaryFolder.py).
-
-- Removed spurious import-time dependencies from
- Products/ZODBMountPoint/MountedObject.py.
-
-- Removed Examples.zexp from the skeleton. The TTW shopping cart isn't
- any good example of Zope usage anymore.
-
-- Removed deprecated ZTUtil.Iterator module
-
-- Removed deprecated StructuredText module
-
-- Removed deprecated TAL module
-
-- Removed deprecated modules from Products.PageTemplates.
-
-- Removed deprecated ZCML directives from Five including the whole
- Five.site subpackage.
-
-Features added
-++++++++++++++
-
-- OFS.ObjectManager now fully implements the zope.container.IContainer
- interface. For the last Zope2 releases it already claimed to implement the
- interface, but didn't actually full-fill the interface contract. This means
- you can start using more commonly used Python idioms to access objects
- inside object managers. Complete dictionary-like access and container
- methods including iteration are now supported. For each class derived from
- ObjectManager you can use for any instance om: ``om.keys()`` instead of
- ``om.objectIds()``, ``om.values()`` instead of ``om.objectValues()``, but
- also ``om.items()``, ``ob.get('id')``, ``ob['id']``, ``'id' in om``,
- ``iter(om)``, ``len(om)``, ``om['id'] = object()`` instead of
- ``om._setObject('id', object())`` and ``del ob['id']``. Should contained
- items of the object manager have ids equal to any of the new method names,
- the objects will override the method, as expected in Acquisition enabled
- types. Adding new objects into object managers by those new names will no
- longer work, though. The added methods call the already existing methods
- internally, so if a derived type overwrote those, the new interface will
- provide the same functionality.
-
-- Acquisition has been made aware of ``__parent__`` pointers. This allows
- direct access to many Zope 3 classes without the need to mixin
- Acquisition base classes for the security to work.
-
-- MailHost: now uses zope.sendmail for delivering the mail. With this
- change MailHost integrates with the Zope transaction system (avoids
- sending dupe emails in case of conflict errors). In addition
- MailHost now provides support for asynchronous mail delivery. The
- 'Use queue' configuration option will create a mail queue on the
- filesystem (under 'Queue directory') and start a queue thread that
- checks the queue every three seconds. This decouples the sending of
- mail from its delivery. In addition MailHosts now supports
- encrypted connections through TLS/SSL.
-
-- SiteErrorLog now includes the entry id in the information copied to
- the event log. This allowes you to correlate a user error report with
- the event log after a restart, or let's you find the REQUEST
- information in the SiteErrorLog when looking at a traceback in the
- event log.
-
-Bugs Fixed
-++++++++++
-
-- Launchpad #332168: Connection.py: do not expose DB connection strings
- through exceptions
-
-- Specified height/width of icons in ZMI listings so the table doesn't
- jump around while loading.
-
-- After the proper introduction of parent-pointers, it's now
- wrong to acquisition-wrap content providers. We will now use
- the "classic" content provider expression from Zope 3.
-
-- Ported c69896 to Five. This fix makes it possible to provide a
- template using Python, and not have it being set to ``None`` by
- the viewlet manager directive.
-
-- Made Five.testbrowser compatible with mechanize 0.1.7b.
-
-- Launchpad #280334: Fixed problem with 'timeout'
- argument/attribute missing in testbrowser tests.
-
-- Launchpad #267834: proper separation of HTTP header fields
- using CRLF as requested by RFC 2616.
-
-- Launchpad #257276: fix for possible denial-of-service attack
- in PythonScript when passing an arbitrary module to the encode()
- or decode() of strings.
-
-- Launchpad #257269: 'raise SystemExit' with a PythonScript could shutdown
- a complete Zope instance
-
-- Switch to branch of 'zope.testbrowser' external which suppresses
- over-the-wire tests.
-
-- Launchpad #143902: Fixed App.ImageFile to use a stream iterator to
- output the file. Avoid loading the file content when guessing the
- mimetype and only load the first 1024 bytes of the file when it cannot
- be guessed from the filename.
-
-- Changed PageTemplateFile not to load the file contents on Zope startup
- anymore but on first access instead. This brings them inline with the
- zope.pagetemplate version and speeds up Zope startup.
-
-- Collector #2278: form ':record' objects did not implement enough
- of the mapping protocol.
-
-- "version.txt" file was being written to the wrong place by the
- Makefile, causing Zope to report "unreleased version" even for
- released versions.
-
-- Five.browser.metaconfigure.page didn't protect names from interface
- superclasses (http://www.zope.org/Collectors/Zope/2333)
-
-- DAV: litmus "notowner_modify" tests warn during a MOVE request
- because we returned "412 Precondition Failed" instead of "423
- Locked" when the resource attempting to be moved was itself
- locked. Fixed by changing Resource.Resource.MOVE to raise the
- correct error.
-
-- DAV: litmus props tests 19: propvalnspace and 20:
- propwformed were failing because Zope did not strip off the
- xmlns: attribute attached to XML property values. We now strip
- off all attributes that look like xmlns declarations.
-
-- DAV: When a client attempted to unlock a resource with a token
- that the resource hadn't been locked with, in the past we
- returned a 204 response. This was incorrect. The "correct"
- behavior is to do what mod_dav does, which is return a '400
- Bad Request' error. This was caught by litmus
- locks.notowner_lock test #10. See
- http://lists.w3.org/Archives/Public/w3c-dist-auth/2001JanMar/0099.html
- for further rationale.
-
-- When Zope properties were set via DAV in the "null" namespace
- (xmlns="") a subsequent PROPFIND for the property would cause the
- XML representation for that property to show a namespace of
- xmlns="None". Fixed within OFS.PropertySheets.dav__propstat.
-
-- integrated theuni's additional test from 2.11 (see r73132)
-
-- Relaxed requirements for context of
- Products.Five.browser.pagetemplatefile.ZopeTwoPageTemplateFile,
- to reduce barriers for testing renderability of views which
- use them.
- (http://www.zope.org/Collectors/Zope/2327)
-
-- PluginIndexes: Fixed 'parseIndexRequest' for false values.
-
-- Collector #2263: 'field2ulines' did not convert empty string
- correctly.
-
-- Collector #2198: Zope 3.3 fix breaks Five 1.5 test_getNextUtility
-
-- Prevent ZPublisher from insering incorrect <base/> tags into the
- headers of plain html files served from Zope3 resource directories.
-
-- Changed the condition checking for setting status of
- HTTPResponse from to account for new-style classes.
-
-- The Wrapper_compare function from tp_compare to tp_richcompare.
- Also another function Wrapper_richcompare is added.
-
-- The doc test has been slightly changed in ZPublisher to get
- the error message extracted correctly.
-
-- The changes made in Acquisition.c in Implicit Acquisition
- comparison made avail to Explicit Acquisition comparison also.
-
-- zopedoctest no longer breaks if the URL contains more than one
- question mark. It broke even when the second question mark was
- correctly quoted.
-
-Other Changes
-+++++++++++++
-
-- Added lib/python/webdav/litmus-results.txt explaining current
- test results from the litmus WebDAV torture test.
-
-- DocumentTemplate.DT_Var.newline_to_br(): Simpler, faster
- implementation.
-
Modified: Zope/trunk/doc/WHATSNEW.rst
===================================================================
--- Zope/trunk/doc/WHATSNEW.rst 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/doc/WHATSNEW.rst 2009-05-27 12:45:04 UTC (rev 100457)
@@ -1,4 +1,4 @@
-What's new in Zope 2.12
+What's new in Zope 2.13
=======================
The article explains the new high-level features and changes found in this
@@ -8,333 +8,7 @@
about all minor new features and bugs being solved in this release.
-Support for newer Python versions
----------------------------------
+News!
+-----
-Zope 2 has supported and required Python 2.4 since its 2.9 release in summer
-2006. Later versions of Python have so far been unsupported by Zope 2.
-
-This version of Zope 2 adds support for both Python 2.5 and 2.6 at the same
-time. As Python 2.4 is no longer maintained itself, it is no longer officially
-supported by this Zope 2 version. There is however no code in Zope 2 yet which
-requires Python 2.5, so applications built on top of Zope 2 should still
-continue to run with Python 2.4.
-
-Python 3 is a backwards incompatible release of Python and not supported. At
-this point there is no concrete roadmap for adoption of Python 3. It is
-expected to be a question of multiple major Zope 2 releases or years, though.
-
-
-Fully eggified
---------------
-
-Zope 2 itself is now fully eggified and compatible with `setuptools
-<http://pypi.python.org/pypi/setuptools>`_. You can use popular tools like
-`easy_install <http://peak.telecommunity.com/DevCenter/EasyInstall>`_ or
-`zc.buildout <http://pypi.python.org/pypi/zc.buildout>`_ to install Zope 2.
-
-Releases of Zope 2 can be found at and will be installable from the Python
-package index at http://pypi.python.org/pypi/Zope2.
-
-The repackaging of Zope 2 into an eggified form and accompanying changes to the
-file system layout have caused a number of changes. The environment variables
-`SOFTWARE_HOME` and `ZOPE_HOME` are no longer available nor set in the control
-scripts. If you need to access data files inside the Zope 2 package, you can
-for example use `import os, OFS; os.path.dirname(OFS.__file__)` to locate the
-files inside the OFS package.
-
-In general it is discouraged to rely on the `lib/python` and `Products`
-directories to make code available to the running Zope process. While these
-mechanisms continue to work, you are encouraged to use normal distutils or
-setuptools managed packages and add these to your `sys.path` using any of the
-standard Python mechanisms. To create isolated Python environments both
-`zc.buildout <http://pypi.python.org/pypi/zc.buildout>`_ and `virtualenv
-<http://pypi.python.org/pypi/virtualenv>`_ are in wide-spread use.
-
-
-Zope Toolkit
-------------
-
-This version of Zope 2 is based on the Zope Toolkit. The Zope Toolkit is an
-extraction of the reusable and wildly used packages of the former Zope 3
-project. The Zope Toolkit is focused on supporting frameworks and applications,
-rather than trying to be one itself. Parts of the Zope Toolkit are used by
-Zope 2, Plone, Grok, Repoze.bfg, and by many other different applications and
-frameworks.
-
-A major focus of the Zope Toolkit was to refactor package dependencies to
-generate more maintainable and better structured code. Based on this effort
-the number of packages included by Zope 2 could be dramatically reduced from
-about 120 additional packages to just over 60. The total code size of Zope 2
-and its dependencies has decreased by over 200,000 lines of code as a result.
-
-You can find more information about the changes in the Zope Toolkit at
-http://docs.zope.org/zopetoolkit/. Upgrade information from Zope 3 to the Zope
-Toolkit can be found at http://docs.zope.org/zopetoolkit/migration/index.html.
-
-
-ZODB 3.9
---------
-
-This version of Zope 2 includes the latest version of the `ZODB (3.9)
-<http://pypi.python.org/pypi/ZODB3>`_. It has a multitude of new configuration
-options and bug fixes. File storages have gotten native support for blob
-storages and demo storages have been expanded extensively. There is a large
-number of options to tune ZEO servers and clients in large scale environments
-and control cache invalidation and packaging to a much wider degree.
-
-You can read more about the detailed changes in the `ZODB3 change log
-<http://pypi.python.org/pypi/ZODB3>`_ for version 3.9.
-
-
-Module cleanup
---------------
-
-As with every release of Zope 2 this version has removed various modules
-which have been deprecated in prior versions.
-
-Most notably ZClasses and supporting modules have been removed entirely from
-Zope 2. As a result the persistent product registry has been made optional, but
-is still enabled by default. If your application does not rely on the registry,
-you can now disable it by specifying::
-
- enable-product-installation off
-
-inside your `zope.conf` file. With the option turned off Zope will no longer
-write any new transactions to your database during startup in most cases.
-
-With the upgrade to ZODB 3.9 database-level version support is no longer
-available. Many of the modules in `Products.OFSP` have been removed as a
-result. The low level API to load objects from the database has lost its
-version argument as a result of this.
-
-
-Documentation updates
----------------------
-
-Zope 2 now uses `Sphinx <http://sphinx.pocoo.org/>`_ to create pleasant HTML
-representations of its documentation. An effort is underway to update the
-publicly available documentation using Sphinx at http://docs.zope.org/.
-
-So far the Zope 2 Book, the Zope Developers Guide and many smaller articles
-have been converted to reStructuredText and their content updated.
-
-
-Acquisition redux
------------------
-
-The short technical version of this change is: "Acquisition has been made aware
-of __parent__ pointers". What sounds like a small change is actually a major
-step in the integration story for Zope components based technology into Zope 2.
-
-While integrating the Zope component architecture and its many concepts into
-Zope 2 an integration layer called Five (Zope 2 + 3) has been created. One of
-the major reasons for the necessity of an integration layer has been in the way
-Zope 2 was tightly coupled to the concept of Acquisition. The entire security
-machinery, object traversal and publication has been relying on this.
-
-All classes, which wanted to interact with Zope 2 in any non-trivial way, had
-to inherit from the Acquisition base classes. As a result almost no external
-package could directly work inside Zope 2 but required an integration layer.
-
-With this version of Zope 2, objects have a new option of providing location
-awareness to Zope APIs. This new option is to provide an explicit parent
-pointer in the ``__parent__`` attribute, much like specified by the ILocation
-API from `zope.location <http://pypi.python.org/pypi/zope.location>`_. Browser
-views and other location-dependent components implement ILocation already.
-
-Classes adhering to this convention need to get `__parent__` pointers set to
-their container object, when being put into the container. Code that operates
-on such objects can then walk up the containment hierarchy by following the
-pointers. In Acquisition based classes no information would be stored on the
-objects, but Acquisition wrappers are constructed around the objects instead.
-Only those wrappers would hold the container references. The Acquisition
-wrapping relies on the objects to provide an `__of__` method as done by the
-Acquisition base classes.
-
-The most common way of getting the container of an instance is to call::
-
- from Acquisition import aq_parent
-
- container = aq_parent(instance)
-
-For instances providing the ILocation interface the common way is::
-
- container = instance.__parent__
-
-There are various `aq_*` methods available for various other tasks related to
-locating objects in the containment hierarchy. So far virtually all objects in
-Zope 2 would participate in Acquisition. As a side-effect many people relied on
-Acquisition wrappers to be found around their objects. This caused code to rely
-on accessing the `aq_*` methods as attributes of the wrapper::
-
- container = instance.aq_parent
-
-While all the existing API's still work as before, Acquisition now respects
-`__parent__` pointers to find the container for an object. It will also not
-unconditionally try to call the `__of__` method of objects anymore, but protect
-it with a proper interface check::
-
- from Acquisition.interfaces import IAcquirer
-
- if IAcquirer.providedBy(instance):
- instance = instance.__of__(container)
-
-In addition to this check you should no longer rely on the `aq_*` methods to be
-available as attributes. While all code inside Zope 2 itself still supports
-this, it does no longer rely on those but makes proper use of the functions
-provided by the Acquisition package.
-
-To understand the interaction between the new and old approach here is a
-little example::
-
- >>> class Location(object):
- ... def __init__(self, name):
- ... self.__name__ = name
- ... def __repr__(self):
- ... return self.__name__
-
- # Create an Acquisition variant of the class:
-
- >>> import Acquisition
- >>> class Implicit(Location, Acquisition.Implicit):
- ... pass
-
- # Create two implicit instances:
-
- >>> root = Implicit('root')
- >>> folder = Implicit('folder')
-
- # And two new Acquisition-free instances:
-
- >>> container = Location('container')
- >>> item = Location('item')
-
- # Provide the containment hints:
-
- >>> folder = folder.__of__(root)
- >>> container.__parent__ = folder
- >>> item.__parent__ = container
-
- # Test the containtment chain:
-
- >>> from Acquisition import aq_parent
- >>> aq_parent(container)
- folder
-
- >>> from Acquisition import aq_chain
- >>> aq_chain(item)
- [item, container, folder, root]
-
- # Explicit pointers take precedence over Acquisition wrappers:
-
- >>> item2 = Implicit('item2')
- >>> item2 = item2.__of__(folder)
- >>> item2.__parent__ = container
-
- >>> aq_chain(item2)
- [item2, container, folder, root]
-
-For a less abstract example, you so far had to do::
-
- >>> from Acquisition import aq_inner
- >>> from Acquisition import aq_parent
- >>> from Products import Five
-
- >>> class MyView(Five.browser.BrowserView):
- ...
- ... def do_something(self):
- ... container = aq_parent(aq_inner(self.context))
-
-Instead you can now do::
-
- >>> import zope.publisher.browser
-
- >>> class MyView(zope.publisher.browser.BrowserView):
- ...
- ... def do_something(self):
- ... container = aq_parent(self.context)
-
-As the zope.publisher BrowserView supports the ILocation interface, all of this
-works automatically. A view considers its context as its parent as before, but
-no longer needs Acquisition wrapping for the Acquisition machinery to
-understand this. The next time you want to use a package or make your own code
-more reusable outside of Zope 2, this should be of tremendous help.
-
-
-Object managers and IContainer
-------------------------------
-
-One of the fundamental parts of Zope 2 is the object file system as implemented
-in the `OFS` package. A central part of this package is an underlying class
-called `ObjectManager`. It is a base class of the standard `Folder` used
-for many container-ish classes inside Zope 2.
-
-The API to access objects in an object manager or to add objects to one has
-been written many years ago. Since those times Python itself has gotten
-standard ways to access objects in containers and work with them. Those Python
-API's are most familiar to most developers working with Zope. The Zope
-components libraries have formalized those API's into the general IContainer
-interface in the zope.container package. In this version of Zope 2 the standard
-OFS ObjectManager fully implements this IContainer interface in addition to its
-old API.
-
- >>> from zope.container.interfaces import IContainer
- >>> from OFS.ObjectManager import ObjectManager
- >>> IContainer.implementedBy(ObjectManager)
- True
-
-You can now write your code in a way that no longer ties it to object managers
-alone, but can support any class implementing IContainer instead. In
-conjunction with the Acquisition changes above, this will increase your chances
-of being able to reuse existing packages not specifically written for Zope 2 in
-a major way.
-
-Here's an example of how you did work with object managers before::
-
- >>> from OFS.Folder import Folder
- >>> from OFS.SimpleItem import SimpleItem
-
- >>> folder = Folder('folder')
- >>> item1 = SimpleItem('item1')
- >>> item2 = SimpleItem('item2')
-
- >>> result = folder._setObject('item1', item1)
- >>> result = folder._setObject('item2', item2)
-
- >>> folder.objectIds()
- ['item1', 'item2']
-
- >>> folder.objectValues()
- [<SimpleItem at folder/>, <SimpleItem at folder/>]
-
- >>> if folder.hasObject('item2')
- ... folder._delObject('item2')
-
-Instead of this special API, you can now use::
-
- >>> from OFS.Folder import Folder
- >>> from OFS.SimpleItem import SimpleItem
-
- >>> folder = Folder('folder')
- >>> item1 = SimpleItem('item1')
- >>> item2 = SimpleItem('item2')
-
- >>> folder['item1'] = item1
- >>> folder['item2'] = item2
-
- >>> folder.keys()
- ['item1', 'item2']
-
- >>> folder.values()
- [<SimpleItem at folder/>, <SimpleItem at folder/>]
-
- >>> folder.get('item1')
- <SimpleItem at folder/>
-
- >>> if 'item2' in folder:
- ... del folder['item2']
-
- >>> folder.items()
- [('item1', <SimpleItem at folder/>)]
-
+No major new features are available in this version yet.
Modified: Zope/trunk/doc/WINDOWS.rst
===================================================================
--- Zope/trunk/doc/WINDOWS.rst 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/doc/WINDOWS.rst 2009-05-27 12:45:04 UTC (rev 100457)
@@ -16,7 +16,7 @@
% python.exe inst\configure.py
It should say something like:
>
- > - Zope top-level binary directory will be c:\Zope-2.12.
+ > - Zope top-level binary directory will be c:\Zope-2.13.
> - Makefile written.
>
> Next, run the Visual C++ batch file "VCVARS32.bat" and then "nmake".
Deleted: Zope/trunk/doc/ZOPE3.rst
===================================================================
--- Zope/trunk/doc/ZOPE3.rst 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/doc/ZOPE3.rst 2009-05-27 12:45:04 UTC (rev 100457)
@@ -1,30 +0,0 @@
-Using Zope Components in Zope 2 Applications
-============================================
-
-Background
-----------
-
-Zope 3 is a separate project from the Zope community aimed at web
-development. It is designed to be more 'programmer-centric' and easier
-to learn, use and extend for programmers. Zope 3 introduces an
-interface-centric component architecture that makes it easier to develop
-and deploy components without requiring developers to learn and
-understand the entire Zope framework.
-
-As of Zope 2.8, the "Five" project has been integrated into the
-Zope 2 core. The "Five" project implements a compatibility layer
-that allows many Zope 3 components and patterns to be used in
-new and existing Zope 2 applications.
-
-Features
---------
-
-The Five integration layer provides support for Zope 3 interfaces,
-Zope Configuration Markup Language (ZCML), adapters, views,
-utilities and schema-driven content.
-
-Note that the Five layer does *not* attempt to provide a ZMI user
-interface for Zope 3 components.
-
-Zope 2 includes the essential Zope 3 packages, so it is not
-necessary to install Zope 3.
Modified: Zope/trunk/doc/conf.py
===================================================================
--- Zope/trunk/doc/conf.py 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/doc/conf.py 2009-05-27 12:45:04 UTC (rev 100457)
@@ -49,9 +49,9 @@
# built documents.
#
# The short X.Y version.
-version = '2.12.0'
+version = '2.13'
# The full version, including alpha/beta/rc tags.
-release = '2.12.0a4'
+release = '2.13.0dev'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Modified: Zope/trunk/doc/index.rst
===================================================================
--- Zope/trunk/doc/index.rst 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/doc/index.rst 2009-05-27 12:45:04 UTC (rev 100457)
@@ -1,5 +1,5 @@
-Zope 2.12 specific documentation
+Zope 2.13 specific documentation
================================
Contents:
Modified: Zope/trunk/inst/WinBuilders/mk/zope.mk
===================================================================
--- Zope/trunk/inst/WinBuilders/mk/zope.mk 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/inst/WinBuilders/mk/zope.mk 2009-05-27 12:45:04 UTC (rev 100457)
@@ -1,4 +1,4 @@
-ZOPEVERSION = 2.12.0b1
+ZOPEVERSION = 2.13.0dev
ZOPEDIRNAME := Zope-$(ZOPEVERSION)
ZOPE_REQUIRED_FILES=tmp/$(ZOPEDIRNAME).tgz
Modified: Zope/trunk/inst/generate_index.py
===================================================================
--- Zope/trunk/inst/generate_index.py 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/inst/generate_index.py 2009-05-27 12:45:04 UTC (rev 100457)
@@ -49,7 +49,7 @@
links = list()
dirname = sys.argv[1]
-write_index('Zope2', '2.12.0a3')
+write_index('Zope2', '2.13.0dev')
for package in CP.options('versions'):
Modified: Zope/trunk/inst/versions.py
===================================================================
--- Zope/trunk/inst/versions.py 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/inst/versions.py 2009-05-27 12:45:04 UTC (rev 100457)
@@ -1,7 +1,7 @@
-ZOPE_MAJOR_VERSION = '2.12'
+ZOPE_MAJOR_VERSION = '2.13'
ZOPE_MINOR_VERSION = '0'
ZOPE_BRANCH_NAME = '$Name$'[6:] or 'no-branch'
# always start prerelease branches with '0' to avoid upgrade
# issues in RPMs
-VERSION_RELEASE_TAG = 'b1'
+VERSION_RELEASE_TAG = '0.dev'
Modified: Zope/trunk/setup.py
===================================================================
--- Zope/trunk/setup.py 2009-05-27 12:22:59 UTC (rev 100456)
+++ Zope/trunk/setup.py 2009-05-27 12:45:04 UTC (rev 100457)
@@ -19,7 +19,7 @@
EXTENSIONCLASS_INCLUDEDIRS = ['include', 'src']
params = dict(name='Zope2',
- version='2.13dev',
+ version='2.13.0dev',
url='http://www.zope.org',
license='ZPL 2.1',
description='Zope2 application server / web framework',
More information about the Checkins
mailing list