repoze.bfg 1.1a5 has been released.

You may install it using the following command:

   easy_install -i http://dist.repoze.org/bfg/dev/simple repoze.bfg

It is also on PyPI.

This release is mostly a documentation improvement and speed improvement 
release.  The changelog follows:

1.1a5 (2009-10-10)
==================

Documentation
-------------

- Change "Traversal + ZODB" and "URL Dispatch + SQLAlchemy" Wiki
   tutorials to make use of the new-to-1.1 "renderer" feature (return
   dictionaries from all views).

- Add tests to the "URL Dispatch + SQLAlchemy" tutorial after the
   "view" step.

- Added a diagram of model graph traversal to the "Traversal"
   narrative chapter of the documentation.

- An ``exceptions`` API chapter was added, documenting the new
   ``repoze.bfg.exceptions`` module.

- Describe "request-only" view calling conventions inside the
   urldispatch narrative chapter, where it's most helpful.

- Add a diagram which explains the operation of the BFG router to the
   "Router" narrative chapter.

Features
--------

- Add a new ``repoze.bfg.testing`` API: ``registerRoute``, for
   registering routes to satisfy calls to
   e.g. ``repoze.bfg.url.route_url`` in unit tests.

- The ``notfound`` and ``forbidden`` ZCML directives now accept the
   following addtional attributes: ``attr``, ``renderer``, and
   ``wrapper``.  These have the same meaning as they do in the context
   of a ZCML ``view`` directive.

- For behavior like Django's ``APPEND_SLASH=True``, use the
   ``repoze.bfg.view.append_slash_notfound_view`` view as the Not Found
   view in your application.  When this view is the Not Found view
   (indicating that no view was found), and any routes have been
   defined in the configuration of your application, if the value of
   ``PATH_INFO`` does not already end in a slash, and if the value of
   ``PATH_INFO`` *plus* a slash matches any route's path, do an HTTP
   redirect to the slash-appended PATH_INFO.  Note that this will
   *lose* ``POST`` data information (turning it into a GET), so you
   shouldn't rely on this to redirect POST requests.

- Speed up ``repoze.bfg.location.lineage`` slightly.

- Speed up ``repoze.bfg.encode.urlencode`` (nee'
   ``repoze.bfg.url.urlencode``) slightly.

- Speed up ``repoze.bfg.traversal.model_path``.

- Speed up ``repoze.bfg.traversal.model_path_tuple`` slightly.

- Speed up ``repoze.bfg.traversal.traverse`` slightly.

- Speed up ``repoze.bfg.url.model_url`` slightly.

- Speed up ``repoze.bfg.url.route_url`` slightly.

- Sped up ``repoze.bfg.traversal.ModelGraphTraverser:__call__``
   slightly.

- Minor speedup of ``repoze.bfg.router.Router.__call__``.

- New ``repoze.bfg.exceptions`` module was created to house exceptions
   that were previously sprinkled through various modules.

Internal
--------

- Move ``repoze.bfg.traversal._url_quote`` into ``repoze.bfg.encode``
   as ``url_quote``.

Deprecations
------------

- The import of ``repoze.bfg.view.NotFound`` is deprecated in favor of
   ``repoze.bfg.exceptions.NotFound``.  The old location still
   functions, but emits a deprecation warning.

- The import of ``repoze.bfg.security.Unauthorized`` is deprecated in
   favor of ``repoze.bfg.exceptions.Forbidden``.  The old location
   still functions but emits a deprecation warning.  The rename from
   ``Unauthorized`` to ``Forbidden`` brings parity to the the name of
   the exception and the system view it invokes when raised.

Backwards Incompatibilities
---------------------------

- We previously had a Unicode-aware wrapper for the
   ``urllib.urlencode`` function named ``repoze.bfg.url.urlencode``
   which delegated to the stdlib function, but which marshalled all
   unicode values to utf-8 strings before calling the stdlib version.
   A newer replacement now lives in ``repoze.bfg.encode`` The
   replacement does not delegate to the stdlib.

   The replacement diverges from the stdlib implementation and the
   previous ``repoze.bfg.url`` url implementation inasmuch as its
   ``doseq`` argument is now a decoy: it always behaves in the
   ``doseq=True`` way (which is the only sane behavior) for speed
   purposes.

   The old import location (``repoze.bfg.url.urlencode``) still
   functions and has not been deprecated.

- In 0.8a7, the return value expected from an object implementing
   ``ITraverserFactory`` was changed from a sequence of values to a
   dictionary containing the keys ``context``, ``view_name``,
   ``subpath``, ``traversed``, ``virtual_root``, ``virtual_root_path``,
   and ``root``.  Until now, old-style traversers which returned a
   sequence have continued to work but have generated a deprecation
   warning.  In this release, traversers which return a sequence
   instead of a dictionary will no longer work.
_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to