summaryrefslogtreecommitdiff
path: root/docs/source/changes.rst
blob: 0fa3db908bb17e4494f42a647fee7de8662e71da (plain)
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
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://ci.openstack.org/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.