1.3a1 (2011-12-09)
==================

Features
--------

- Python 3.2 compatibility.

- New ``pyramid.compat`` module and API documentation which provides Python
  2/3 straddling support for Pyramid add-ons and development environments.

- A ``mako.directories`` setting is no longer required to use Mako templates
  Rationale: Mako template renderers can be specified using an absolute asset
  spec.  An entire application can be written with such asset specs,
  requiring no ordered lookup path.

- ``bpython`` interpreter compatibility in ``pshell``.  See the "Command-Line
  Pyramid" narrative docs chapter for more information.

- Added ``get_appsettings`` API function to the ``pyramid.paster`` module.
  This function returns the settings defined within an ``[app:...]`` section
  in a PasteDeploy ini file.

- Added ``setup_logging`` API function to the ``pyramid.paster`` module.
  This function sets up Python logging according to the logging configuration
  in a PasteDeploy ini file.

- Configuration conflict reporting is reported in a more understandable way
  ("Line 11 in file..." vs. a repr of a tuple of similar info).

- A configuration introspection system was added; see the narrative
  documentation chapter entitled "Pyramid Configuration Introspection" for
  more information.  New APIs: ``pyramid.registry.Introspectable``,
  ``pyramid.config.Configurator.introspector``,
  ``pyramid.config.Configurator.introspectable``,
  ``pyramid.registry.Registry.introspector``.

- Allow extra keyword arguments to be passed to the
  ``pyramid.config.Configurator.action`` method.

- New APIs: ``pyramid.path.AssetResolver`` and
  ``pyramid.path.DottedNameResolver``.  The former can be used to resolve
  asset specifications, the latter can be used to resolve dotted names to
  modules or packages.

Bug Fixes
---------

- Make test suite pass on 32-bit systems; closes #286.  closes #306.
  See also https://github.com/Pylons/pyramid/issues/286

- The ``pryamid.view.view_config`` decorator did not accept a ``match_params``
  predicate argument.  See https://github.com/Pylons/pyramid/pull/308

- The AuthTktCookieHelper could potentially generate Unicode headers
  inappropriately when the ``tokens`` argument to remember was used.  See 
  https://github.com/Pylons/pyramid/pull/314.

- The AuthTktAuthenticationPolicy did not use a timing-attack-aware string
  comparator.  See https://github.com/Pylons/pyramid/pull/320 for more info.

- The DummySession in ``pyramid.testing`` now generates a new CSRF token if
  one doesn't yet exist.

- ``request.static_url`` now generates URL-quoted URLs when fed a ``path``
  argument which contains characters that are unsuitable for URLs.  See
  https://github.com/Pylons/pyramid/issues/349 for more info.

- Prevent a scaffold rendering from being named ``site`` (conflicts with
  Python internal site.py).

- Support for using instances as targets of the ``pyramid.wsgi.wsgiapp`` and
  ``pryramid.wsgi.wsgiapp2`` functions.
  See https://github.com/Pylons/pyramid/pull/370 for more info.

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

- Pyramid no longer runs on Python 2.5 (which includes the most recent
  release of Jython and the Python 2.5 version of GAE as of this writing).

- The ``paster`` command is no longer the documented way to create projects,
  start the server, or run debugging commands.  To create projects from
  scaffolds, ``paster create`` is replaced by the ``pcreate`` console script.
  To serve up a project, ``paster serve`` is replaced by the ``pserve``
  console script.  New console scripts named ``pshell``, ``pviews``,
  ``proutes``, and ``ptweens`` do what their ``paster <commandname>``
  equivalents used to do.  Rationale: the Paste and PasteScript packages do
  not run under Python 3.

- The default WSGI server run as the result of ``pserve`` from newly rendered
  scaffolding is now the ``wsgiref`` WSGI server instead of the
  ``paste.httpserver`` server.  Rationale: Rationale: the Paste and
  PasteScript packages do not run under Python 3.

- The ``pshell`` command (see "paster pshell") no longer accepts a
  ``--disable-ipython`` command-line argument.  Instead, it accepts a ``-p``
  or ``--python-shell`` argument, which can be any of the values ``python``,
  ``ipython`` or ``bpython``.

- Removed the ``pyramid.renderers.renderer_from_name`` function.  It has been
  deprecated since Pyramid 1.0, and was never an API.

- To use ZCML with versions of Pyramid >= 1.3, you will need ``pyramid_zcml``
  version >= 0.8 and ``zope.configuration`` version >= 3.8.0.  The
  ``pyramid_zcml`` package version 0.8 is backwards compatible all the way to
  Pyramid 1.0, so you won't be warned if you have older versions installed
  and upgrade Pyramid "in-place"; it may simply break instead.

Dependencies
------------

- Pyramid no longer depends on the ``zope.component`` package, except as a
  testing dependency.

- Pyramid now depends on a zope.interface>=3.8.0, WebOb>=1.2dev,
  repoze.lru>=0.4, zope.deprecation>=3.5.0, translationstring>=0.4 (for
  Python 3 compatibility purposes).  It also, as a testing dependency,
  depends on WebTest>=1.3.1 for the same reason.

- Pyramid no longer depends on the Paste or PasteScript packages.

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

- The SQLAlchemy Wiki tutorial has been updated.  It now uses
  ``@view_config`` decorators and an explicit database population script.

- Minor updates to the ZODB Wiki tutorial.

- A narrative documentation chapter named "Extending Pyramid Configuration"
  was added; it describes how to add a new directive, and how use the
  ``pyramid.config.Configurator.action`` method within custom directives.  It
  also describes how to add introspectable objects.

- A narrative documentation chapter named "Pyramid Configuration
  Introspection" was added.  It describes how to query the introspection
  system.

Scaffolds
---------

- Rendered scaffolds have now been changed to be more relocatable (fewer
  mentions of the package name within files in the package).

- The ``routesalchemy`` scaffold has been renamed ``alchemy``, replacing the
  older (traversal-based) ``alchemy`` scaffold (which has been retired).

- The ``starter`` scaffold now uses URL dispatch by default.

