mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-09 23:10:24 +01:00
dvc: remove lock
As discussed with @dmpetrov, we don't really see a good usage scenario for this and thus removing it from dvc. Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
-23
@@ -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',
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
+2
-5
@@ -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()
|
||||
|
||||
+2
-7
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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'])
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user