1.0a2 (2010-11-09) ================== Documentation ------------- - All references to events by interface (e.g. ``pyramid.interfaces.INewRequest``) have been changed to reference their concrete classes (e.g. ``pyramid.events.NewRequest``) in documentation about making subscriptions. - All references to Pyramid-the-application were changed from mod-`pyramid` to app-`Pyramid`. A custom role setting was added to ``docs/conf.py`` to allow for this. (internal) 1.0a1 (2010-11-05) ================== Features (delta from BFG 1.3) ------------------------------- - Mako templating renderer supports resource specification format for template lookups and within Mako templates. Absolute filenames must be used in Pyramid to avoid this lookup process. - Add ``pyramid.httpexceptions`` module, which is a facade for the ``webob.exc`` module. - Direct built-in support for the Mako templating language. - A new configurator method exists: ``add_handler``. This method adds a Pylons-style "view handler" (such a thing used to be called a "controller" in Pylons 1.0). - New argument to configurator: ``session_factory``. - New method on configurator: ``set_session_factory`` - Using ``request.session`` now returns a (dictionary-like) session object if a session factory has been configured. - The request now has a new attribute: ``tmpl_context`` for benefit of Pylons users. - The decorator previously known as ``pyramid.view.bfg_view`` is now known most formally as ``pyramid.view.view_config`` in docs and paster templates. An import of ``pyramid.view.bfg_view``, however, will continue to work "forever". - New API methods in ``pyramid.session``: ``signed_serialize`` and ``signed_deserialize``. - New interface: ``pyramid.interfaces.IRendererInfo``. An object of this type is passed to renderer factory constructors (see "Backwards Incompatibilities"). - New event type: ``pyramid.interfaces.IBeforeRender``. An object of this type is sent as an event before a renderer is invoked (but after the application-level renderer globals factory added via ``pyramid.configurator.configuration.set_renderer_globals_factory``, if any, has injected its own keys). Applications may now subscribe to the ``IBeforeRender`` event type in order to introspect the and modify the set of renderer globals before they are passed to a renderer. The event object iself has a dictionary-like interface that can be used for this purpose. For example:: from repoze.events import subscriber from pyramid.interfaces import IRendererGlobalsEvent @subscriber(IRendererGlobalsEvent) def add_global(event): event['mykey'] = 'foo' If a subscriber attempts to add a key that already exist in the renderer globals dictionary, a ``KeyError`` is raised. This limitation is due to the fact that subscribers cannot be ordered relative to each other. The set of keys added to the renderer globals dictionary by all subscribers and app-level globals factories must be unique. - New class: ``pyramid.response.Response``. This is a pure facade for ``webob.Response`` (old code need not change to use this facade, it's existence is mostly for vanity and documentation-generation purposes). - All preexisting paster templates (except ``zodb``) now use "imperative" configuration (``starter``, ``routesalchemy``, ``alchemy``). - A new paster template named ``pyramid_starter_zcml`` exists, which uses declarative configuration. Documentation (delta from BFG 1.3) ----------------------------------- - Added a ``pyramid.httpexceptions`` API documentation chapter. - Added a ``pyramid.session`` API documentation chapter. - Added a ``Session Objects`` narrative documentation chapter. - Added an API chapter for the ``pyramid.personality`` module. - Added an API chapter for the ``pyramid.response`` module. - All documentation which previously referred to ``webob.Response`` now uses ``pyramid.response.Response`` instead. - The documentation has been overhauled to use imperative configuration, moving declarative configuration (ZCML) explanations to a separate narrative chapter ``declarative.rst``. - The ZODB Wiki tutorial was updated to take into account changes to the ``pyramid_zodb`` paster template. - The SQL Wiki tutorial was updated to take into account changes to the ``pyramid_routesalchemy`` paster template. Backwards Incompatibilities (with BFG 1.3) ------------------------------------------ - There is no longer an ``IDebugLogger`` registered as a named utility with the name ``repoze.bfg.debug``. - The logger which used to have the name of ``repoze.bfg.debug`` now has the name ``pyramid.debug``. - The deprecated API ``pyramid.testing.registerViewPermission`` has been removed. - The deprecated API named ``pyramid.testing.registerRoutesMapper`` has been removed. - The deprecated API named ``pyramid.request.get_request`` was removed. - The deprecated API named ``pyramid.security.Unauthorized`` was removed. - The deprecated API named ``pyramid.view.view_execution_permitted`` was removed. - The deprecated API named ``pyramid.view.NotFound`` was removed. - The ``bfgshell`` paster command is now named ``pshell``. - The Venusian "category" for all built-in Venusian decorators (e.g. ``subscriber`` and ``view_config``/``bfg_view``) is now ``pyramid`` instead of ``bfg``. - ``pyramid.renderers.rendered_response`` function removed; use ``render_pyramid.renderers.render_to_response`` instead. - Renderer factories now accept a *renderer info object* rather than an absolute resource specification or an absolute path. The object has the following attributes: ``name`` (the ``renderer=`` value), ``package`` (the 'current package' when the renderer configuration statement was found), ``type``: the renderer type, ``registry``: the current registry, and ``settings``: the deployment settings dictionary. Third-party ``repoze.bfg`` renderer implementations that must be ported to Pyramid will need to account for this. This change was made primarily to support more flexible Mako template rendering. - The presence of the key ``repoze.bfg.message`` in the WSGI environment when an exception occurs is now deprecated. Instead, code which relies on this environ value should use the ``exception`` attribute of the request (e.g. ``request.exception[0]``) to retrieve the message. - The values ``bfg_localizer`` and ``bfg_locale_name`` kept on the request during internationalization for caching purposes were never APIs. These however have changed to ``localizer`` and ``locale_name``, respectively. - The default ``cookie_name`` value of the ``authtktauthenticationpolicy`` ZCML now defaults to ``auth_tkt`` (it used to default to ``repoze.bfg.auth_tkt``). - The default ``cookie_name`` value of the ``pyramid.authentication.AuthTktAuthenticationPolicy`` constructor now defaults to ``auth_tkt`` (it used to default to ``repoze.bfg.auth_tkt``). - The ``request_type`` argument to the ``view`` ZCML directive, the ``pyramid.configuration.Configurator.add_view`` method, or the ``pyramid.view.view_config`` decorator (nee ``bfg_view``) is no longer permitted to be one of the strings ``GET``, ``HEAD``, ``PUT``, ``POST`` or ``DELETE``, and now must always be an interface. Accepting the method-strings as ``request_type`` was a backwards compatibility strategy servicing repoze.bfg 1.0 applications. Use the ``request_method`` parameter instead to specify that a view a string request-method predicate.