0.8.0 ===== * For HTTP POSTs, map JSON request bodies to controller keyword arguments. * Improve argspec detection and leniency for wrapped controllers. * When path arguments are incorrect for RestController, return HTTP 404, not 400. * When detecting non-content for HTTP 204, properly catch UnicodeDecodeError. * Fix a routing bug for generic subcontrollers. * Fix a bug in generic function handling when context locals are disabled. * Fix a bug that mixes up argument order for generic functions. * Remove `assert` for flow control; it can be optimized away with `python -O`. 0.7.0 ===== * Fixed an edge case in RestController routing which should have returned an HTTP 400 but was instead raising an exception (and thus, HTTP 500). * Fixed an incorrect root logger configuration for quickstarted pecan projects. * Added `pecan.state.arguments`, a new feature for inspecting controller call arguments. * Fixed an infinite recursion error in PecanHook application. Subclassing both `rest.RestController` and `hooks.HookController` resulted in an infinite recursion error in hook application (which prevented applications from starting). * Pecan's tests are now included in its source distribution. 0.6.1 ===== * Fixed a bug which causes pecan to mistakenly return HTTP 204 for non-empty response bodies. 0.6.0 ===== * Added support for disabling the `pecan.request` and `pecan.response` threadlocals at the WSGI application level in favor of explicit reference passing. For more information, see :ref:`contextlocals`. * Added better support for hook composition via subclassing and mixins. For more information, see :ref:`attaching_hooks`. * Added support for specifying custom request and response implementations at the WSGI application level for people who want to extend the functionality provided by the base classes in `webob`. * Pecan controllers may now return an explicit `webob.Response` instance to short-circuit Pecan's template rendering and serialization. * For generic methods that return HTTP 405, pecan now generates an `Allow` header to communicate acceptable methods to the client. * Fixed a bug in adherence to RFC2616: if an exposed method returns no response body (or namespace), pecan will now enforce an HTTP 204 response (instead of HTTP 200). * Fixed a bug in adherence to RFC2616: when pecan responds with HTTP 204 or HTTP 304, the `Content-Type` header is automatically stripped (because these types of HTTP responses do not contain body content). * Fixed a bug: now when clients request JSON via an `Accept` header, `webob` HTTP exceptions are serialized as JSON, not their native HTML representation. * Fixed a bug that broke applications which specified `default_renderer = json`. 0.5.0 ===== * This release adds formal support for pypy. * Added colored request logging to the `pecan serve` command. * Added a scaffold for easily generating a basic REST API. * Added the ability to pass arbitrary keyword arguments to `pecan.testing.load_test_app`. * Fixed a recursion-related bug in the error document middleware. * Fixed a bug in the `gunicorn_pecan` command that caused `threading.local` data to leak between eventlet/gevent green threads. * Improved documentation through fixes and narrative tutorials for sample pecan applications. 0.4.5 ===== * Fixed a trailing slash bug for `RestController`s that have a `_lookup` method. * Cleaned up the WSGI app reference from the threadlocal state on every request (to avoid potential memory leaks, especially when testing). * Improved pecan documentation and corrected intersphinx references. * pecan supports Python 3.4. 0.4.4 ===== * Removed memoization of certain controller attributes, which can lead to a memory leak in dynamic controller lookups. 0.4.3 ===== * Fixed several bugs for RestController. * Fixed a bug in security handling for generic controllers. * Resolved a bug in `_default` handlers used in `RestController`. * Persist `pecan.request.context` across internal redirects. 0.4.2 ===== * Remove a routing optimization that breaks the WSME pecan plugin. 0.4.1 ===== * Moved the project to `StackForge infrastructure `_, including Gerrit code review, Jenkins continuous integration, and GitHub mirroring. * Added a pecan plugin for the popular `uwsgi server `_. * Replaced the ``simplegeneric`` dependency with the new ``functools.singledispatch`` function in preparation for Python 3.4 support. * Optimized pecan's core dispatch routing for notably faster response times. 0.3.2 ===== * Made some changes to simplify how ``pecan.conf.app`` is passed to new apps. * Fixed a routing bug for certain ``_lookup`` controller configurations. * Improved documentation for handling file uploads. * Deprecated the ``pecan.conf.requestviewer`` configuration option. 0.3.1 ===== * ``on_error`` hooks can now return a Pecan Response objects. * Minor documentation and release tooling updates. 0.3.0 ===== * Pecan now supports Python 2.6, 2.7, 3.2, and 3.3. 0.2.4 ===== * Add support for ``_lookup`` methods as a fallback in RestController. * A variety of improvements to project documentation. 0.2.3 ===== * Add a variety of optimizations to ``pecan.core`` that improve request handling time by approximately 30% for simple object dispatch routing. * Store exceptions raised by ``abort`` in the WSGI environ so they can be accessed later in the request handling (e.g., by other middleware or pecan hooks). * Make TransactionHook more robust so that it isn't as susceptible to failure when exceptions occur in *other* pecan hooks within a request. * Rearrange quickstart verbiage so users don't miss a necessary step. 0.2.2 ===== * Unobfuscate syntax highlighting JavaScript for debian packaging. * Extract the scaffold-building tests into tox. * Add support for specifying a pecan configuration file via the ``PECAN_CONFIG`` environment variable. * Fix a bug in ``DELETE`` methods in two (or more) nested ``RestControllers``. * Add documentation for returning specific HTTP status codes. 0.2.1 ===== * Include a license, readme, and ``requirements.txt`` in distributions. * Improve inspection with ``dir()`` for ``pecan.request`` and ``pecan.response`` * Fix a bug which prevented pecan applications from being mounted at WSGI virtual paths. 0.2.0 ===== * Update base project scaffolding tests to be more repeatable. * Add an application-level configuration option to disable content-type guessing by URL * Fix the wrong test dependency on Jinja, it's Jinja2. * Fix a routing-related bug in ``RestController``. Fixes #156 * Add an explicit ``CONTRIBUTING.rst`` document. * Improve visibility of deployment-related docs. * Add support for a ``gunicorn_pecan`` console script. * Remove and annotate a few unused (and py26 alternative) imports. * Bug fix: don't strip a dotted extension from the path unless it has a matching mimetype. * Add a test to the scaffold project buildout that ensures pep8 passes. * Fix misleading output for ``$ pecan --version``. 0.2.0b ====== * Fix a bug in ``SecureController``. Resolves #131. * Extract debug middleware static file dependencies into physical files. * Improve a test that can fail due to a race condition. * Improve documentation about configation format and ``app.py``. * Add support for content type detection via HTTP Accept headers. * Correct source installation instructions in ``README``. * Fix an incorrect code example in the Hooks documentation. * docs: Fix minor typo in ``*args`` Routing example.