Chris Davies
2011-12-01 c110694453d6661b05611876a930c046217318b0
https://docs.pylonsproject.org to http://docs.pylonsproject.org as readthedocs.org doesn't support https
5 files modified
478 ■■■■■ changed files
HISTORY.txt 466 ●●●●● patch | view | raw | blame | history
docs/glossary.rst 4 ●●●● patch | view | raw | blame | history
docs/narr/introduction.rst 4 ●●●● patch | view | raw | blame | history
docs/narr/logging.rst 2 ●●● patch | view | raw | blame | history
docs/whatsnew-1.2.rst 2 ●●● patch | view | raw | blame | history
HISTORY.txt
@@ -1,3 +1,469 @@
1.2 (2011-09-12)
================
Features
--------
- Route pattern replacement marker names can now begin with an underscore.
  See https://github.com/Pylons/pyramid/issues/276.
1.2b3 (2011-09-11)
==================
Bug Fixes
---------
- The route prefix was not taken into account when a static view was added in
  an "include".  See https://github.com/Pylons/pyramid/issues/266 .
1.2b2 (2011-09-08)
==================
Bug Fixes
---------
- The 1.2b1 tarball was a brownbag (particularly for Windows users) because
  it contained filenames with stray quotation marks in inappropriate places.
  We depend on ``setuptools-git`` to produce release tarballs, and when it
  was run to produce the 1.2b1 tarball, it didn't yet cope well with files
  present in git repositories with high-order characters in their filenames.
Documentation
-------------
- Minor tweaks to the "Introduction" narrative chapter example app and
  wording.
1.2b1 (2011-09-08)
==================
Bug Fixes
---------
- Sometimes falling back from territory translations (``de_DE``) to language
  translations (``de``) would not work properly when using a localizer.  See
  https://github.com/Pylons/pyramid/issues/263
- The static file serving machinery could not serve files that started with a
  ``.`` (dot) character.
- Static files with high-order (super-ASCII) characters in their names could
  not be served by a static view.  The static file serving machinery
  inappropriately URL-quoted path segments in filenames when asking for files
  from the filesystem.
- Within ``pyramid.traversal.traversal_path`` , canonicalize URL segments
  from UTF-8 to Unicode before checking whether a segment matches literally
  one of ``.``, the empty string, or ``..`` in case there's some sneaky way
  someone might tunnel those strings via UTF-8 that don't match the literals
  before decoded.
Documentation
-------------
- Added a "What Makes Pyramid Unique" section to the Introduction narrative
  chapter.
1.2a6 (2011-09-06)
==================
Bug Fixes
---------
- AuthTktAuthenticationPolicy with a ``reissue_time`` interfered with logout.
  See https://github.com/Pylons/pyramid/issues/262.
Internal
--------
- Internalize code previously depended upon as imports from the
  ``paste.auth`` module (futureproof).
- Replaced use of ``paste.urlparser.StaticURLParser`` with a derivative of
  Chris Rossi's "happy" static file serving code (futureproof).
- Fixed test suite; on some systems tests would fail due to indeterminate
  test run ordering and a double-push-single-pop of a shared test variable.
Behavior Differences
--------------------
- An ETag header is no longer set when serving a static file.  A
  Last-Modified header is set instead.
- Static file serving no longer supports the ``wsgi.file_wrapper`` extension.
- Instead of returning a ``403 Forbidden`` error when a static file is served
  that cannot be accessed by the Pyramid process' user due to file
  permissions, an IOError (or similar) will be raised.
Scaffolds
---------
- All scaffolds now send the ``cache_max_age`` parameter to the
  ``add_static_view`` method.
1.2a5 (2011-09-04)
==================
Bug Fixes
---------
- The ``route_prefix`` of a configurator was not properly taken into account
  when registering routes in certain circumstances.  See
  https://github.com/Pylons/pyramid/issues/260
Dependencies
------------
- The ``zope.configuration`` package is no longer a dependency.
1.2a4 (2011-09-02)
==================
Features
--------
- Support an ``onerror`` keyword argument to
  ``pyramid.config.Configurator.scan()``.  This onerror keyword argument is
  passed to ``venusian.Scanner.scan()`` to influence error behavior when
  an exception is raised during scanning.
- The ``request_method`` predicate argument to
  ``pyramid.config.Configurator.add_view`` and
  ``pyramid.config.Configurator.add_route`` is now permitted to be a tuple of
  HTTP method names.  Previously it was restricted to being a string
  representing a single HTTP method name.
- Undeprecated ``pyramid.traversal.find_model``,
  ``pyramid.traversal.model_path``, ``pyramid.traversal.model_path_tuple``,
  and ``pyramid.url.model_url``, which were all deprecated in Pyramid 1.0.
  There's just not much cost to keeping them around forever as aliases to
  their renamed ``resource_*`` prefixed functions.
- Undeprecated ``pyramid.view.bfg_view``, which was deprecated in Pyramid
  1.0.  This is a low-cost alias to ``pyramid.view.view_config`` which we'll
  just keep around forever.
Dependencies
------------
- Pyramid now requires Venusian 1.0a1 or better to support the ``onerror``
  keyword argument to ``pyramid.config.Configurator.scan``.
1.2a3 (2011-08-29)
==================
Bug Fixes
---------
- Pyramid did not properly generate static URLs using
  ``pyramid.url.static_url`` when passed a caller-package relative path due
  to a refactoring done in 1.2a1.
- The ``settings`` object emitted a deprecation warning any time
  ``__getattr__`` was called upon it.  However, there are legitimate
  situations in which ``__getattr__`` is called on arbitrary objects
  (e.g. ``hasattr``).  Now, the ``settings`` object only emits the warning
  upon successful lookup.
Internal
--------
- Use ``config.with_package`` in view_config decorator rather than
  manufacturing a new renderer helper (cleanup).
1.2a2 (2011-08-27)
==================
Bug Fixes
---------
- When a ``renderers=`` argument is not specified to the Configurator
  constructor, eagerly register and commit the default renderer set.  This
  permits the overriding of the default renderers, which was broken in 1.2a1
  without a commit directly after Configurator construction.
- Mako rendering exceptions had the wrong value for an error message.
- An include could not set a root factory successfully because the
  Configurator constructor unconditionally registered one that would be
  treated as if it were "the word of the user".
Features
--------
- A session factory can now be passed in using the dotted name syntax.
1.2a1 (2011-08-24)
==================
Features
--------
- The ``[pshell]`` section in an ini configuration file now treats a
  ``setup`` key as a dotted name that points to a callable that is passed the
  bootstrap environment.  It can mutate the environment as necessary for
  great justice.
- A new configuration setting named ``pyramid.includes`` is now available.
  It is described in the "Environment Variables and ``.ini`` Files Settings"
  narrative documentation chapter.
- Added a ``route_prefix`` argument to the
  ``pyramid.config.Configurator.include`` method.  This argument allows you
  to compose URL dispatch applications together.  See the section entitled
  "Using a Route Prefix to Compose Applications" in the "URL Dispatch"
  narrative documentation chapter.
- Added a ``pyramid.security.NO_PERMISSION_REQUIRED`` constant for use in
  ``permission=`` statements to view configuration.  This constant has a
  value of the string ``__no_permission_required__``.  This string value was
  previously referred to in documentation; now the documentation uses the
  constant.
- Added a decorator-based way to configure a response adapter:
  ``pyramid.response.response_adapter``.  This decorator has the same use as
  ``pyramid.config.Configurator.add_response_adapter`` but it's declarative.
- The ``pyramid.events.BeforeRender`` event now has an attribute named
  ``rendering_val``.  This can be used to introspect the value returned by a
  view in a BeforeRender subscriber.
- New configurator directive: ``pyramid.config.Configurator.add_tween``.
  This directive adds a "tween".  A "tween" is used to wrap the Pyramid
  router's primary request handling function.  This is a feature may be used
  by Pyramid framework extensions, to provide, for example, view timing
  support and as a convenient place to hang bookkeeping code.
  Tweens are further described in the narrative docs section in the Hooks
  chapter, named "Registering Tweens".
- New paster command ``paster ptweens``, which prints the current "tween"
  configuration for an application.  See the section entitled "Displaying
  Tweens" in the Command-Line Pyramid chapter of the narrative documentation
  for more info.
- The Pyramid debug logger now uses the standard logging configuration
  (usually set up by Paste as part of startup).  This means that output from
  e.g. ``debug_notfound``, ``debug_authorization``, etc. will go to the
  normal logging channels.  The logger name of the debug logger will be the
  package name of the *caller* of the Configurator's constructor.
- A new attribute is available on request objects: ``exc_info``.  Its value
  will be ``None`` until an exception is caught by the Pyramid router, after
  which it will be the result of ``sys.exc_info()``.
- ``pyramid.testing.DummyRequest`` now implements the
  ``add_finished_callback`` and ``add_response_callback`` methods.
- New methods of the ``pyramid.config.Configurator`` class:
  ``set_authentication_policy`` and ``set_authorization_policy``.  These are
  meant to be consumed mostly by add-on authors.
- New Configurator method: ``set_root_factory``.
- Pyramid no longer eagerly commits some default configuration statements at
  Configurator construction time, which permits values passed in as
  constructor arguments (e.g. ``authentication_policy`` and
  ``authorization_policy``) to override the same settings obtained via an
  "include".
- Better Mako rendering exceptions via
  ``pyramid.mako_templating.MakoRenderingException``
- New request methods: ``current_route_url``, ``current_route_path``, and
  ``static_path``.
- New functions in ``pyramid.url``: ``current_route_path`` and
  ``static_path``.
- The ``pyramid.request.Request.static_url`` API (and its brethren
  ``pyramid.request.Request.static_path``, ``pyramid.url.static_url``, and
  ``pyramid.url.static_path``) now accept an asbolute filename as a "path"
  argument.  This will generate a URL to an asset as long as the filename is
  in a directory which was previously registered as a static view.
  Previously, trying to generate a URL to an asset using an absolute file
  path would raise a ValueError.
- The ``RemoteUserAuthenticationPolicy ``, ``AuthTktAuthenticationPolicy``,
  and ``SessionAuthenticationPolicy`` constructors now accept an additional
  keyword argument named ``debug``.  By default, this keyword argument is
  ``False``.  When it is ``True``, debug information will be sent to the
  Pyramid debug logger (usually on stderr) when the ``authenticated_userid``
  or ``effective_principals`` method is called on any of these policies.  The
  output produced can be useful when trying to diagnose
  authentication-related problems.
- New view predicate: ``match_param``.  Example: a view added via
  ``config.add_view(aview, match_param='action=edit')`` will be called only
  when the ``request.matchdict`` has a value inside it named ``action`` with
  a value of ``edit``.
Internal
--------
- The Pyramid "exception view" machinery is now implemented as a "tween"
  (``pyramid.tweens.excview_tween_factory``).
- WSGIHTTPException (HTTPFound, HTTPNotFound, etc) now has a new API named
  "prepare" which renders the body and content type when it is provided with
  a WSGI environ.  Required for debug toolbar.
- Once ``__call__`` or ``prepare`` is called on a WSGIHTTPException, the body
  will be set, and subsequent calls to ``__call__`` will always return the
  same body.  Delete the body attribute to rerender the exception body.
- Previously the ``pyramid.events.BeforeRender`` event *wrapped* a dictionary
  (it addressed it as its ``_system`` attribute).  Now it *is* a dictionary
  (it inherits from ``dict``), and it's the value that is passed to templates
  as a top-level dictionary.
- The ``route_url``, ``route_path``, ``resource_url``, ``static_url``, and
  ``current_route_url`` functions in the ``pyramid.url`` package now delegate
  to a method on the request they've been passed, instead of the other way
  around.  The pyramid.request.Request object now inherits from a mixin named
  pyramid.url.URLMethodsMixin to make this possible, and all url/path
  generation logic is embedded in this mixin.
- Refactor ``pyramid.config`` into a package.
- Removed the ``_set_security_policies`` method of the Configurator.
- Moved the ``StaticURLInfo`` class from ``pyramid.static`` to
  ``pyramid.config.views``.
- Move the ``Settings`` class from ``pyramid.settings`` to
  ``pyramid.config.settings``.
- Move the ``OverrideProvider``, ``PackageOverrides``, ``DirectoryOverride``,
  and ``FileOverride`` classes from ``pyramid.asset`` to
  ``pyramid.config.assets``.
Deprecations
------------
- All Pyramid-related deployment settings (e.g. ``debug_all``,
  ``debug_notfound``) are now meant to be prefixed with the prefix
  ``pyramid.``.  For example: ``debug_all`` -> ``pyramid.debug_all``.  The
  old non-prefixed settings will continue to work indefinitely but supplying
  them may eventually print a deprecation warning.  All scaffolds and
  tutorials have been changed to use prefixed settings.
- The ``settings`` dictionary now raises a deprecation warning when you
  attempt to access its values via ``__getattr__`` instead of
  via ``__getitem__``.
Backwards Incompatibilities
---------------------------
- If a string is passed as the ``debug_logger`` parameter to a Configurator,
  that string is considered to be the name of a global Python logger rather
  than a dotted name to an instance of a logger.
- The ``pyramid.config.Configurator.include`` method now accepts only a
  single ``callable`` argument (a sequence of callables used to be
  permitted).  If you are passing more than one ``callable`` to
  ``pyramid.config.Configurator.include``, it will break.  You now must now
  instead make a separate call to the method for each callable.  This change
  was introduced to support the ``route_prefix`` feature of include.
- It may be necessary to more strictly order configuration route and view
  statements when using an "autocommitting" Configurator.  In the past, it
  was possible to add a view which named a route name before adding a route
  with that name when you used an autocommitting configurator.  For example::
    config = Configurator(autocommit=True)
    config.add_view('my.pkg.someview', route_name='foo')
    config.add_route('foo', '/foo')
  The above will raise an exception when the view attempts to add itself.
  Now you must add the route before adding the view::
    config = Configurator(autocommit=True)
    config.add_route('foo', '/foo')
    config.add_view('my.pkg.someview', route_name='foo')
  This won't effect "normal" users, only people who have legacy BFG codebases
  that used an autommitting configurator and possibly tests that use the
  configurator API (the configurator returned by ``pyramid.testing.setUp`` is
  an autocommitting configurator).  The right way to get around this is to
  use a non-autocommitting configurator (the default), which does not have
  these directive ordering requirements.
- The ``pyramid.config.Configurator.add_route`` directive no longer returns a
  route object.  This change was required to make route vs. view
  configuration processing work properly.
Documentation
-------------
- Narrative and API documentation which used the ``route_url``,
  ``route_path``, ``resource_url``, ``static_url``, and ``current_route_url``
  functions in the ``pyramid.url`` package have now been changed to use
  eponymous methods of the request instead.
- Added a section entitled "Using a Route Prefix to Compose Applications" to
  the "URL Dispatch" narrative documentation chapter.
- Added a new module to the API docs: ``pyramid.tweens``.
- Added a "Registering Tweens" section to the "Hooks" narrative chapter.
- Added a "Displaying Tweens" section to the "Command-Line Pyramid" narrative
  chapter.
- Added documentation for the ``pyramid.tweens`` and ``pyramid.includes``
  configuration settings to the "Environment Variables and ``.ini`` Files
  Settings" chapter.
- Added a Logging chapter to the narrative docs (based on the Pylons logging
  docs, thanks Phil).
- Added a Paste chapter to the narrative docs (moved content from the Project
  chapter).
- Added the ``pyramid.interfaces.IDict`` interface representing the methods
  of a dictionary, for documentation purposes only (IMultiDict and
  IBeforeRender inherit from it).
- All tutorials now use - The ``route_url``, ``route_path``,
  ``resource_url``, ``static_url``, and ``current_route_url`` methods of the
  request rather than the function variants imported from ``pyramid.url``.
- The ZODB wiki tutorial now uses the ``pyramid_zodbconn`` package rather
  than the ``repoze.zodbconn`` package to provide ZODB integration.
Dependency Changes
------------------
- Pyramid now relies on PasteScript >= 1.7.4.  This version contains a
  feature important for allowing flexible logging configuration.
Scaffolds
----------
- All scaffolds now use the ``pyramid_tm`` package rather than the
  ``repoze.tm2`` middleware to manage transaction management.
- The ZODB scaffold now uses the ``pyramid_zodbconn`` package rather than the
  ``repoze.zodbconn`` package to provide ZODB integration.
- All scaffolds now use the ``pyramid_debugtoolbar`` package rather than the
  ``WebError`` package to provide interactive debugging features.
- Projects created via a scaffold no longer depend on the ``WebError``
  package at all; configuration in the ``production.ini`` file which used to
  require its ``error_catcher`` middleware has been removed.  Configuring
  error catching / email sending is now the domain of the ``pyramid_exclog``
  package (see http://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
Bug Fixes
---------
- Fixed an issue with the default renderer not working at certain times.  See
  https://github.com/Pylons/pyramid/issues/249
1.1 (2011-07-22)
================
docs/glossary.rst
@@ -926,7 +926,7 @@
     database information.  :mod:`pyramid_debugtoolbar` is configured into
     the ``development.ini`` of all applications which use a Pyramid
     :term:`scaffold`.  For more information, see
     https://docs.pylonsproject.org/projects/pyramid_debugtoolbar/dev/ .
     http://docs.pylonsproject.org/projects/pyramid_debugtoolbar/dev/ .
   scaffold
     A project template that helps users get started writing a Pyramid
@@ -939,5 +939,5 @@
     used in production applications, because the logger can be configured to
     log to a file, to UNIX syslog, to the Windows Event Log, or even to
     email. See its `documentation
     <https://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
     <http://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
docs/narr/introduction.rst
@@ -219,7 +219,7 @@
easily send email, let you use the Jinja2 templating system, let you use
XML-RPC or JSON-RPC, let you integrate with jQuery Mobile, etc.
Examples: https://docs.pylonsproject.org/docs/pyramid.html#pyramid-add-on-documentation
Examples: http://docs.pylonsproject.org/docs/pyramid.html#pyramid-add-on-documentation
Class-based and function-based views
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -842,7 +842,7 @@
comprehensive.
Example: The rest of this documentation and the cookbook at
https://docs.pylonsproject.org/projects/pyramid_cookbook/dev/ .
http://docs.pylonsproject.org/projects/pyramid_cookbook/dev/ .
.. index::
   single: Pylons Project
docs/narr/logging.rst
@@ -291,7 +291,7 @@
To log (or email) exceptions generated by your :app:`Pyramid` application,
use the :term:`pyramid_exclog` package.  Details about its configuration are
in its `documentation
<https://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
<http://docs.pylonsproject.org/projects/pyramid_exclog/dev/>`_.
Request Logging with Paste's TransLogger 
----------------------------------------
docs/whatsnew-1.2.rst
@@ -63,7 +63,7 @@
  package at all; configuration in the ``production.ini`` file which used to
  require its ``error_catcher`` middleware has been removed.  Configuring
  error catching / email sending is now the domain of the ``pyramid_exclog``
  package (see https://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
  package (see http://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
- All scaffolds now send the ``cache_max_age`` parameter to the
  ``add_static_view`` method.