- `werkzeug.contrib.cache.Memcached` accepts now objects that
implementt the memcache.Client interface as alternative to a list of
strings with server addresses.
There is also now a `GAEMemcachedCache` that connects to the Google
- explicitly convert secret keys to bytestrings now because Python
2.6 no longer does that.
- `url_encode` and all interfaces that call it, support ordering of
options now which however is disabled by default.
- the development server no longer resolves the addresses of clients.
- Fixed a typo in `werkzeug.test` that broke `File`.
- `Map.bind_to_environ` uses the `Host` header now if available.
- Fixed `BaseCache.get_dict` (#345)
- `werkzeug.test.Client` can now run the application buffered in which
case the application is properly closed automatically.
- Fixed `Headers.set` (#354). Caused header duplication before.
- Fixed `Headers.pop` (#349). default parameter was not properly
- Fixed UnboundLocalError in `create_environ` (#351)
- `Headers` is more compatible with wsgiref now.
- `Template.render` accepts multidicts now.
(codename Schraubenzieher, released on November 23rd 2008)
- `Client` supports an empty `data` argument now.
- fixed a bug in `Response.application` that made it impossible to use it
as method decorator.
- the session system should work on appengine now
- the secure cookie works properly in load balanced environments with
different cpu architectures now.
- `CacheControl.no_cache` and `CacheControl.private` behavior changed to
reflect the possibilities of the HTTP RFC. Setting these attributes to
`None` or `True` now sets the value to "the empty value".
More details in the documentation.
- fixed `werkzeug.contrib.atom.AtomFeed.__call__`. (#338)
- `BaseResponse.make_conditional` now always returns `self`. Previously
it didn't for post requests and such.
- fixed a bug in boolean attribute handling of `html` and `xhtml`.
- added graceful error handling to the debugger pastebin feature.
- added a more list like interface to `Headers` (slicing and indexing
- fixed a bug with the `__setitem__` method of `Headers` that didn't
properly remove all keys on replacing.
- added `remove_entity_headers` which removes all entity headers from
a list of headers (or a `Headers` object)
- the responses now automatically call `remove_entity_headers` if the
status code is 304.
- fixed a bug with `Href` query parameter handling. Previously the last
item of a call to `Href` was not handled properly if it was a dict.
- headers now support a `pop` operation to better work with environ
(released on June 24th 2008)
- fixed a security problem with `werkzeug.contrib.SecureCookie`.
More details available in the `release announcement`_.
.. _release announcement: http://lucumr.pocoo.org/cogitations/2008/06/24/werkzeug-031-released/
(codename EUR325CAT6, released on June 14th 2008)
- added support for redirecting in url routing.
- added `Authorization` and `AuthorizationMixin`
- added `WWWAuthenticate` and `WWWAuthenticateMixin`
- added `parse_list_header`
- added `parse_dict_header`
- added `parse_authorization_header`
- added `parse_www_authenticate_header`
- added `_get_current_object` method to `LocalProxy` objects
- added `parse_form_data`
- `MultiDict`, `CombinedMultiDict`, `Headers`, and `EnvironHeaders` raise
special key errors now that are subclasses of `BadRequest` so if you
don't catch them they give meaningful HTTP responses.
- added support for alternative encoding error handling and the new
`HTTPUnicodeError` which (if not cought) behaves like a `BadRequest`.
- adde `BadRequest.wrap`.
- added ETag-support to the SharedDataMiddleware and added an option
to disable caching.
- fixed `is_xhr` on the request objects.
- fixed error handling of the url adapter's `dispatch` method. (#318)
- fixed bug with `SharedDataMiddleware`.
- fixed `Accept.values`.
- `EnvironHeaders` contain content-type and content-length now
- `url_encode` treats lists and tuples in dicts passed to it as multiple
values for the same key so that one doesn't have to pass a `MultiDict`
to the function.
- added `validate_arguments`
- added `BaseRequest.application`
- improved Python 2.3 support
- `run_simple` accepts `use_debugger` and `use_evalex` parameters now,
like the `make_runserver` factory function from the script module.
- the `environ_property` is now read only by default
- it's now possible to initialize requests as "shallow" requests which
causes runtime errors if the request object tries to consume the
(codename Faustkeil, released Feb 14th 2008)
- Added `AnyConverter` to the routing system.
- Added `werkzeug.contrib.securecookie`
- Exceptions have a ``get_response()`` method that return a response object
- fixed the path ordering bug (#293), thanks Thomas Johansson
- `BaseReporterStream` is now part of the werkzeug contrib module. With
Werkzeug 0.3 onwards you will have to import it from there.
- added `DispatcherMiddleware`.
- `RequestRedirect` is now a subclass of `HTTPException` and uses a
301 status code instead of 302.
- `url_encode` and `url_decode` can optionally treat keys as unicode strings
- `werkzeug.script` has a different caller format for boolean arguments now.
- renamed `lazy_property` to `cached_property`.
- added `import_string`.
- added is_* properties to request objects.
- added `empty()` method to routing rules.
- added `werkzeug.contrib.profiler`.
- added `extends` to `Headers`.
- added `dump_cookie` and `parse_cookie`.
- added `as_tuple` to the `Client`.
- added `werkzeug.contrib.testtools`.
- added `werkzeug.unescape`
- added `BaseResponse.freeze`
- added `werkzeug.contrib.atom`
- the HTTPExceptions accept an argument `description` now which overrides the
- the `MapAdapter` has a default for path info now. If you use
`bind_to_environ` you don't have to pass the path later.
- the wsgiref subclass werkzeug uses for the dev server does not use direct
sys.stderr logging any more but a logger called "werkzeug".
- implemented `Href`.
- implemented `find_modules`
- refactored request and response objects into base objects, mixins and
full featured subclasses that implement all mixins.
- added simple user agent parser
- werkzeug's routing raises `MethodNotAllowed` now if it matches a
rule but for a different method.
- many fixes and small improvements
(codename Wictorinoxger, released Dec 9th 2007)
- Initial release