Repository: iterative/dvc

Issue:
repro -s fails in dvc-0.53.2
In dvc version `0.53.2`, command `dvc repro -sf stage.dvc` fails on any stage:

```
(base) ➜  dvc-example git:(master) ✗ dvc repro -sf test.txt.dvc --verbose
DEBUG: Trying to spawn '['/Users/prihodad/anaconda3/bin/python', '-m', 'dvc', 'daemon', '-q', 'updater']'
DEBUG: Spawned '['/Users/prihodad/anaconda3/bin/python', '-m', 'dvc', 'daemon', '-q', 'updater']'
DEBUG: PRAGMA user_version;
DEBUG: fetched: [(3,)]
DEBUG: CREATE TABLE IF NOT EXISTS state (inode INTEGER PRIMARY KEY, mtime TEXT NOT NULL, size TEXT NOT NULL, md5 TEXT NOT NULL, timestamp TEXT NOT NULL)
DEBUG: CREATE TABLE IF NOT EXISTS state_info (count INTEGER)
DEBUG: CREATE TABLE IF NOT EXISTS link_state (path TEXT PRIMARY KEY, inode INTEGER NOT NULL, mtime TEXT NOT NULL)
DEBUG: INSERT OR IGNORE INTO state_info (count) SELECT 0 WHERE NOT EXISTS (SELECT * FROM state_info)
DEBUG: PRAGMA user_version = 3;
Reproducing 'test.txt.dvc'
DEBUG: SELECT count from state_info WHERE rowid=?
DEBUG: fetched: [(8,)]
DEBUG: UPDATE state_info SET count = ? WHERE rowid = ?
ERROR: unexpected error - run() got an unexpected keyword argument 'ignore_build_cache'
------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/main.py", line 40, in main
    ret = cmd.run_cmd()
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/command/base.py", line 63, in run_cmd
    return self.run()
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/command/repro.py", line 42, in run
    recursive=self.args.recursive,
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/repo/scm_context.py", line 4, in run
    result = method(repo, *args, **kw)
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/repo/reproduce.py", line 80, in reproduce
    stages = _reproduce(self, target, **kwargs)
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/repo/reproduce.py", line 96, in _reproduce
    ret = _reproduce_stage(stages, node, **kwargs)
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/repo/reproduce.py", line 22, in _reproduce_stage
    stage = stage.reproduce(**kwargs)
  File "/Users/prihodad/anaconda3/lib/python3.6/site-packages/dvc/stage.py", line 331, in reproduce
    self.run(**kwargs)
TypeError: run() got an unexpected keyword argument 'ignore_build_cache'
------------------------------------------------------------
```


Discussion:
Reproducing:

```
mkdir dvc-example
cd dvc-example
git init
pip install dvc==0.53.2
dvc init
dvc run -o test.txt touch test.txt
dvc repro -sf test.txt
```
@prihoda Thank you so much for reporting this! Preparing a fix right now.

Resolving patch:
diff --git a/dvc/repo/reproduce.py b/dvc/repo/reproduce.py
--- a/dvc/repo/reproduce.py
+++ b/dvc/repo/reproduce.py
@@ -83,7 +83,7 @@ def reproduce(
     return ret
 
 
-def _reproduce(self, target, single_item=False, **kwargs):
+def _reproduce(self, target, **kwargs):
     import networkx as nx
     from dvc.stage import Stage
 
@@ -92,16 +92,17 @@ def _reproduce(self, target, single_item=False, **kwargs):
     stages = nx.get_node_attributes(G, "stage")
     node = relpath(stage.path, self.root_dir)
 
-    if single_item:
-        ret = _reproduce_stage(stages, node, **kwargs)
-    else:
-        ret = _reproduce_stages(G, stages, node, **kwargs)
-
-    return ret
+    return _reproduce_stages(G, stages, node, **kwargs)
 
 
 def _reproduce_stages(
-    G, stages, node, downstream=False, ignore_build_cache=False, **kwargs
+    G,
+    stages,
+    node,
+    downstream=False,
+    ignore_build_cache=False,
+    single_item=False,
+    **kwargs
 ):
     r"""Derive the evaluation of the given node for the given graph.
 
@@ -140,7 +141,9 @@ def _reproduce_stages(
 
     import networkx as nx
 
-    if downstream:
+    if single_item:
+        pipeline = [node]
+    elif downstream:
         # NOTE (py3 only):
         # Python's `deepcopy` defaults to pickle/unpickle the object.
         # Stages are complex objects (with references to `repo`, `outs`,


Test patch: