prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  dvc remove CLI documentation inconsistency
  `dvc remove` (without `targets`) prints help which states that `targets` are optional, and if not specified will remove all DVC-files. Clearly not the case.
  
  ```bash
  $ dvc remove
  [...]
    targets        DVC-files to remove. Optional. (Finds all DVC-files in the
                   workspace by default.)
  ```
  
  </issue>
  <code>
  [start of dvc/command/remove.py]
  1 from __future__ import unicode_literals
  2 
  3 import argparse
  4 import logging
  5 
  6 import dvc.prompt as prompt
  7 from dvc.exceptions import DvcException
  8 from dvc.command.base import CmdBase, append_doc_link
  9 
  10 
  11 logger = logging.getLogger(__name__)
  12 
  13 
  14 class CmdRemove(CmdBase):
  15     def _is_outs_only(self, target):
  16         if not self.args.purge:
  17             return True
  18 
  19         if self.args.force:
  20             return False
  21 
  22         msg = "Are you sure you want to remove {} with its outputs?".format(
  23             target
  24         )
  25 
  26         if prompt.confirm(msg):
  27             return False
  28 
  29         raise DvcException(
  30             "Cannot purge without a confirmation from the user."
  31             " Use '-f' to force."
  32         )
  33 
  34     def run(self):
  35         for target in self.args.targets:
  36             try:
  37                 outs_only = self._is_outs_only(target)
  38                 self.repo.remove(target, outs_only=outs_only)
  39             except DvcException:
  40                 logger.exception("failed to remove {}".format(target))
  41                 return 1
  42         return 0
  43 
  44 
  45 def add_parser(subparsers, parent_parser):
  46     REMOVE_HELP = "Remove DVC-file outputs."
  47     remove_parser = subparsers.add_parser(
  48         "remove",
  49         parents=[parent_parser],
  50         description=append_doc_link(REMOVE_HELP, "remove"),
  51         help=REMOVE_HELP,
  52         formatter_class=argparse.RawDescriptionHelpFormatter,
  53     )
  54     remove_parser_group = remove_parser.add_mutually_exclusive_group()
  55     remove_parser_group.add_argument(
  56         "-o",
  57         "--outs",
  58         action="store_true",
  59         default=True,
  60         help="Only remove DVC-file outputs. (Default)",
  61     )
  62     remove_parser_group.add_argument(
  63         "-p",
  64         "--purge",
  65         action="store_true",
  66         default=False,
  67         help="Remove DVC-file and all its outputs.",
  68     )
  69     remove_parser.add_argument(
  70         "-f",
  71         "--force",
  72         action="store_true",
  73         default=False,
  74         help="Force purge.",
  75     )
  76     remove_parser.add_argument(
  77         "targets",
  78         nargs="+",
  79         help="DVC-files to remove. Optional. "
  80         "(Finds all DVC-files in the workspace by default.)",
  81     )
  82     remove_parser.set_defaults(func=CmdRemove)
  83
  [end of dvc/command/remove.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/dvc/command/remove.py b/dvc/command/remove.py
  --- a/dvc/command/remove.py
  +++ b/dvc/command/remove.py
  @@ -74,9 +74,6 @@
           help="Force purge.",
       )
       remove_parser.add_argument(
  -        "targets",
  -        nargs="+",
  -        help="DVC-files to remove. Optional. "
  -        "(Finds all DVC-files in the workspace by default.)",
  +        "targets", nargs="+", help="DVC-files to remove."
       )
       remove_parser.set_defaults(func=CmdRemove)
  
verification_info: {"golden_diff": "diff --git a/dvc/command/remove.py b/dvc/command/remove.py\n--- a/dvc/command/remove.py\n+++ b/dvc/command/remove.py\n@@ -74,9 +74,6 @@\n         help=\"Force purge.\",\n     )\n     remove_parser.add_argument(\n-        \"targets\",\n-        nargs=\"+\",\n-        help=\"DVC-files to remove. Optional. \"\n-        \"(Finds all DVC-files in the workspace by default.)\",\n+        \"targets\", nargs=\"+\", help=\"DVC-files to remove.\"\n     )\n     remove_parser.set_defaults(func=CmdRemove)\n", "issue": "dvc remove CLI documentation inconsistency\n`dvc remove` (without `targets`) prints help which states that `targets` are optional, and if not specified will remove all DVC-files. Clearly not the case.\r\n\r\n```bash\r\n$ dvc remove\r\n[...]\r\n  targets        DVC-files to remove. Optional. (Finds all DVC-files in the\r\n                 workspace by default.)\r\n```\n", "before_files": [{"content": "from __future__ import unicode_literals\n\nimport argparse\nimport logging\n\nimport dvc.prompt as prompt\nfrom dvc.exceptions import DvcException\nfrom dvc.command.base import CmdBase, append_doc_link\n\n\nlogger = logging.getLogger(__name__)\n\n\nclass CmdRemove(CmdBase):\n    def _is_outs_only(self, target):\n        if not self.args.purge:\n            return True\n\n        if self.args.force:\n            return False\n\n        msg = \"Are you sure you want to remove {} with its outputs?\".format(\n            target\n        )\n\n        if prompt.confirm(msg):\n            return False\n\n        raise DvcException(\n            \"Cannot purge without a confirmation from the user.\"\n            \" Use '-f' to force.\"\n        )\n\n    def run(self):\n        for target in self.args.targets:\n            try:\n                outs_only = self._is_outs_only(target)\n                self.repo.remove(target, outs_only=outs_only)\n            except DvcException:\n                logger.exception(\"failed to remove {}\".format(target))\n                return 1\n        return 0\n\n\ndef add_parser(subparsers, parent_parser):\n    REMOVE_HELP = \"Remove DVC-file outputs.\"\n    remove_parser = subparsers.add_parser(\n        \"remove\",\n        parents=[parent_parser],\n        description=append_doc_link(REMOVE_HELP, \"remove\"),\n        help=REMOVE_HELP,\n        formatter_class=argparse.RawDescriptionHelpFormatter,\n    )\n    remove_parser_group = remove_parser.add_mutually_exclusive_group()\n    remove_parser_group.add_argument(\n        \"-o\",\n        \"--outs\",\n        action=\"store_true\",\n        default=True,\n        help=\"Only remove DVC-file outputs. (Default)\",\n    )\n    remove_parser_group.add_argument(\n        \"-p\",\n        \"--purge\",\n        action=\"store_true\",\n        default=False,\n        help=\"Remove DVC-file and all its outputs.\",\n    )\n    remove_parser.add_argument(\n        \"-f\",\n        \"--force\",\n        action=\"store_true\",\n        default=False,\n        help=\"Force purge.\",\n    )\n    remove_parser.add_argument(\n        \"targets\",\n        nargs=\"+\",\n        help=\"DVC-files to remove. Optional. \"\n        \"(Finds all DVC-files in the workspace by default.)\",\n    )\n    remove_parser.set_defaults(func=CmdRemove)\n", "path": "dvc/command/remove.py"}]}