1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
0.8.3
=====
* Changed pecan to more gracefully handle a few odd request encoding edge
cases. Now pecan applications respond with an HTTP 400 (rather than an
uncaught UnicodeDecodeError, resulting in an HTTP 500) when:
- HTTP POST requests are composed of non-Unicode data
- Request paths contain invalid percent-encoded characters, e.g.,
``/some/path/%aa/``
* Improved verbosity for import-related errors in pecan configuration files,
especially those involving relative imports.
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 :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
<http://docs.openstack.org/infra/system-config/stackforge.html>`_, including Gerrit code review,
Jenkins continuous integration, and GitHub mirroring.
* Added a pecan plugin for the popular `uwsgi server
<http://uwsgi-docs.readthedocs.org>`_.
* 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.
|