diff --git a/dvc/cli.py b/dvc/cli.py index 4e4bae560..fda8c4bef 100644 --- a/dvc/cli.py +++ b/dvc/cli.py @@ -12,7 +12,6 @@ from dvc.command.remove import CmdRemove from dvc.command.run import CmdRun from dvc.command.repro import CmdRepro from dvc.command.data_sync import CmdDataPush, CmdDataPull, CmdDataStatus -from dvc.command.lock import CmdLock from dvc.command.gc import CmdGC from dvc.command.add import CmdAdd from dvc.command.show_workflow import CmdShowWorkflow @@ -100,11 +99,6 @@ def parse_args(argv=None): action='append', default=[], help='Declare output regular file (sync to Git) for reproducible cmd.') - run_parser.add_argument('-l', - '--lock', - action='store_true', - default=False, - help='Lock data item - disable reproduction.') run_parser.add_argument('-f', '--file', help='Specify name of the state file') @@ -197,23 +191,6 @@ def parse_args(argv=None): help='Input files/directories') import_parser.set_defaults(func=CmdAdd) - # Lock - lock_parser = subparsers.add_parser( - 'lock', - parents=[parent_parser], - help='Lock') - lock_parser.add_argument('-u', - '--unlock', - action='store_true', - default=False, - help='Unlock stage - enable reproduction.') - lock_parser.add_argument( - 'files', - nargs='*', - default=[Stage.STAGE_FILE], - help='Stages to lock or unlock.') - lock_parser.set_defaults(func=CmdLock) - # Garbage collector gc_parser = subparsers.add_parser( 'gc', diff --git a/dvc/command/lock.py b/dvc/command/lock.py deleted file mode 100644 index 66722b910..000000000 --- a/dvc/command/lock.py +++ /dev/null @@ -1,27 +0,0 @@ -from dvc.command.common.base import CmdBase -from dvc.stage import Stage - - -class CmdLock(CmdBase): - def run(self): - lock = not self.args.unlock - cmd = 'lock' if lock else 'unlock' - ret = 0 - for file in self.args.files: - try: - stage = Stage.load(self.project, file) - - if stage.locked and lock: - self.project.logger.warn('Stage {} is already locked'.format(file)) - elif not stage.locked and not lock: - self.project.logger.warn('Stage {} is already unlocked'.format(file)) - else: - stage.locked = lock - self.project.logger.debug('Saving stage file {}'.format(file)) - stage.dump() - self.project.logger.info('Stage {} was {}ed'.format(file, cmd)) - except Exception as ex: - ret = 1 - self.project.logger.error('Unable to {} {}: {}'.format(cmd, file, ex)) - - return ret diff --git a/dvc/command/run.py b/dvc/command/run.py index e97ca81d6..1abfb5947 100644 --- a/dvc/command/run.py +++ b/dvc/command/run.py @@ -15,7 +15,6 @@ class CmdRun(CmdBase): outs=self.args.outs, outs_no_cache=self.args.outs_no_cache, deps=self.args.deps, - locked=self.args.lock, fname=fname, cwd=self.args.cwd, no_exec=self.args.no_exec) diff --git a/dvc/project.py b/dvc/project.py index 2a5c68ab5..c6c076662 100644 --- a/dvc/project.py +++ b/dvc/project.py @@ -125,8 +125,7 @@ class Project(object): cmd=None, cwd=cwd, outs=outputs, - deps=[], - locked=True) + deps=[]) stage.save() stage.dump() return stage @@ -152,7 +151,6 @@ class Project(object): deps=[], outs=[], outs_no_cache=[], - locked=False, fname=Stage.STAGE_FILE, cwd=os.curdir, no_exec=False): @@ -167,8 +165,7 @@ class Project(object): cmd=cmd, cwd=cwd, outs=outputs, - deps=deps, - locked=locked) + deps=deps) if not no_exec: stage.run() stage.dump() diff --git a/dvc/stage.py b/dvc/stage.py index ffbf21be5..e68016208 100644 --- a/dvc/stage.py +++ b/dvc/stage.py @@ -250,16 +250,14 @@ class Stage(object): PARAM_CMD = 'cmd' PARAM_DEPS = 'deps' PARAM_OUTS = 'outs' - PARAM_LOCKED = 'locked' - def __init__(self, project, path=None, cmd=None, cwd=None, deps=[], outs=[], locked=False): + def __init__(self, project, path=None, cmd=None, cwd=None, deps=[], outs=[]): self.project = project self.path = path self.cmd = cmd self.cwd = cwd self.outs = outs self.deps = deps - self.locked = locked @property def relpath(self): @@ -315,15 +313,13 @@ class Stage(object): cmd = d[Stage.PARAM_CMD] deps = Dependency.loadd_from(project, d[Stage.PARAM_DEPS], cwd=cwd) outs = Output.loadd_from(project, d[Stage.PARAM_OUTS], cwd=cwd) - locked = d[Stage.PARAM_LOCKED] return Stage(project=project, path=path, cmd=cmd, cwd=cwd, deps=deps, - outs=outs, - locked=locked) + outs=outs) @staticmethod def load(project, fname): @@ -338,7 +334,6 @@ class Stage(object): Stage.PARAM_CMD: self.cmd, Stage.PARAM_DEPS: deps, Stage.PARAM_OUTS: outs, - Stage.PARAM_LOCKED: self.locked } def dump(self, fname=None): diff --git a/tests/test_add.py b/tests/test_add.py index 3de517896..17a51f172 100644 --- a/tests/test_add.py +++ b/tests/test_add.py @@ -23,7 +23,6 @@ class TestAdd(TestDvc): self.assertTrue(os.path.isfile(stage.path)) self.assertEqual(len(stage.outs), 1) self.assertEqual(len(stage.deps), 0) - self.assertTrue(stage.locked) self.assertEqual(stage.cmd, None) self.assertEqual(stage.outs[0].md5, md5) diff --git a/tests/test_cli.py b/tests/test_cli.py index 4481b605c..143c68c1b 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -7,7 +7,6 @@ from dvc.command.data_sync import CmdDataPull, CmdDataPush, CmdDataStatus from dvc.command.repro import CmdRepro from dvc.command.add import CmdAdd from dvc.command.remove import CmdRemove -from dvc.command.lock import CmdLock from dvc.command.gc import CmdGC from dvc.command.config import CmdConfig from dvc.command.show_pipeline import CmdShowPipeline @@ -49,7 +48,6 @@ class TestRun(TestDvc): '--outs', out2, '-O', out_no_cache1, '--outs-no-cache', out_no_cache2, - '-l', '--lock', '-f', fname, '--file', fname, '-c', cwd, @@ -125,21 +123,6 @@ class TestAdd(TestDvc): self.assertEqual(args.targets, [target1, target2]) -class TestLock(TestDvc): - def test(self): - target1 = '1' - target2 = '2' - - args = parse_args(['lock', - target1, - target2, - '-u', '--unlock']) - - self.assertIsInstance(args.func(args), CmdLock) - self.assertEqual(args.files, [target1, target2]) - self.assertEqual(args.unlock, True) - - class TestGC(TestDvc): def test(self): args = parse_args(['gc']) diff --git a/tests/test_cmd_lock.py b/tests/test_cmd_lock.py deleted file mode 100644 index 7d2a5e10d..000000000 --- a/tests/test_cmd_lock.py +++ /dev/null @@ -1,33 +0,0 @@ -from dvc.main import main -from dvc.stage import Stage - -from tests.test_repro import TestRepro - - -class TestCmdLock(TestRepro): - def test_lock(self): - ret = main(['lock', - self.file1_stage]) - stage = Stage.load(self.dvc, self.file1_stage) - self.assertEqual(ret, 0) - self.assertTrue(stage.locked) - - def test_unlock(self): - ret = main(['lock', - '-u', - self.file1_stage]) - stage = Stage.load(self.dvc, self.file1_stage) - self.assertEqual(ret, 0) - self.assertFalse(stage.locked) - - def test_twice(self): - self.test_lock() - self.test_lock() - - self.test_unlock() - self.test_unlock() - - def test_non_existing(self): - ret = main(['lock', - 'non-existing-file']) - self.assertNotEqual(ret, 0) diff --git a/tests/test_run.py b/tests/test_run.py index 7a4957546..1294af44c 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -15,7 +15,6 @@ class TestRun(TestDvc): deps = [self.FOO, self.CODE] outs = [os.path.join(self.dvc.root_dir, 'out')] outs_no_cache = [] - locked = False fname = os.path.join(self.dvc.root_dir, 'out.dvc') cwd = os.curdir @@ -24,7 +23,6 @@ class TestRun(TestDvc): deps=deps, outs=outs, outs_no_cache=outs_no_cache, - locked=locked, fname=fname, cwd=cwd) @@ -35,7 +33,6 @@ class TestRun(TestDvc): self.assertEqual(len(stage.outs), len(outs + outs_no_cache)) self.assertEqual(stage.outs[0].path, outs[0]) self.assertEqual(stage.outs[0].md5, file_md5(self.FOO)[0]) - self.assertEqual(stage.locked, locked) self.assertTrue(stage.path, fname) @@ -45,7 +42,6 @@ class TestRunEmpty(TestDvc): deps=[], outs=[], outs_no_cache=[], - locked=False, fname='empty.dvc', cwd=os.curdir)