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 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
|
1.5.1
=====
* addressed an installation bug caused by a duplicate entry script (https://github.com/pecan/pecan/pull/142)
1.5.0
=====
* pecan no longer has a dependency on six (https://github.com/pecan/pecan/issues/144)
* pecan now supports SQLAlchemy 2.0 (https://github.com/pecan/pecan/issues/143)
* pecan no longer supports SQLAlchemy 1.3
1.4.2
=====
* pecan no longer depends on webtest (https://github.com/pecan/pecan/issues/139)
1.4.1
=====
* add support for Python 3.10
* added trove classifiers for Python 3.6 - 3.9
* fixed a bug related to setuptools as a dependency
(https://github.com/pecan/pecan/pull/122)
* fixed a bug that broke pecan when used with certain versions of
SQLAlchemy (https://github.com/pecan/pecan/pulls)
1.4.0
=====
* pecan now requires webob >= 1.8
* fixed a bug when parsing certain Accept headers
(https://github.com/Pylons/webob/issues/403)
* removed official support for Python 3.5
1.3.3
=====
* fixed a bug in RestController that incorrectly routed certain @secure
requests (https://github.com/pecan/pecan/pull/105)
* removed official support for Python 3.3
1.3.2
=====
* pecan now works with webob < and > 1.8
(https://github.com/pecan/pecan/pull/99)
1.3.1
=====
* pinned webob to <1.8 due to breaking changes in Accept header parsing
(https://github.com/pecan/pecan/pull/97)
(https://github.com/Pylons/webob/pull/338)
1.3.0
=====
* pecan is now officially supported for Python 3.6
* pecan is no longer supported for Python 2.6
1.2.1
=====
* Reverts a stable API change/regression (in the 1.2 release)
(https://github.com/pecan/pecan/issues/72). This change will re-released in
a future major version upgrade.
1.2
===
* Added a better error message when an invalid template renderer is specified
in `pecan.expose()` (https://github.com/pecan/pecan/issues/81).
* Pecan controllers that return `None` are now treated as an `HTTP 204 No
Content` (https://github.com/pecan/pecan/issues/72).
* The `method` argument to `pecan.expose()` for generic controllers is no
longer optional (https://github.com/pecan/pecan/pull/77).
1.1.2
=====
* Fixed a bug where JSON-formatted HTTP response bodies were not making
use of pecan's JSON type registration functionality
(http://pecan.readthedocs.io/en/latest/jsonify.html)
(https://github.com/pecan/pecan/issues/68).
* Updated code and documentation examples to support readthedoc's move from
`readthedocs.org` to `readthedocs.io`.
1.1.1
=====
* Pecan now officially supports Python 3.5.
* Pecan now uses `inspect.signature` instead of `inspect.getargspec` in
Python 3.5 and higher (because `inspect.getargspec` is deprecated in these
versions of Python 3).
* Fixed a bug that caused "after" hooks to run multiple times when
`pecan.redirect(..., internal=True)` was used
(https://github.com/pecan/pecan/issues/58).
1.1.0
=====
* `pecan.middleware.debug.DebugMiddleware` now logs exceptions at the ERROR
level (https://github.com/pecan/pecan/pull/56).
* Fix a Javascript bug in the default project scaffold
(https://github.com/pecan/pecan/pull/55).
1.0.5
=====
* Fix a bug in controller argspec detection when class-based decorators are
used (https://github.com/pecan/pecan/issues/47).
1.0.4
=====
* Removed an open file handle leak when pecan renders errors for Jinja2 and
Genshi templates (https://github.com/pecan/pecan/issues/30).
* Resolved a bug which caused log output to be duplicated in projects created
with `pecan create` (https://github.com/pecan/pecan/issues/39).
1.0.3
=====
* Fixed a bug in `pecan.hooks.HookController` for newer versions of Python3.4
(https://github.com/pecan/pecan/issues/19).
1.0.2
=====
* Fixed an edge case in `pecan.util.getargspec` that caused the incorrect
argspec to be returned in certain situations when using Python 2.6.
* Added a `threading.lock` to the file system monitoring in `pecan serve
--reload` to avoid extraneous server reloads.
1.0.1
=====
* Fixed a bug wherein the file extension for URLs with a trailing slash
(`file.html` vs `file.html/`) were not correctly guessed, thus resulting in
incorrect Content-Type headers.
* Fixed a subtle bug in `pecan.config.Configuration` attribute/item assignment
that caused some types of configuration changes to silently fail.
1.0.0
=====
* Replaced pecan's debugger middleware with an (optional) dependency on the
`backlash` package. Developers who want to debug application-level
tracebacks interactively should `pip install backlash` in their development
environment.
* Fixed a Content-Type related bug: when an explicit content_type is specified
as an argument to `pecan.expose()`, it is now given precedence over the
application-level default renderer.
* Fixed a bug that prevented the usage of certain RFC3986-specified characters
in path segments.
* Fixed a bug in `pecan.abort` which suppressed the original traceback (and
prevented monitoring tools like NewRelic from working as effectively).
0.9.0
=====
* Support for Python 3.2 has been dropped.
* Added a new feature which allows users to specify custom path segments for
controllers. This is especially useful for path segments that are not
valid Python identifiers (such as path segments that include certain
punctuation characters, like `/some/~path~/`).
* Added a new configuration option, `app.debugger`, which allows developers to
specify an alternative debugger to `pdb` (e.g., `ipdb`) when performing
interactive debugging with pecan's `DebugMiddleware`.
* Changed new quickstart pecan projects to default the `pecan` log level to
`DEBUG` for development.
* Fixed a bug that prevented `staticmethods` from being used as controllers.
* Fixed a decoding bug in the way pecan handles certain quoted URL path
segments and query strings.
* Fixed several bugs in the way pecan handles Unicode path segments (for
example, now you can define pecan routes that contain emoji characters).
* Fixed several bugs in RestController that caused it to return `HTTP 404 Not
Found` rather than `HTTP 405 Method Not Allowed`. Additionally,
RestController now returns valid `Allow` headers when `HTTP 405 Method Not
Allowed` is returned.
* Fixed a bug which allowed special pecan methods (`_route`, `_lookup`,
`_default`) to be marked as generic REST methods.
* Added more emphasis in pecan's documentation to the need for `debug=False` in
production deployments.
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
<https://uwsgi-docs.readthedocs.io>`_.
* 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.
|