prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Add docs for new pip debug command
  This is a follow-up issue to PR #6638 to add docs for the new `pip debug` command. As @xavfernandez said in [this comment](https://github.com/pypa/pip/pull/6638#pullrequestreview-256090004):
  
  > It would also need basic documentation (at least a `docs/html/reference/pip_debug.rst`) and most importantly (IMHO), strongly emphasize that the output and the options of this command are provisional and might change without notice.
  
  
  
  
  </issue>
  <code>
  [start of src/pip/_internal/commands/debug.py]
  1 from __future__ import absolute_import
  2 
  3 import logging
  4 import sys
  5 
  6 from pip._internal.cli import cmdoptions
  7 from pip._internal.cli.base_command import Command
  8 from pip._internal.cli.cmdoptions import make_target_python
  9 from pip._internal.cli.status_codes import SUCCESS
  10 from pip._internal.utils.logging import indent_log
  11 from pip._internal.utils.misc import get_pip_version
  12 from pip._internal.utils.typing import MYPY_CHECK_RUNNING
  13 from pip._internal.wheel import format_tag
  14 
  15 if MYPY_CHECK_RUNNING:
  16     from typing import Any, List
  17     from optparse import Values
  18 
  19 logger = logging.getLogger(__name__)
  20 
  21 
  22 def show_value(name, value):
  23     # type: (str, str) -> None
  24     logger.info('{}: {}'.format(name, value))
  25 
  26 
  27 def show_sys_implementation():
  28     # type: () -> None
  29     logger.info('sys.implementation:')
  30     if hasattr(sys, 'implementation'):
  31         implementation = sys.implementation  # type: ignore
  32         implementation_name = implementation.name
  33     else:
  34         implementation_name = ''
  35 
  36     with indent_log():
  37         show_value('name', implementation_name)
  38 
  39 
  40 def show_tags(options):
  41     # type: (Values) -> None
  42     tag_limit = 10
  43 
  44     target_python = make_target_python(options)
  45     tags = target_python.get_tags()
  46 
  47     # Display the target options that were explicitly provided.
  48     formatted_target = target_python.format_given()
  49     suffix = ''
  50     if formatted_target:
  51         suffix = ' (target: {})'.format(formatted_target)
  52 
  53     msg = 'Compatible tags: {}{}'.format(len(tags), suffix)
  54     logger.info(msg)
  55 
  56     if options.verbose < 1 and len(tags) > tag_limit:
  57         tags_limited = True
  58         tags = tags[:tag_limit]
  59     else:
  60         tags_limited = False
  61 
  62     with indent_log():
  63         for tag in tags:
  64             logger.info(format_tag(tag))
  65 
  66         if tags_limited:
  67             msg = (
  68                 '...\n'
  69                 '[First {tag_limit} tags shown. Pass --verbose to show all.]'
  70             ).format(tag_limit=tag_limit)
  71             logger.info(msg)
  72 
  73 
  74 class DebugCommand(Command):
  75     """
  76     Display debug information.
  77     """
  78 
  79     name = 'debug'
  80     usage = """
  81       %prog <options>"""
  82     summary = 'Show information useful for debugging.'
  83     ignore_require_venv = True
  84 
  85     def __init__(self, *args, **kw):
  86         super(DebugCommand, self).__init__(*args, **kw)
  87 
  88         cmd_opts = self.cmd_opts
  89         cmdoptions.add_target_python_options(cmd_opts)
  90         self.parser.insert_option_group(0, cmd_opts)
  91 
  92     def run(self, options, args):
  93         # type: (Values, List[Any]) -> int
  94         show_value('pip version', get_pip_version())
  95         show_value('sys.version', sys.version)
  96         show_value('sys.executable', sys.executable)
  97         show_value('sys.platform', sys.platform)
  98         show_sys_implementation()
  99 
  100         show_tags(options)
  101 
  102         return SUCCESS
  103
  [end of src/pip/_internal/commands/debug.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/pip/_internal/commands/debug.py b/src/pip/_internal/commands/debug.py
  --- a/src/pip/_internal/commands/debug.py
  +++ b/src/pip/_internal/commands/debug.py
  @@ -91,6 +91,12 @@
   
       def run(self, options, args):
           # type: (Values, List[Any]) -> int
  +        logger.warning(
  +            "This command is only meant for debugging. "
  +            "Do not use this with automation for parsing and getting these "
  +            "details, since the output and options of this command may "
  +            "change without notice."
  +        )
           show_value('pip version', get_pip_version())
           show_value('sys.version', sys.version)
           show_value('sys.executable', sys.executable)
  
verification_info: {"golden_diff": "diff --git a/src/pip/_internal/commands/debug.py b/src/pip/_internal/commands/debug.py\n--- a/src/pip/_internal/commands/debug.py\n+++ b/src/pip/_internal/commands/debug.py\n@@ -91,6 +91,12 @@\n \n     def run(self, options, args):\n         # type: (Values, List[Any]) -> int\n+        logger.warning(\n+            \"This command is only meant for debugging. \"\n+            \"Do not use this with automation for parsing and getting these \"\n+            \"details, since the output and options of this command may \"\n+            \"change without notice.\"\n+        )\n         show_value('pip version', get_pip_version())\n         show_value('sys.version', sys.version)\n         show_value('sys.executable', sys.executable)\n", "issue": "Add docs for new pip debug command\nThis is a follow-up issue to PR #6638 to add docs for the new `pip debug` command. As @xavfernandez said in [this comment](https://github.com/pypa/pip/pull/6638#pullrequestreview-256090004):\r\n\r\n> It would also need basic documentation (at least a `docs/html/reference/pip_debug.rst`) and most importantly (IMHO), strongly emphasize that the output and the options of this command are provisional and might change without notice.\r\n\r\n\r\n\n", "before_files": [{"content": "from __future__ import absolute_import\n\nimport logging\nimport sys\n\nfrom pip._internal.cli import cmdoptions\nfrom pip._internal.cli.base_command import Command\nfrom pip._internal.cli.cmdoptions import make_target_python\nfrom pip._internal.cli.status_codes import SUCCESS\nfrom pip._internal.utils.logging import indent_log\nfrom pip._internal.utils.misc import get_pip_version\nfrom pip._internal.utils.typing import MYPY_CHECK_RUNNING\nfrom pip._internal.wheel import format_tag\n\nif MYPY_CHECK_RUNNING:\n    from typing import Any, List\n    from optparse import Values\n\nlogger = logging.getLogger(__name__)\n\n\ndef show_value(name, value):\n    # type: (str, str) -> None\n    logger.info('{}: {}'.format(name, value))\n\n\ndef show_sys_implementation():\n    # type: () -> None\n    logger.info('sys.implementation:')\n    if hasattr(sys, 'implementation'):\n        implementation = sys.implementation  # type: ignore\n        implementation_name = implementation.name\n    else:\n        implementation_name = ''\n\n    with indent_log():\n        show_value('name', implementation_name)\n\n\ndef show_tags(options):\n    # type: (Values) -> None\n    tag_limit = 10\n\n    target_python = make_target_python(options)\n    tags = target_python.get_tags()\n\n    # Display the target options that were explicitly provided.\n    formatted_target = target_python.format_given()\n    suffix = ''\n    if formatted_target:\n        suffix = ' (target: {})'.format(formatted_target)\n\n    msg = 'Compatible tags: {}{}'.format(len(tags), suffix)\n    logger.info(msg)\n\n    if options.verbose < 1 and len(tags) > tag_limit:\n        tags_limited = True\n        tags = tags[:tag_limit]\n    else:\n        tags_limited = False\n\n    with indent_log():\n        for tag in tags:\n            logger.info(format_tag(tag))\n\n        if tags_limited:\n            msg = (\n                '...\\n'\n                '[First {tag_limit} tags shown. Pass --verbose to show all.]'\n            ).format(tag_limit=tag_limit)\n            logger.info(msg)\n\n\nclass DebugCommand(Command):\n    \"\"\"\n    Display debug information.\n    \"\"\"\n\n    name = 'debug'\n    usage = \"\"\"\n      %prog <options>\"\"\"\n    summary = 'Show information useful for debugging.'\n    ignore_require_venv = True\n\n    def __init__(self, *args, **kw):\n        super(DebugCommand, self).__init__(*args, **kw)\n\n        cmd_opts = self.cmd_opts\n        cmdoptions.add_target_python_options(cmd_opts)\n        self.parser.insert_option_group(0, cmd_opts)\n\n    def run(self, options, args):\n        # type: (Values, List[Any]) -> int\n        show_value('pip version', get_pip_version())\n        show_value('sys.version', sys.version)\n        show_value('sys.executable', sys.executable)\n        show_value('sys.platform', sys.platform)\n        show_sys_implementation()\n\n        show_tags(options)\n\n        return SUCCESS\n", "path": "src/pip/_internal/commands/debug.py"}]}