Removed environ_getter from webob.Request. This
largely-unused option allowed a Request object to be instantiated
with a dynamic underlying environ. Since it wasn’t used much, and
might have been ill-advised from the beginning, and affected
performance, it has been removed (from Chris McDonough).
Added an attribute unicode_errors to webob.Response –
if set to something like unicode_errors='replace' it will decode
resp.body appropriately. The default is strict (which was
the former un-overridable behavior).
Change formatting of cookie expires, to use the more traditional
format Wed,5-May-200115:34:10GMT (dashes instead of spaces).
Browsers should deal with either format, but some other code expects
dashes.
Added in sorted function for backward compatibility with Python
2.3.
Allow keyword arguments to webob.Request, which assign
attributes (possibly overwriting values in the environment).
Added methods webob.Request.make_body_seekable() and
webob.Request.copy_body(), which make it easier to share a
request body among different consuming applications, doing something
like req.make_body_seekable(); req.body_file.seek(0)
request.params.copy() now returns a writable MultiDict (before
it returned an unwritable object).
There were several things broken with UnicodeMultiDict when
decode_param_names is turned on (when the dictionary keys are
unicode).
You can pass keyword arguments to Request.blank() that will be
used to construct Request (e.g., Request.blank('/',decode_param_names=True)).
If you set headers like response.etag to a unicode value, they
will be encoded as ISO-8859-1 (however, they will remain encoded,
and response.etag will not be a unicode value).
When parsing, interpret times with no timezone as UTC (previously
they would be interpreted as local time).
Set the Expires property on cookies when using
response.set_cookie(). This is inherited from max_age.
Added req.urlarg, which represents positional arguments in
environ['wsgiorg.routing_args'].
For Python 2.4, added attribute get/set proxies on exception objects
from, for example, webob.exc.HTTPNotFound().exception, so that
they act more like normal response objects (despite not being
new-style classes or webob.Response objects). In Python 2.5 the
exceptions are webob.Response objects.
The Response constructor has changed: it is now Response([body],[status],...) (before it was Response([status],[body],...)).
Body may be str or unicode.
The Response class defaults to text/html for the
Content-Type, and utf8 for the charset (charset is only set on
text/* and application/*+xml responses).
Python 2.3 compatibility: backport of reversed(seq)
Made separate .exception attribute on webob.exc objects,
since new-style classes can’t be raised as exceptions.
Deprecate req.postvars and req.queryvars, instead using the
sole names req.GET and req.POST (also req.str_GET and
req.str_POST). The old names give a warning; will give an error
in next release, and be completely gone in the following release.
req.user_agent is now just a simple string (parsing the
User-Agent header was just too volatile, and required too much
knowledge about current browsers). Similarly,
req.referer_search_query() is gone.
Added parameters version and comment to
Response.set_cookie(), per William Dode’s suggestion.
Was accidentally consuming file uploads, instead of putting the
FieldStorage object directly in the parameters.