changeset: 89575:e6d862886e5c user: R David Murray date: Mon Mar 10 17:06:00 2014 -0400 files: Doc/whatsnew/3.4.rst Misc/NEWS description: whatsnew: urllib Request objects are now reusable. #16464, #17485, #17272. diff -r 276227a93f6f -r e6d862886e5c Doc/whatsnew/3.4.rst --- a/Doc/whatsnew/3.4.rst Mon Mar 10 16:12:10 2014 -0400 +++ b/Doc/whatsnew/3.4.rst Mon Mar 10 17:06:00 2014 -0400 @@ -1562,6 +1562,19 @@ class attribute on the subclass. (Contributed by Jason R Coombs in :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 -------- diff -r 276227a93f6f -r e6d862886e5c Misc/NEWS --- a/Misc/NEWS Mon Mar 10 16:12:10 2014 -0400 +++ b/Misc/NEWS Mon Mar 10 17:06:00 2014 -0400 @@ -3053,7 +3053,7 @@ to procedurally generate, in an easy way, small test instances. - 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 when parsing with quoting turned off. @@ -3477,6 +3477,9 @@ list() calls aren't added to filter(), map(), and zip() which are directly 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 lengths as unsigned 32-bit integers, like the C implementation does. Patch by Serhiy Storchaka.