summaryrefslogtreecommitdiff
path: root/CHANGES.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGES.txt')
-rw-r--r--CHANGES.txt289
1 files changed, 289 insertions, 0 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 2264f50e2..7bd878fca 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,292 @@
+Next release
+============
+
+Documentation
+-------------
+
+- Merged caseman-master narrative editing branch, many wording fixes and
+ extensions.
+
+Backwards Incompatibilities
+---------------------------
+
+- When a ``pyramid.exceptions.Forbidden`` error is raised, its status code
+ now ``403 Forbidden``. It was previously ``401 Unauthorized``, for
+ backwards compatibility purposes with ``repoze.bfg``. This change will
+ cause problems for users of Pyramid with ``repoze.who``, which intercepts
+ ``401 Unauthorized`` by default, but allows ``403 Forbidden`` to pass
+ through. Those deployments will need to configure ``repoze.who`` to also
+ react to ``403 Forbidden``.
+
+1.0a10 (2011-01-18)
+===================
+
+Bug Fixes
+---------
+
+- URL dispatch now properly handles a ``.*`` or ``*`` appearing in a regex
+ match when used inside brackets. Resolves issue #90.
+
+Backwards Incompatibilities
+---------------------------
+
+- The ``add_handler`` method of a Configurator has been removed from the
+ Pyramid core. Handlers are now a feature of the ``pyramid_handlers``
+ package, which can be downloaded from PyPI. Documentation for the package
+ should be available via
+ http://pylonsproject.org/projects/pyramid_handlers/dev, which describes how
+ to add a configuration statement to your ``main`` block to reobtain this
+ method. You will also need to add an ``install_requires`` dependency upon
+ ``pyramid_handlers`` to your ``setup.py`` file.
+
+- The ``load_zcml`` method of a Configurator has been removed from the
+ Pyramid core. Loading ZCML is now a feature of the ``pyramid_zcml``
+ package, which can be downloaded from PyPI. Documentation for the package
+ should be available via
+ http://pylonsproject.org/projects/pyramid_zcml/dev, which describes how
+ to add a configuration statement to your ``main`` block to reobtain this
+ method. You will also need to add an ``install_requires`` dependency upon
+ ``pyramid_zcml`` to your ``setup.py`` file.
+
+- The ``pyramid.includes`` subpackage has been removed. ZCML files which use
+ include the package ``pyramid.includes`` (e.g. ``<include
+ package="pyramid.includes"/>``) now must include the ``pyramid_zcml``
+ package instead (e.g. ``<include package="pyramid_zcml"/>``).
+
+- The ``pyramid.view.action`` decorator has been removed from the Pyramid
+ core. Handlers are now a feature of the ``pyramid_handlers`` package. It
+ should now be imported from ``pyramid_handlers`` e.g. ``from
+ pyramid_handlers import action``.
+
+- The ``handler`` ZCML directive has been removed. It is now a feature of
+ the ``pyramid_handlers`` package.
+
+- The ``pylons_minimal``, ``pylons_basic`` and ``pylons_sqla`` paster
+ templates were removed. Use ``pyramid_sqla`` (available from PyPI) as a
+ generic replacement for Pylons-esque development.
+
+- The ``make_app`` function has been removed from the ``pyramid.router``
+ module. It continues life within the ``pyramid_zcml`` package. This
+ leaves the ``pyramid.router`` module without any API functions.
+
+- The ``configure_zcml`` setting within the deployment settings (within
+ ``**settings`` passed to a Pyramid ``main`` function) has ceased to have any
+ meaning.
+
+Features
+--------
+
+- ``pyramid.testing.setUp`` and ``pyramid.testing.tearDown`` have been
+ undeprecated. They are now the canonical setup and teardown APIs for test
+ configuration, replacing "direct" creation of a Configurator. This is a
+ change designed to provide a facade that will protect against any future
+ Configurator deprecations.
+
+- Add ``charset`` attribute to ``pyramid.testing.DummyRequest``
+ (unconditionally ``UTF-8``).
+
+- Add ``add_directive`` method to configurator, which allows framework
+ extenders to add methods to the configurator (ala ZCML directives).
+
+- When ``Configurator.include`` is passed a *module* as an argument, it
+ defaults to attempting to find and use a callable named ``includeme``
+ within that module. This makes it possible to use
+ ``config.include('some.module')`` rather than
+ ``config.include('some.module.somefunc')`` as long as the include function
+ within ``some.module`` is named ``includeme``.
+
+- The ``bfg2pyramid`` script now converts ZCML include tags that have
+ ``repoze.bfg.includes`` as a package attribute to the value
+ ``pyramid_zcml``. For example, ``<include package="repoze.bfg.includes">``
+ will be converted to ``<include package="pyramid_zcml">``.
+
+Paster Templates
+----------------
+
+- All paster templates now use ``pyramid.testing.setUp`` and
+ ``pyramid.testing.tearDown`` rather than creating a Configurator "by hand"
+ within their ``tests.py`` module, as per decision in features above.
+
+- The ``starter_zcml`` paster template has been moved to the ``pyramid_zcml``
+ package.
+
+Documentation
+-------------
+
+- The wiki and wiki2 tutorials now use ``pyramid.testing.setUp`` and
+ ``pyramid.testing.tearDown`` rather than creating a Configurator "by hand",
+ as per decision in features above.
+
+- The "Testing" narrative chapter now explains ``pyramid.testing.setUp`` and
+ ``pyramid.testing.tearDown`` instead of Configurator creation and
+ ``Configurator.begin()`` and ``Configurator.end()``.
+
+- Document the ``request.override_renderer`` attribute within the narrative
+ "Renderers" chapter in a section named "Overriding A Renderer at Runtime".
+
+- The "Declarative Configuration" narrative chapter has been removed (it was
+ moved to the ``pyramid_zcml`` package).
+
+- Most references to ZCML in narrative chapters have been removed or
+ redirected to ``pyramid_zcml`` locations.
+
+Deprecations
+------------
+
+- Deprecation warnings related to import of the following API functions were
+ added: ``pyramid.traversal.find_model``, ``pyramid.traversal.model_path``,
+ ``pyramid.traversal.model_path_tuple``, ``pyramid.url.model_url``. The
+ instructions emitted by the deprecation warnings instruct the developer to
+ change these method spellings to their ``resource`` equivalents. This is a
+ consequence of the mass concept rename of "model" to "resource" performed
+ in 1.0a7.
+
+1.0a9 (2011-01-08)
+==================
+
+Bug Fixes
+---------
+
+- The ``proutes`` command tried too hard to resolve the view for printing,
+ resulting in exceptions when an exceptional root factory was encountered.
+ Instead of trying to resolve the view, if it cannot, it will now just print
+ ``<unknown>``.
+
+- The `self` argument was included in new methods of the ``ISession`` interface
+ signature, causing ``pyramid_beaker`` tests to fail.
+
+- Readd ``pyramid.traversal.model_path_tuple`` as an alias for
+ ``pyramid.traversal.resource_path_tuple`` for backwards compatibility.
+
+Features
+--------
+
+- Add a new API ``pyramid.url.current_route_url``, which computes a URL based
+ on the "current" route (if any) and its matchdict values.
+
+- ``config.add_view`` now accepts a ``decorator`` keyword argument, a callable
+ which will decorate the view callable before it is added to the registry.
+
+- If a handler class provides an ``__action_decorator__`` attribute (usually
+ a classmethod or staticmethod), use that as the decorator for each view
+ registration for that handler.
+
+- The ``pyramid.interfaces.IAuthenticationPolicy`` interface now specifies an
+ ``unauthenticated_userid`` method. This method supports an important
+ optimization required by people who are using persistent storages which do
+ not support object caching and whom want to create a "user object" as a
+ request attribute.
+
+- A new API has been added to the ``pyramid.security`` module named
+ ``unauthenticated_userid``. This API function calls the
+ ``unauthenticated_userid`` method of the effective security policy.
+
+- An ``unauthenticated_userid`` method has been added to the dummy
+ authentication policy returned by
+ ``pyramid.config.Configurator.testing_securitypolicy``. It returns the
+ same thing as that the dummy authentication policy's
+ ``authenticated_userid`` method.
+
+- The class ``pyramid.authentication.AuthTktCookieHelper`` is now an API.
+ This class can be used by third-party authentication policy developers to
+ help in the mechanics of authentication cookie-setting.
+
+- New constructor argument to Configurator: ``default_view_mapper``. Useful
+ to create systems that have alternate view calling conventions. A view
+ mapper allows objects that are meant to be used as view callables to have
+ an arbitrary argument list and an arbitrary result. The object passed as
+ ``default_view_mapper`` should implement the
+ ``pyramid.interfaces.IViewMapperFactory`` interface.
+
+- add a ``set_view_mapper`` API to Configurator. Has
+ the same result as passing ``default_view_mapper`` to the Configurator
+ constructor.
+
+- ``config.add_view`` now accepts a ``mapper`` keyword argument, which should
+ either be ``None``, a string representing a Python dotted name, or an
+ object which is an ``IViewMapperFactory``. This feature is not useful for
+ "civilians", only for extension writers.
+
+- Allow static renderer provided during view registration to be overridden at
+ request time via a request attribute named ``override_renderer``, which
+ should be the name of a previously registered renderer. Useful to provide
+ "omnipresent" RPC using existing rendered views.
+
+- Instances of ``pyramid.testing.DummyRequest`` now have a ``session``
+ object, which is mostly a dictionary, but also implements the other session
+ API methods for flash and CSRF.
+
+Backwards Incompatibilities
+---------------------------
+
+- Since the ``pyramid.interfaces.IAuthenticationPolicy`` interface now
+ specifies that a policy implementation must implement an
+ ``unauthenticated_userid`` method, all third-party custom authentication
+ policies now must implement this method. It, however, will only be called
+ when the global function named ``pyramid.security.unauthenticated_userid``
+ is invoked, so if you're not invoking that, you will not notice any issues.
+
+- ``pyramid.interfaces.ISession.get_csrf_token`` now mandates that an
+ implementation should return a *new* token if one doesn't already exist in
+ the session (previously it would return None). The internal sessioning
+ implementation has been changed.
+
+Documentation
+-------------
+
+- The (weak) "Converting a CMF Application to Pyramid" tutorial has been
+ removed from the tutorials section. It was moved to the
+ ``pyramid_tutorials`` Github repository.
+
+- The "Resource Location and View Lookup" chapter has been replaced with a
+ variant of Rob Miller's "Much Ado About Traversal" (originally published at
+ http://blog.nonsequitarian.org/2010/much-ado-about-traversal/).
+
+- Many minor wording tweaks and refactorings (merged Casey Duncan's docs
+ fork, in which he is working on general editing).
+
+- Added (weak) description of new view mapper feature to Hooks narrative
+ chapter.
+
+- Split views chapter into 2: View Callables and View Configuration.
+
+- Reorder Renderers and Templates chapters after View Callables but before
+ View Configuration.
+
+- Merge Session Objects, Cross-Site Request Forgery, and Flash Messaging
+ chapter into a single Sessions chapter.
+
+- The Wiki and Wiki2 tutorials now have much nicer CSS and graphics.
+
+Internals
+---------
+
+- The "view derivation" code is now factored into a set of classes rather
+ than a large number of standalone functions (a side effect of the
+ view mapper refactoring).
+
+- The ``pyramid.renderer.RendererHelper`` class has grown a ``render_view``
+ method, which is used by the default view mapper (a side effect of the
+ view mapper refactoring).
+
+- The object passed as ``renderer`` to the "view deriver" is now an instance
+ of ``pyramid.renderers.RendererHelper`` rather than a dictionary (a side
+ effect of view mapper refactoring).
+
+- The class used as the "page template" in ``pyramid.chameleon_text`` was
+ removed, in preference to using a Chameleon-inbuilt version.
+
+- A view callable wrapper registered in the registry now contains an
+ ``__original_view__`` attribute which references the original view callable
+ (or class).
+
+- The (non-API) method of all internal authentication policy implementations
+ previously named ``_get_userid`` is now named ``unauthenticated_userid``,
+ promoted to an API method. If you were overriding this method, you'll now
+ need to override it as ``unauthenticated_userid`` instead.
+
+- Remove (non-API) function of config.py named _map_view.
+
1.0a8 (2010-12-27)
==================