What's New in WebOb 1.5¶
Backwards Incompatibilities¶
- Response.set_cookierenamed the only required parameter from "key" to "name". The code will now still accept "key" as a keyword argument, and will issue a DeprecationWarning until WebOb 1.7.
- The - statusattribute of a- Responseobject no longer takes a string like- None Noneand allows that to be set as the status. It now has to at least match the pattern of- <integer status code> <explenation of status code>. Invalid status strings will now raise a- ValueError.
- Morselwill no longer accept a cookie value that does not meet RFC6265's cookie-octet specification. Upon calling- Morsel.serializea warning will be issued, in the future this will raise a- ValueError, please update your cookie handling code. See https://github.com/Pylons/webob/pull/172- The cookie-octet specification in RFC6265 states the following characters are valid in a cookie value: - Hex Range - Actual Characters - [0x21 ]- !- [0x25-0x2B]- #$%&'()*+- [0x2D-0x3A]- -./0123456789:- [0x3C-0x5B]- <=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[- [0x5D-0x7E]- ]^_`abcdefghijklmnopqrstuvwxyz{|}~- RFC6265 suggests using base 64 to serialize data before storing data in a cookie. - Cookies that meet the RFC6265 standard will no longer be quoted, as this is unnecessary. This is a no-op as far as browsers and cookie storage is concerned. 
- Response.set_cookienow uses the internal- make_cookieAPI, which will issue warnings if cookies are set with invalid bytes. See https://github.com/Pylons/webob/pull/172
Features¶
- Add support for some new caching headers, stale-while-revalidate and stale-if-error that can be used by reverse proxies to cache stale responses temporarily if the backend disappears. From RFC5861. See https://github.com/Pylons/webob/pull/189 
Bug Fixes¶
- Response.status now uses duck-typing for integers, and has also learned to raise a ValueError if the status isn't an integer followed by a space, and then the reason. See https://github.com/Pylons/webob/pull/191 
- Fixed a bug in - webob.multidict.GetDictwhich resulted in the QUERY_STRING not being updated when changes were made to query params using- Request.GET.extend().
- Read the body of a request if we think it might have a body. This fixes PATCH to support bodies. See https://github.com/Pylons/webob/pull/184 
- Response.from_file returns HTTP headers as latin1 rather than UTF-8, this fixes the usage on Google AppEngine. See https://github.com/Pylons/webob/issues/99 and https://github.com/Pylons/webob/pull/150 
- Fix a bug in parsing the auth parameters that contained bad white space. This makes the parsing fall in line with what's required in RFC7235. See https://github.com/Pylons/webob/issues/158 
- Use 'rn' line endings in - Response.__str__. See: https://github.com/Pylons/webob/pull/146
Documentation Changes¶
- response.set_cookienow has proper documentation for- max_ageand- expires. The code has also been refactored to use- cookies.make_cookieinstead of duplicating the code. This fixes https://github.com/Pylons/webob/issues/166 and https://github.com/Pylons/webob/issues/171
- Documentation didn't match the actual code for the wsgify function signature. See https://github.com/Pylons/webob/pull/167 
- Remove the WebDAV only from certain HTTP Exceptions, these exceptions may also be used by REST services for example.