prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Is HTTPHeaderDict a public API to make requests?
  `HTTPHeaderDict` was initially designed to handle response headers, and is not documented for request headers.
  
   * Should it be documented?
   * How should it be imported? The current options are `from urllib3.response import HTTPHeaderDict` and `from urllib3._collections import HTTPHeaderDict`, and they don't feel right.
  
  </issue>
  <code>
  [start of src/urllib3/__init__.py]
  1 """
  2 Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more
  3 """
  4 
  5 # Set default logging handler to avoid "No handler found" warnings.
  6 import logging
  7 import warnings
  8 from logging import NullHandler
  9 
  10 from . import exceptions
  11 from ._version import __version__
  12 from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
  13 from .filepost import encode_multipart_formdata
  14 from .poolmanager import PoolManager, ProxyManager, proxy_from_url
  15 from .response import HTTPResponse
  16 from .util.request import make_headers
  17 from .util.retry import Retry
  18 from .util.timeout import Timeout
  19 
  20 __author__ = "Andrey Petrov (andrey.petrov@shazow.net)"
  21 __license__ = "MIT"
  22 __version__ = __version__
  23 
  24 __all__ = (
  25     "HTTPConnectionPool",
  26     "HTTPSConnectionPool",
  27     "PoolManager",
  28     "ProxyManager",
  29     "HTTPResponse",
  30     "Retry",
  31     "Timeout",
  32     "add_stderr_logger",
  33     "connection_from_url",
  34     "disable_warnings",
  35     "encode_multipart_formdata",
  36     "make_headers",
  37     "proxy_from_url",
  38     "request",
  39 )
  40 
  41 logging.getLogger(__name__).addHandler(NullHandler())
  42 
  43 
  44 def add_stderr_logger(level=logging.DEBUG):
  45     """
  46     Helper for quickly adding a StreamHandler to the logger. Useful for
  47     debugging.
  48 
  49     Returns the handler after adding it.
  50     """
  51     # This method needs to be in this __init__.py to get the __name__ correct
  52     # even if urllib3 is vendored within another package.
  53     logger = logging.getLogger(__name__)
  54     handler = logging.StreamHandler()
  55     handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s"))
  56     logger.addHandler(handler)
  57     logger.setLevel(level)
  58     logger.debug("Added a stderr logging handler to logger: %s", __name__)
  59     return handler
  60 
  61 
  62 # ... Clean up.
  63 del NullHandler
  64 
  65 
  66 # All warning filters *must* be appended unless you're really certain that they
  67 # shouldn't be: otherwise, it's very hard for users to use most Python
  68 # mechanisms to silence them.
  69 # SecurityWarning's always go off by default.
  70 warnings.simplefilter("always", exceptions.SecurityWarning, append=True)
  71 # InsecurePlatformWarning's don't vary between requests, so we keep it default.
  72 warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True)
  73 # SNIMissingWarnings should go off only once.
  74 warnings.simplefilter("default", exceptions.SNIMissingWarning, append=True)
  75 
  76 
  77 def disable_warnings(category=exceptions.HTTPWarning):
  78     """
  79     Helper for quickly disabling all urllib3 warnings.
  80     """
  81     warnings.simplefilter("ignore", category)
  82 
  83 
  84 _DEFAULT_POOL = PoolManager()
  85 
  86 
  87 def request(method, url, fields=None, headers=None):
  88     """
  89     A convenience, top-level request method. It uses a module-global ``PoolManager`` instance.
  90     Therefore, its side effects could be shared across dependencies relying on it.
  91     To avoid side effects create a new ``PoolManager`` instance and use it instead.
  92     The method does not accept low-level ``**urlopen_kw`` keyword arguments.
  93     """
  94 
  95     return _DEFAULT_POOL.request(method, url, fields=fields, headers=headers)
  96
  [end of src/urllib3/__init__.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/src/urllib3/__init__.py b/src/urllib3/__init__.py
  --- a/src/urllib3/__init__.py
  +++ b/src/urllib3/__init__.py
  @@ -8,6 +8,7 @@
   from logging import NullHandler
   
   from . import exceptions
  +from ._collections import HTTPHeaderDict
   from ._version import __version__
   from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
   from .filepost import encode_multipart_formdata
  @@ -23,6 +24,7 @@
   
   __all__ = (
       "HTTPConnectionPool",
  +    "HTTPHeaderDict",
       "HTTPSConnectionPool",
       "PoolManager",
       "ProxyManager",
  
verification_info: {"golden_diff": "diff --git a/src/urllib3/__init__.py b/src/urllib3/__init__.py\n--- a/src/urllib3/__init__.py\n+++ b/src/urllib3/__init__.py\n@@ -8,6 +8,7 @@\n from logging import NullHandler\n \n from . import exceptions\n+from ._collections import HTTPHeaderDict\n from ._version import __version__\n from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url\n from .filepost import encode_multipart_formdata\n@@ -23,6 +24,7 @@\n \n __all__ = (\n     \"HTTPConnectionPool\",\n+    \"HTTPHeaderDict\",\n     \"HTTPSConnectionPool\",\n     \"PoolManager\",\n     \"ProxyManager\",\n", "issue": "Is HTTPHeaderDict a public API to make requests?\n`HTTPHeaderDict` was initially designed to handle response headers, and is not documented for request headers.\r\n\r\n * Should it be documented?\r\n * How should it be imported? The current options are `from urllib3.response import HTTPHeaderDict` and `from urllib3._collections import HTTPHeaderDict`, and they don't feel right.\n", "before_files": [{"content": "\"\"\"\nPython HTTP library with thread-safe connection pooling, file post support, user friendly, and more\n\"\"\"\n\n# Set default logging handler to avoid \"No handler found\" warnings.\nimport logging\nimport warnings\nfrom logging import NullHandler\n\nfrom . import exceptions\nfrom ._version import __version__\nfrom .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url\nfrom .filepost import encode_multipart_formdata\nfrom .poolmanager import PoolManager, ProxyManager, proxy_from_url\nfrom .response import HTTPResponse\nfrom .util.request import make_headers\nfrom .util.retry import Retry\nfrom .util.timeout import Timeout\n\n__author__ = \"Andrey Petrov (andrey.petrov@shazow.net)\"\n__license__ = \"MIT\"\n__version__ = __version__\n\n__all__ = (\n    \"HTTPConnectionPool\",\n    \"HTTPSConnectionPool\",\n    \"PoolManager\",\n    \"ProxyManager\",\n    \"HTTPResponse\",\n    \"Retry\",\n    \"Timeout\",\n    \"add_stderr_logger\",\n    \"connection_from_url\",\n    \"disable_warnings\",\n    \"encode_multipart_formdata\",\n    \"make_headers\",\n    \"proxy_from_url\",\n    \"request\",\n)\n\nlogging.getLogger(__name__).addHandler(NullHandler())\n\n\ndef add_stderr_logger(level=logging.DEBUG):\n    \"\"\"\n    Helper for quickly adding a StreamHandler to the logger. Useful for\n    debugging.\n\n    Returns the handler after adding it.\n    \"\"\"\n    # This method needs to be in this __init__.py to get the __name__ correct\n    # even if urllib3 is vendored within another package.\n    logger = logging.getLogger(__name__)\n    handler = logging.StreamHandler()\n    handler.setFormatter(logging.Formatter(\"%(asctime)s %(levelname)s %(message)s\"))\n    logger.addHandler(handler)\n    logger.setLevel(level)\n    logger.debug(\"Added a stderr logging handler to logger: %s\", __name__)\n    return handler\n\n\n# ... Clean up.\ndel NullHandler\n\n\n# All warning filters *must* be appended unless you're really certain that they\n# shouldn't be: otherwise, it's very hard for users to use most Python\n# mechanisms to silence them.\n# SecurityWarning's always go off by default.\nwarnings.simplefilter(\"always\", exceptions.SecurityWarning, append=True)\n# InsecurePlatformWarning's don't vary between requests, so we keep it default.\nwarnings.simplefilter(\"default\", exceptions.InsecurePlatformWarning, append=True)\n# SNIMissingWarnings should go off only once.\nwarnings.simplefilter(\"default\", exceptions.SNIMissingWarning, append=True)\n\n\ndef disable_warnings(category=exceptions.HTTPWarning):\n    \"\"\"\n    Helper for quickly disabling all urllib3 warnings.\n    \"\"\"\n    warnings.simplefilter(\"ignore\", category)\n\n\n_DEFAULT_POOL = PoolManager()\n\n\ndef request(method, url, fields=None, headers=None):\n    \"\"\"\n    A convenience, top-level request method. It uses a module-global ``PoolManager`` instance.\n    Therefore, its side effects could be shared across dependencies relying on it.\n    To avoid side effects create a new ``PoolManager`` instance and use it instead.\n    The method does not accept low-level ``**urlopen_kw`` keyword arguments.\n    \"\"\"\n\n    return _DEFAULT_POOL.request(method, url, fields=fields, headers=headers)\n", "path": "src/urllib3/__init__.py"}]}