Michael Merickel
2017-07-14 29615272e0f5668373f5e1eca56d3209cfac8ffa
docs/whatsnew-1.8.rst
@@ -7,6 +7,134 @@
:app:`Pyramid` 1.8, as well as software dependency changes and notable
documentation additions.
Bug Fix Releases
----------------
Pyramid 1.8 was released on 2017-01-21.
The following bug fix releases were made since then. Bug fix releases also
include documentation improvements and other minor feature changes.
- :ref:`changes_1.8.1`
- :ref:`changes_1.8.2`
- :ref:`changes_1.8.3`
- :ref:`changes_1.8.4`
- :ref:`changes_1.8.5`
Major Feature Additions
-----------------------
- Added :meth:`pyramid.config.Configurator.add_exception_view` and the
  :func:`pyramid.view.exception_view_config` decorator. It is now possible
  using these methods or via the new ``exception_only=True`` option to
  :meth:`pyramid.config.Configurator.add_view` to add a view which will only
  be matched when handling an exception. Previously, any exception views were
  also registered for a traversal context that inherited from the exception
  class which prevented any exception-only optimizations.
  See https://github.com/Pylons/pyramid/pull/2660
- ``pserve --reload`` now uses the
  `hupper <https://docs.pylonsproject.org/projects/hupper/en/latest/>`_
  library to monitor file changes. This comes with many improvements:
  - If the `watchdog <http://pythonhosted.org/watchdog/>`_ package is
    installed then monitoring will be done using inotify instead of
    cpu and disk-intensive polling.
  - The monitor is now a separate process that will not crash and starts up
    before any of your code.
  - The monitor will not restart the process after a crash until a file is
    saved.
  - The monitor works on windows.
  - You can now trigger a reload manually from a pyramid view or any other
    code via ``hupper.get_reloader().trigger_reload()``. Kind of neat.
  - You can trigger a reload by issuing a ``SIGHUP`` to the monitor process.
  See https://github.com/Pylons/pyramid/pull/2805
Minor Feature Additions
-----------------------
- Python 3.6 compatibility.
  https://github.com/Pylons/pyramid/issues/2835
- The ``_get_credentials`` private method of
  :class:`pyramid.authentication.BasicAuthAuthenticationPolicy`
  has been extracted into standalone function
  :func:`pyramid.authentication.extract_http_basic_credentials`, this function
  extracts HTTP Basic credentials from a ``request`` object, and returns them
  as a named tuple. See https://github.com/Pylons/pyramid/pull/2662
- Pyramid 1.4 silently dropped a feature of the configurator that has been
  restored. It's again possible for action discriminators to conflict across
  different action orders.
  See https://github.com/Pylons/pyramid/pull/2757
- :func:`pyramid.paster.bootstrap` and its sibling
  :func:`pyramid.scripting.prepare` can now be used as context managers to
  automatically invoke the ``closer`` and pop threadlocals off of the stack
  to prevent memory leaks. See https://github.com/Pylons/pyramid/pull/2760
- Added the ``exception_only`` boolean to
  :class:`pyramid.interfaces.IViewDeriverInfo` which can be used by view
  derivers to determine if they are wrapping a view which only handles
  exceptions. This means that it is no longer necessary to perform request-time
  checks for ``request.exception`` to determine if the view is handling an
  exception - the pipeline can be optimized at config-time.
  See https://github.com/Pylons/pyramid/pull/2660
- ``pcreate`` learned about ``--package-name`` to allow you to create a new
  project in an existing folder with a different package name than the project
  name. See https://github.com/Pylons/pyramid/pull/2783
- ``pserve`` should now work with ``gevent`` and other workers that need
  to monkeypatch the process, assuming the server and / or the app do so
  as soon as possible before importing the rest of pyramid.
  See https://github.com/Pylons/pyramid/pull/2797
- Pyramid no longer copies the settings object passed to the
  ``pyramid.config.Configurator(settings=)``. The original ``dict`` is kept.
  See https://github.com/Pylons/pyramid/pull/2823
- The csrf trusted origins setting may now be a whitespace-separated list of
  domains. Previously only a python list was allowed. Also, it can now be set
  using the ``PYRAMID_CSRF_TRUSTED_ORIGINS`` environment variable similar to
  other settings. See https://github.com/Pylons/pyramid/pull/2823
- A new ``[pserve]`` section is supported in your config files with a
  ``watch_files`` key that can configure ``pserve --reload`` to monitor custom
  file paths. See https://github.com/Pylons/pyramid/pull/2827
- Allow streaming responses to be made from subclasses of
  :class:`pyramid.httpexceptions.HTTPException`. Previously the response would
  be unrolled while testing for a body, making it impossible to stream
  a response.
  See https://github.com/Pylons/pyramid/pull/2863
- Update starter, alchemy and zodb scaffolds to support IPv6 by using the
  new ``listen`` directives in waitress.
  See https://github.com/Pylons/pyramid/pull/2853
- All p* scripts now use argparse instead of optparse. This improves their
  ``--help`` output as well as enabling nicer documentation of their options.
  See https://github.com/Pylons/pyramid/pull/2864
- Added an ``override`` option to
  :meth:`pyramid.config.Configurator.add_translation_dirs` to allow
  later calls to place translation directories at a higher priority then
  earlier calls. See https://github.com/Pylons/pyramid/pull/2902
- Added a new ``callback`` option to
  :meth:`pyramid.config.Configurator.set_default_csrf_options`` which
  can be used to determine per-request whether CSRF checking should be enabled
  to allow for a mix authentication methods. Only cookie-based methods
  generally require CSRF checking.
  See https://github.com/Pylons/pyramid/pull/2778
Backwards Incompatibilities
---------------------------
@@ -48,105 +176,6 @@
  ``pyramid.static.static_view``. This argument was shipped accidentally
  in Pyramid 1.6. See https://github.com/Pylons/pyramid/pull/2681
Feature Additions
-----------------
- Python 3.6 compatibility.
  https://github.com/Pylons/pyramid/issues/2835
- ``pcreate`` learned about --package-name to allow you to create a new project
  in an existing folder with a different package name than the project name.
  See https://github.com/Pylons/pyramid/pull/2783
- The ``_get_credentials`` private method of
  :class:`pyramid.authentication.BasicAuthAuthenticationPolicy`
  has been extracted into standalone function
  :func:`pyramid.authentication.extract_http_basic_credentials`, this function
  extracts HTTP Basic credentials from a ``request`` object, and returns them
  as a named tuple. See https://github.com/Pylons/pyramid/pull/2662
- Pyramid 1.4 silently dropped a feature of the configurator that has been
  restored. It's again possible for action discriminators to conflict across
  different action orders.
  See https://github.com/Pylons/pyramid/pull/2757
- :func:`pyramid.paster.bootstrap` and its sibling
  :func:`pyramid.scripting.prepare` can now be used as context managers to
  automatically invoke the ``closer`` and pop threadlocals off of the stack
  to prevent memory leaks. See https://github.com/Pylons/pyramid/pull/2760
- Added :meth:`pyramid.config.Configurator.add_exception_view` and the
  :func:`pyramid.view.exception_view_config` decorator. It is now possible
  using these methods or via the new ``exception_only=True`` option to
  :meth:`pyramid.config.Configurator.add_view` to add a view which will only
  be matched when handling an exception. Previously, any exception views were
  also registered for a traversal context that inherited from the exception
  class which prevented any exception-only optimizations.
  See https://github.com/Pylons/pyramid/pull/2660
- Added the ``exception_only`` boolean to
  :class:`pyramid.interfaces.IViewDeriverInfo` which can be used by view
  derivers to determine if they are wrapping a view which only handles
  exceptions. This means that it is no longer necessary to perform request-time
  checks for ``request.exception`` to determine if the view is handling an
  exception - the pipeline can be optimized at config-time.
  See https://github.com/Pylons/pyramid/pull/2660
- ``pserve`` should now work with ``gevent`` and other workers that need
  to monkeypatch the process, assuming the server and / or the app do so
  as soon as possible before importing the rest of pyramid.
  See https://github.com/Pylons/pyramid/pull/2797
- Pyramid no longer copies the settings object passed to the
  ``pyramid.config.Configurator(settings=)``. The original ``dict`` is kept.
  See https://github.com/Pylons/pyramid/pull/2823
- The csrf trusted origins setting may now be a whitespace-separated list of
  domains. Previously only a python list was allowed. Also, it can now be set
  using the ``PYRAMID_CSRF_TRUSTED_ORIGINS`` environment variable similar to
  other settings. See https://github.com/Pylons/pyramid/pull/2823
- ``pserve --reload`` now uses the
  `hupper <http://docs.pylonsproject.org/projects/hupper/en/latest/>`_
  library to monitor file changes. This comes with many improvements:
  - If the `watchdog <http://pythonhosted.org/watchdog/>`_ package is
    installed then monitoring will be done using inotify instead of
    cpu and disk-intensive polling.
  - The monitor is now a separate process that will not crash and starts up
    before any of your code.
  - The monitor will not restart the process after a crash until a file is
    saved.
  - The monitor works on windows.
  - You can now trigger a reload manually from a pyramid view or any other
    code via ``hupper.get_reloader().trigger_reload()``. Kind of neat.
  - You can trigger a reload by issuing a ``SIGHUP`` to the monitor process.
  See https://github.com/Pylons/pyramid/pull/2805
- A new ``[pserve]`` section is supported in your config files with a
  ``watch_files`` key that can configure ``pserve --reload`` to monitor custom
  file paths. See https://github.com/Pylons/pyramid/pull/2827
- Allow streaming responses to be made from subclasses of
  :class:`pyramid.httpexceptions.HTTPException`. Previously the response would
  be unrolled while testing for a body, making it impossible to stream
  a response.
  See https://github.com/Pylons/pyramid/pull/2863
- Update starter, alchemy and zodb scaffolds to support IPv6 by using the
  new ``listen`` directives in waitress.
  See https://github.com/Pylons/pyramid/pull/2853
- All p* scripts now use argparse instead of optparse. This improves their
  ``--help`` output as well as enabling nicer documentation of their options.
  See https://github.com/Pylons/pyramid/pull/2864
Deprecations
------------
@@ -180,11 +209,11 @@
Documentation Enhancements
--------------------------
- Update Typographical Conventions and add a Style Guide.
- Update Typographical Conventions.
  https://github.com/Pylons/pyramid/pull/2838
- Add `pyramid_nacl_session
  <http://docs.pylonsproject.org/projects/pyramid-nacl-session/en/latest/>`_
  <https://docs.pylonsproject.org/projects/pyramid-nacl-session/en/latest/>`_
  to session factories. See https://github.com/Pylons/pyramid/issues/2791
- Update HACKING.txt from stale branch that was never merged to master.
@@ -209,3 +238,11 @@
  See https://github.com/Pylons/pyramid/pull/2881 and
  https://github.com/Pylons/pyramid/pull/2883.
- Quick Tour, Quick Tutorial, and most files throughout the documentation have
  been updated to use cookiecutters instead of pcreate and scaffolds.
  See https://github.com/Pylons/pyramid/pull/2888 and
  https://github.com/Pylons/pyramid/pull/2889
- Updated the ``mod_wsgi`` tutorial to use cookiecutters and Apache 2.4+.
  See https://github.com/Pylons/pyramid/pull/2901