]> granicus.if.org Git - python/commitdiff
Issue #5800: headers parameter of wsgiref.headers.Headers is now optional.
authorBerker Peksag <berker.peksag@gmail.com>
Wed, 2 Jul 2014 05:37:22 +0000 (08:37 +0300)
committerBerker Peksag <berker.peksag@gmail.com>
Wed, 2 Jul 2014 05:37:22 +0000 (08:37 +0300)
Patch by Pablo Torres Navarrete and SilentGhost.

Doc/library/wsgiref.rst
Doc/whatsnew/3.5.rst
Lib/test/test_wsgiref.py
Lib/wsgiref/headers.py
Misc/NEWS

index 1cef2e9464e2c3914ca27e643404786e2f327973..223814030f1243b94249707bb8a2b8c63cb26c1f 100644 (file)
@@ -184,10 +184,11 @@ This module provides a single class, :class:`Headers`, for convenient
 manipulation of WSGI response headers using a mapping-like interface.
 
 
-.. class:: Headers(headers)
+.. class:: Headers([headers])
 
    Create a mapping-like object wrapping *headers*, which must be a list of header
-   name/value tuples as described in :pep:`3333`.
+   name/value tuples as described in :pep:`3333`. The default value of *headers* is
+   an empty list.
 
    :class:`Headers` objects support typical mapping operations including
    :meth:`__getitem__`, :meth:`get`, :meth:`__setitem__`, :meth:`setdefault`,
@@ -251,6 +252,10 @@ manipulation of WSGI response headers using a mapping-like interface.
          Content-Disposition: attachment; filename="bud.gif"
 
 
+   .. versionchanged:: 3.5
+      *headers* parameter is optional.
+
+
 :mod:`wsgiref.simple_server` -- a simple WSGI HTTP server
 ---------------------------------------------------------
 
index 9fff48cf55f96890799e09b15db3b8bef2e48573..0842143f2d3c08f38d17bcc060e872184c4a3a23 100644 (file)
@@ -230,6 +230,12 @@ socket
   :meth:`socket.socket.send`.
   (contributed by Giampaolo Rodola' in :issue:`17552`)
 
+wsgiref
+-------
+
+* *headers* parameter of :class:`wsgiref.headers.Headers` is now optional.
+  (Contributed by Pablo Torres Navarrete and SilentGhost in :issue:`5800`.)
+
 xmlrpc
 ------
 
index 901f3c99c6672781a8a90496f871d5c6e0df022e..190f3baa94ba3dccc6e9f033c9061a7cec68c601 100644 (file)
@@ -338,6 +338,7 @@ class HeaderTests(TestCase):
 
     def testMappingInterface(self):
         test = [('x','y')]
+        self.assertEqual(len(Headers()), 0)
         self.assertEqual(len(Headers([])),0)
         self.assertEqual(len(Headers(test[:])),1)
         self.assertEqual(Headers(test[:]).keys(), ['x'])
@@ -345,7 +346,7 @@ class HeaderTests(TestCase):
         self.assertEqual(Headers(test[:]).items(), test)
         self.assertIsNot(Headers(test).items(), test)  # must be copy!
 
-        h=Headers([])
+        h = Headers()
         del h['foo']   # should not raise an error
 
         h['Foo'] = 'bar'
@@ -370,9 +371,8 @@ class HeaderTests(TestCase):
     def testRequireList(self):
         self.assertRaises(TypeError, Headers, "foo")
 
-
     def testExtras(self):
-        h = Headers([])
+        h = Headers()
         self.assertEqual(str(h),'\r\n')
 
         h.add_header('foo','bar',baz="spam")
index d93962831aed45ef3f780dd238cb7dcda8a77d62..7931bc791894728a75c84d7b128b901cc604a83d 100644 (file)
@@ -26,10 +26,10 @@ def _formatparam(param, value=None, quote=1):
 
 
 class Headers:
-
     """Manage a collection of HTTP response headers"""
 
-    def __init__(self,headers):
+    def __init__(self, headers=None):
+        headers = headers if headers is not None else []
         if type(headers) is not list:
             raise TypeError("Headers must be a list of name/value tuples")
         self._headers = headers
index ad521b57ac2df70d8564d2cd265f1262c29f384b..04287755fe62c0170d6fe3bb2961954ee137a828 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -103,6 +103,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #5800: headers parameter of wsgiref.headers.Headers is now optional.
+  Initial patch by Pablo Torres Navarrete and SilentGhost.
+
 - Issue #21781: ssl.RAND_add() now supports strings longer than 2 GB.
 
 - Issue #21679: Prevent extraneous fstat() calls during open().  Patch by