- Fixed one last remaining invalid escape sequence in a docstring.
- Response.content_type now accepts unicode strings on Python 2 and encodes
them to latin-1.
- Accept header classes now support a .copy() function that may be used to
create a copy. This allows ``create_accept_header`` and other like functions
to accept an pre-existing Accept header.
- Some backslashes introduced with the new accept handling code were causing
DeprecationWarnings upon compiling the source to pyc files, all of the
backslashes have been reigned in as appropriate, and users should no longer
see DeprecationWarnings for invalid escape sequence.
- ``acceptparse.AcceptValidHeader``, ``acceptparse.AcceptInvalidHeader``, and
``acceptparse.AcceptNoHeader`` will now always ignore offers that do not
match the required media type grammar when calling ``.acceptable_offers()``.
Previous versions raised a ``ValueError`` for invalid offers in
``AcceptValidHeader`` and returned them as acceptable in the others.
- Add Request.remote_host, exposing REMOTE_HOST environment variable.
- Added ``acceptparse.Accept.parse_offer`` to codify what types of offers
are compatible with ``acceptparse.AcceptValidHeader.acceptable_offers``,
``acceptparse.AcceptMissingHeader.acceptable_offers``, and
``acceptparse.AcceptInvalidHeader.acceptable_offers``. This API also
normalizes the offer with lowercased type/subtype and parameter names.
- SameSite may now be passed as str or bytes to `Response.set_cookie` and
`cookies.make_cookie`. This was an oversight as all other arguments would be
correctly coerced before being serialized.
- acceptparse.MIMEAccept which is deprecated in WebOb 1.8.0 made a backwards
incompatible change that led to it raising on an invalid Accept header. This
behaviour has now been reversed, as well as some other fixes to allow
MIMEAccept to behave more like the old version.
- ``request.POST`` now supports any requests with the appropriate
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-WebOb?expand=0&rev=53
- Update to 1.8.2:
- SameSite may now be passed as str or bytes to `Response.set_cookie` and
`cookies.make_cookie`. This was an oversight as all other arguments would be
correctly coerced before being serialized. See
https://github.com/Pylons/webob/issues/361 and
https://github.com/Pylons/webob/pull/362
- acceptparse.MIMEAccept which is deprecated in WebOb 1.8.0 made a backwards
incompatible change that led to it raising on an invalid Accept header. This
behaviour has now been reversed, as well as some other fixes to allow
MIMEAccept to behave more like the old version. See
https://github.com/Pylons/webob/pull/356
- ``request.POST`` now supports any requests with the appropriate
Content-Type. Allowing any HTTP method to access form encoded content,
including DELETE, PUT, and others. See
https://github.com/Pylons/webob/pull/352
- WebOb is no longer officially supported on Python 3.3 which was EOL'ed on
2017-09-29.
- Many changes have been made to the way WebOb does Accept handling, not just
for the Accept header itself, but also for Accept-Charset, Accept-Encoding
and Accept-Language. This was a `Google Summer of Code
<https://developers.google.com/open-source/gsoc/>`_ project completed by
Whiteroses (https://github.com/whiteroses). Many thanks to Google for running
GSoC, the Python Software Foundation for organising and a huge thanks to Ira
for completing the work. See https://github.com/Pylons/webob/pull/338 and
https://github.com/Pylons/webob/pull/335. Documentation is available at
https://docs.pylonsproject.org/projects/webob/en/master/api/webob.html
- The cookie APIs now have the ability to set the SameSite attribute on a
cookie in both ``webob.cookies.make_cookie`` and
``webob.cookies.CookieProfile``. See https://github.com/Pylons/webob/pull/255
- Exceptions now use string.Template.safe_substitute rather than
string.Template.substitute. The latter would raise for missing mappings, the
former will simply not substitute the missing variable. This is safer in case
the WSGI environ does not contain the keys necessary for the body template.
See https://github.com/Pylons/webob/issues/345.
- Request.host_url, Request.host_port, Request.domain correctly parse IPv6 Host
headers as provided by a browser. See
https://github.com/Pylons/webob/pull/332
- Request.authorization would raise ValueError for unusual or malformed header
values. See https://github.com/Pylons/webob/issues/231
- Allow unnamed fields in form data to be properly transcoded when calling
request.decode with an alternate encoding. See
https://github.com/Pylons/webob/pull/309
- ``Response.__init__`` would discard ``app_iter`` when a ``Response`` had no
body, this would cause issues when ``app_iter`` was an object that was tied
to the life-cycle of a web application and had to be properly closed.
``app_iter`` is more advanced API for ``Response`` and thus even if it
contains a body and is thus against the HTTP RFC's, we should let the users
shoot themselves by returning a body. See
https://github.com/Pylons/webob/issues/305
- When calling a ``@wsgify`` decorated function, the default arguments passed
to ``@wsgify`` are now used when called with the request, and not as a
`start_response`
.. code::
def hello(req, name):
return "Hello, %s!" % name
app = wsgify(hello, args=("Fred",))
req = Request.blank('/')
resp = req.get_response(app) # => "Hello, Fred"
resp2 = app(req) # => "Hello, Fred"
Previously the ``resp2`` line would have failed with a ``TypeError``. With
this change there is no way to override the default arguments with no
arguments. See https://github.com/Pylons/webob/pull/203
- When setting ``app_iter`` on a ``Response`` object the ``content_md5`` header
is no longer cleared. This behaviour is odd and disallows setting the
``content_md5`` and then returning an iterator for chunked content encoded
responses. See https://github.com/Pylons/webob/issues/86
OBS-URL: https://build.opensuse.org/request/show/628333
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-WebOb?expand=0&rev=47
- update to 1.7.1:
- ``Response.__init__`` would discard ``app_iter`` when a ``Response`` had no
body, this would cause issues when ``app_iter`` was an object that was tied
to the life-cycle of a web application and had to be properly closed.
``app_iter`` is more advanced API for ``Response`` and thus even if it
contains a body and is thus against the HTTP RFC's, we should let the users
shoot themselves by returning a body. See
https://github.com/Pylons/webob/issues/305
- WebOb is no longer supported on Python 2.6 and PyPy3 (due to pip no longer
supporting Python 3.2 even on PyPy)
- ``Response.content_type`` removes all existing Content-Type parameters, and
if the new Content-Type is "texty" it adds a new charset (unless already
provided) using the ``default_charset``. See
https://github.com/Pylons/webob/pull/301
- ``Response.set_cookie`` no longer accepts a key argument. This was deprecated
in WebOb 1.5 and as mentioned in the deprecation, is being removed in 1.7
- ``Response.__init__`` will no longer set the default Content-Type, nor
Content-Length on Responses that don't have a body. This allows WebOb to
return proper responses for things like `Response(status='204 No Content')`.
- ``Response.text`` will no longer raise if the Content-Type does not have a
charset, it will fall back to using the new ``default_body_encoding`. To get
the old behaviour back please sub-class ``Response`` and set
``default_body_encoding`` to ``None``. See
https://github.com/Pylons/webob/pull/287
- WebOb no longer supports Chunked Encoding, this means that if you are using
WebOb and need Chunked Encoding you will be required to have a proxy that
unchunks the request for you. Please read
https://github.com/Pylons/webob/issues/279 for more background.
- ``Response`` has a new ``default_body_encoding`` which may be used to allow
getting/setting ``Response.text`` when a Content-Type has no charset. See
OBS-URL: https://build.opensuse.org/request/show/456072
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-WebOb?expand=0&rev=37
- update to 1.6.1:
- Response.from_file now parses the status line correctly when the status line
contains an HTTP with version, as well as a status text that contains
multiple white spaces (e.g 404 Not Found). See
https://github.com/Pylons/webob/issues/250
- Python 3.2 is no longer supported by WebOb
- Request.decode attempted to read from the an already consumed stream, it has
now been redirected to another stream to read from. See
https://github.com/Pylons/webob/pull/183
- The application/json media type does not allow for a charset as discovery of
the encoding is done at the JSON layer. Upon initialization of a Response
WebOb will no longer add a charset if the content-type is set to JSON. See
https://github.com/Pylons/webob/pull/197 and
https://github.com/Pylons/pyramid/issues/1611
- Lazily HTML escapes environment keys in HTTP Exceptions so that those keys in
the environ that are not used in the output of the page don't raise an
exception due to inability to be properly escaped. See
https://github.com/Pylons/webob/pull/139
- MIMEAccept now accepts comparisons against wildcards, this allows one to
match on just the media type or sub-type, without having to explicitly match
on both the media type and sub-type at the same time. See
https://github.com/Pylons/webob/pull/185
- Add the ability to return a JSON body from an exception. Using the Accept
information in the request, the exceptions will now automatically return a
JSON version of the exception instead of just HTML or text. See
https://github.com/Pylons/webob/pull/230 and
https://github.com/Pylons/webob/issues/209
- exc._HTTPMove and any subclasses will now raise a ValueError if the location
field contains a line feed or carriage return. These values may lead to
possible HTTP Response Splitting. The header_getter descriptor has also been
OBS-URL: https://build.opensuse.org/request/show/400003
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-WebOb?expand=0&rev=32
- updateto version 1.5.1:
* (Bug Fixes) The exceptions HTTPNotAcceptable,
HTTPUnsupportedMediaType and HTTPNotImplemented will now correctly
use the sub-classed template rather than the default error
template. See https://github.com/Pylons/webob/issues/221
* (Bug Fixes) Response’s from_file now correctly deals with a status
line that contains an HTTP version identifier. HTTP/1.1 200 OK is
now correctly parsed, whereas before this would raise an error
upon setting the Response.status in from_file. See
https://github.com/Pylons/webob/issues/121
- 1.5.0
* (Bug Fixes) The cookie API functions will now make sure that
max_age is an integer or an string that can convert to an
integer. Previously passing in max_age=’test’ would have silently
done the wrong thing.
- 1.5.0b0
* (Bug Fixes) Unbreak req.POST when the request method is
PATCH. Instead of returning something cmpletely unrelated we
return NoVar. See: https://github.com/Pylons/webob/pull/215
* (Features) HTTP Status Code 308 is now supported as a Permanent
Redirect. See https://github.com/Pylons/webob/pull/207
- 1.5.0a1
* (Backwards Incompatibilities) Response.set_cookie renamed 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.
* (Backwards Incompatibilities) The status attribute of a Response
object no longer takes a string like None None and 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
OBS-URL: https://build.opensuse.org/request/show/348851
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-WebOb?expand=0&rev=30
* Simplified macro usage
* Remove unneeded runtime requirement on python-nose
* Run testsuite
- Update to version 1.2b2:
* Fix request.cookies.get('name', 'default'). Previously default was ignored.
- Changes from version 1.2b1:
* Mutating the request.cookies property now reflects the mutations into the HTTP_COOKIES environ header.
* Response.etag = (tag, False) sets weak etag.
* Range only parses single range now.
* Range.satisfiable(..) is gone.
* Accept.best_matches() is gone; use list(request.accept) or request.accept.best_match(..) instead (applies to all Accept-* headers) or similar with request.accept_language.
* Response.request and Response.environ attrs are undeprecated and no longer raise exceptions when used. These can also be passed to the Response constructor. This is to support codebases that pass them to the constructor or assign them to a response instance. However, some behavior differences from 1.1 exist. In particular, synchronization is no longer done between environ and request attribute properties of Response; you may pass either to the constructor (or both) or assign one or the other or both, but they wont be managed specially and will remain the same over the lifetime of the response just as you passed them. Default values for both request and environ on any given response are None now.
* Undeprecated uscript_name and upath_info.
* For backwards compatibility purposes, switch req.script_name and path_info back again to contain “raw” undecoded native strings rather than text. Use uscript_name and upath_info to get the text version of SCRIPT_NAME and PATH_INFO.
* Don’t raise an exception if unicode_errors or decode_param_names is passed to the Request constructor. Instead, emit a warning. For benefit of Pylons 1.X, which passes both.
* Don’t raise an exception if HTTPException.exception is used; instead emit a warning. For benefit of Pylons 1.X, which uses it.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-WebOb?expand=0&rev=5
- Spec cleanup:
* Simplified macro usage
* Remove unneeded runtime requirement on python-nose
* Run testsuite
- Update to version 1.2b2:
* Fix request.cookies.get('name', 'default'). Previously default was ignored.
- Changes from version 1.2b1:
* Mutating the request.cookies property now reflects the mutations into the HTTP_COOKIES environ header.
* Response.etag = (tag, False) sets weak etag.
* Range only parses single range now.
* Range.satisfiable(..) is gone.
* Accept.best_matches() is gone; use list(request.accept) or request.accept.best_match(..) instead (applies to all Accept-* headers) or similar with request.accept_language.
* Response.request and Response.environ attrs are undeprecated and no longer raise exceptions when used. These can also be passed to the Response constructor. This is to support codebases that pass them to the constructor or assign them to a response instance. However, some behavior differences from 1.1 exist. In particular, synchronization is no longer done between environ and request attribute properties of Response; you may pass either to the constructor (or both) or assign one or the other or both, but they wont be managed specially and will remain the same over the lifetime of the response just as you passed them. Default values for both request and environ on any given response are None now.
* Undeprecated uscript_name and upath_info.
* For backwards compatibility purposes, switch req.script_name and path_info back again to contain “raw” undecoded native strings rather than text. Use uscript_name and upath_info to get the text version of SCRIPT_NAME and PATH_INFO.
* Don’t raise an exception if unicode_errors or decode_param_names is passed to the Request constructor. Instead, emit a warning. For benefit of Pylons 1.X, which passes both.
* Don’t raise an exception if HTTPException.exception is used; instead emit a warning. For benefit of Pylons 1.X, which uses it.
OBS-URL: https://build.opensuse.org/request/show/102223
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-WebOb?expand=0&rev=3