whatsnew: urllib Request objects are now reusable.

#16464, #17485, #17272.
This commit is contained in:
R David Murray 2014-03-10 17:06:00 -04:00
parent 0c5598beaf
commit 30781e93b0
2 changed files with 17 additions and 1 deletions

View File

@ -1562,6 +1562,19 @@ can now be specified by setting a :class:`~urllib.request.Request.method`
class attribute on the subclass. (Contributed by Jason R Coombs in class attribute on the subclass. (Contributed by Jason R Coombs in
:issue:`18978`.) :issue:`18978`.)
:class:`~urllib.request.Request` objects are now reusable: if the
:attr:`~urllib.request.Request.full_url` or :attr:`~urllib.request.Request.data`
attributes are modified, all relevant internal properties are updated. This
means, for example, that it is now possible to use the same
:class:`~urllib.request.Request` object in more than one
:meth:`.OpenerDirector.open` call with different *data* arguments, or to
modify a :class:`~urllib.request.Request`\ 's ``url`` rather than recomputing it
from scratch. There is also a new
:meth:`~urllib.request.Request.remove_header` method that can be used to remove
headers from a :class:`~urllib.request.Request`. (Contributed by Alexey
Kachayev in :issue:`16464`, Daniel Wozniak in :issue:`17485`, and Damien Brecht
and Senthil Kumaran in :issue:`17272`.)
unittest unittest
-------- --------

View File

@ -3053,7 +3053,7 @@ Library
to procedurally generate, in an easy way, small test instances. to procedurally generate, in an easy way, small test instances.
- Issue #17485: Also delete the Request Content-Length header if the data - Issue #17485: Also delete the Request Content-Length header if the data
attribute is deleted. (Follow on to issue 16464). attribute is deleted. (Follow on to issue Issue #16464).
- Issue #15927: CVS now correctly parses escaped newlines and carriage - Issue #15927: CVS now correctly parses escaped newlines and carriage
when parsing with quoting turned off. when parsing with quoting turned off.
@ -3477,6 +3477,9 @@ Library
list() calls aren't added to filter(), map(), and zip() which are directly list() calls aren't added to filter(), map(), and zip() which are directly
passed enumerate(). passed enumerate().
- Issue #16464: Reset the Content-Length header when a urllib Request is reused
with new data.
- Issue #12848: The pure Python pickle implementation now treats object - Issue #12848: The pure Python pickle implementation now treats object
lengths as unsigned 32-bit integers, like the C implementation does. lengths as unsigned 32-bit integers, like the C implementation does.
Patch by Serhiy Storchaka. Patch by Serhiy Storchaka.