0.8.2
- Fixes a bug that breaks support for multi-value query string variables (e.g.,
?check=a&check=b).
0.8.1
- Improved detection of infinite recursion for PecanHook and pypy. This fixes
a bug discovered in pecan + pypy that could result in infinite recursion when
using the PecanHook metaclass.
- Fixed a bug that prevented @exposed controllers from using @staticmethod.
- Fixed a minor bug in the controller argument calculation.
0.8.0
- For HTTP POSTs, map JSON request bodies to controller keyword arguments.
- Improved 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.
- Fixed a routing bug for generic subcontrollers.
- Fixed a bug in generic function handling when context locals are disabled.
- Fixed a bug that mixes up argument order for generic functions.
- Removed 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 Context/Thread-Locals vs. Explicit Argument Passing.
- Added better support for hook composition via subclassing and mixins. For
more information, see 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.