diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-05-01 08:02:55 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-05-01 08:02:55 +0000 |
| commit | a7a6d7568546dcc88d836653cce8e69916f1e442 (patch) | |
| tree | cebbe72e3192d49bb4432454fa8cd46228d47cbe /CHANGES.txt | |
| parent | c857492756ba39f44a15572341dbdfa076bcb644 (diff) | |
| download | pyramid-a7a6d7568546dcc88d836653cce8e69916f1e442.tar.gz pyramid-a7a6d7568546dcc88d836653cce8e69916f1e442.tar.bz2 pyramid-a7a6d7568546dcc88d836653cce8e69916f1e442.zip | |
- The ``repoze.bfg.location.LocationProxy`` class and the
``repoze.bfg.location.ClassAndInstanceDescr`` class have both been
removed in order to be able to eventually shed a dependency on
``zope.proxy``. Neither of these classes was ever an API.
- In all previous releases, the ``repoze.bfg.location.locate``
function worked like so: if a model did not explicitly provide the
``repoze.bfg.interfaces.ILocation`` interface, ``locate`` returned a
``LocationProxy`` object representing ``model`` with its
``__parent__`` attribute assigned to ``parent`` and a ``__name__``
attribute assigned to ``__name__``. In this release, the
``repoze.bfg.location.locate`` function simply jams the ``__name__``
and ``__parent__`` attributes on to the supplied model
unconditionally, no matter if the object implements ILocation or
not, and it never returns a proxy. This was done because the
LocationProxy behavior has now moved into an add-on package
(``repoze.bfg.traversalwrapper``), in order to eventually be able to
shed a dependency on ``zope.proxy``.
- In all previous releases, by default, if traversal was used (as
opposed to URL-dispatch), and the root object supplied
the``repoze.bfg.interfaces.ILocation`` interface, but the children
returned via its ``__getitem__`` returned an object that did not
implement the same interface, :mod:`repoze.bfg` provided some
implicit help during traversal. This traversal feature wrapped
subobjects from the root (and thereafter) that did not implement
``ILocation`` in proxies which automatically provided them with a
``__name__`` and ``__parent__`` attribute based on the name being
traversed and the previous object traversed. This feature has now
been removed from the base ``repoze.bfg`` package for purposes of
eventually shedding a dependency on ``zope.proxy``.
In order to re-enable the wrapper behavior for older applications
which cannot be changed, register the "traversalwrapper"
``ModelGraphTraverser`` as the traversal policy, rather than the
default ``ModelGraphTraverser``. To use this feature, you will need
to install the ``repoze.bfg.traversalwrapper`` package (an add-on
package, available at
http://svn.repoze.org/repoze.bfg.traversalwrapper) Then change your
application's ``configure.zcml`` to include the following stanza:
<adapter
factory="repoze.bfg.traversalwrapper.ModelGraphTraverser"
provides="repoze.bfg.interfaces.ITraverserFactory"
for="*"
/>
When this ITraverserFactory is used instead of the default, no
object in the graph (even the root object) must supply a
``__name__`` or ``__parent__`` attribute. Even if subobjects
returned from the root *do* implement the ILocation interface,
these will still be wrapped in proxies that override the object's
"real" ``__parent__`` and ``__name__`` attributes.
See also changes to the "Models" chapter of the documentation (in
the "Location-Aware Model Instances") section.
Diffstat (limited to 'CHANGES.txt')
| -rw-r--r-- | CHANGES.txt | 63 |
1 files changed, 44 insertions, 19 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index e8371c661..e51c238b4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,13 +9,17 @@ Index-Related been superseded by a new index location (`http://dist.repoze.org/bfg/current/simple <http://dist.repoze.org/bfg/current/simple>`_). The installation - documentation has been updated. The "lemonade" index still exists, - but it is not guaranteed to have the latest BFG software in it, nor - will it be maintained in the future. + documentation has been updated as well as the ``setup.cfg`` file in + this package. The "lemonade" index still exists, but it is not + guaranteed to have the latest BFG software in it, nor will it be + maintained in the future. Features -------- +- The "paster create" templates have been modified to use links to the + new "bfg.repoze.org" and "docs.repoze.org" websites. + - Added better documentation for virtual hosting at a URL prefix within the virtual hosting docs chapter. @@ -78,6 +82,25 @@ Features Backwards Incompatibilities --------------------------- +- The ``repoze.bfg.location.LocationProxy`` class and the + ``repoze.bfg.location.ClassAndInstanceDescr`` class have both been + removed in order to be able to eventually shed a dependency on + ``zope.proxy``. Neither of these classes was ever an API. + +- In all previous releases, the ``repoze.bfg.location.locate`` + function worked like so: if a model did not explicitly provide the + ``repoze.bfg.interfaces.ILocation`` interface, ``locate`` returned a + ``LocationProxy`` object representing ``model`` with its + ``__parent__`` attribute assigned to ``parent`` and a ``__name__`` + attribute assigned to ``__name__``. In this release, the + ``repoze.bfg.location.locate`` function simply jams the ``__name__`` + and ``__parent__`` attributes on to the supplied model + unconditionally, no matter if the object implements ILocation or + not, and it never returns a proxy. This was done because the + LocationProxy behavior has now moved into an add-on package + (``repoze.bfg.traversalwrapper``), in order to eventually be able to + shed a dependency on ``zope.proxy``. + - In all previous releases, by default, if traversal was used (as opposed to URL-dispatch), and the root object supplied the``repoze.bfg.interfaces.ILocation`` interface, but the children @@ -88,28 +111,30 @@ Backwards Incompatibilities ``ILocation`` in proxies which automatically provided them with a ``__name__`` and ``__parent__`` attribute based on the name being traversed and the previous object traversed. This feature has now - been disabled in the default configuration for purposes of speed and - understandability. - - In order to re-enable the ILocation wrapper behavior for older - applications which cannot be changed, register the - ``WrappingModelGraphTraverser`` as the traversal policy, rather than - the default ``ModelGraphTraverser``. To use this feature, your - application will need to have the following in its - ``configure.zcml``:: + been removed from the base ``repoze.bfg`` package for purposes of + eventually shedding a dependency on ``zope.proxy``. + + In order to re-enable the wrapper behavior for older applications + which cannot be changed, register the "traversalwrapper" + ``ModelGraphTraverser`` as the traversal policy, rather than the + default ``ModelGraphTraverser``. To use this feature, you will need + to install the ``repoze.bfg.traversalwrapper`` package (an add-on + package, available at + http://svn.repoze.org/repoze.bfg.traversalwrapper) Then change your + application's ``configure.zcml`` to include the following stanza: <adapter - factory="repoze.bfg.traversal.WrappingModelGraphTraverser" + factory="repoze.bfg.traversalwrapper.ModelGraphTraverser" provides="repoze.bfg.interfaces.ITraverserFactory" for="*" /> - When this ITraverserFactory is used, no object in the graph (even - the root object) must supply a ``__name__`` or ``__parent__`` - attribute. Even if subobjects returned from the root *do* - implement the ILocation interface, these will still be wrapped in - proxies that override the object's "real" ``__parent__`` and - ``__name__`` attributes. + When this ITraverserFactory is used instead of the default, no + object in the graph (even the root object) must supply a + ``__name__`` or ``__parent__`` attribute. Even if subobjects + returned from the root *do* implement the ILocation interface, + these will still be wrapped in proxies that override the object's + "real" ``__parent__`` and ``__name__`` attributes. See also changes to the "Models" chapter of the documentation (in the "Location-Aware Model Instances") section. |
