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 aResponseobject no longer takes a string likeNone 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 aValueError.Morselwill no longer accept a cookie value that does not meet RFC6265's cookie-octet specification. Upon callingMorsel.serializea warning will be issued, in the future this will raise aValueError, please update your cookie handling code. See https://github.com/Pylons/webob/pull/172The 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 internalmake_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 usingRequest.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 formax_ageandexpires. The code has also been refactored to usecookies.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.