Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

migrator.py 1.9 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  1. import argparse
  2. import logging
  3. import os
  4. logger = logging.getLogger(__name__)
  5. logger.setLevel(logging.INFO)
  6. def _get_repo():
  7. from dvc.repo import Repo
  8. return Repo()
  9. def migrate(dvc, path, name):
  10. from dvc.dvcfile import SingleStageFile, PipelineFile
  11. dvcfile = SingleStageFile(dvc, path)
  12. stage = dvcfile.stage
  13. stage.name = name
  14. p_file = PipelineFile(dvc, "dvc.yaml")
  15. # using internal APIs, there are checks on `dump()`.
  16. p_file._dump_pipeline_file(stage)
  17. p_file._dump_lockfile(stage)
  18. logger.info("'{}' has been added to 'dvc.yaml' and 'dvc.lock'.")
  19. os.rename(dvcfile.path, dvcfile.path + ".bak")
  20. logger.info("'{0}' has been renamed to '{0}.bak'.".format(dvcfile.path))
  21. logger.info(
  22. "Delete it after carefully reviewing"
  23. " 'dvc.lock' and 'dvc.yaml' or use it to rollback."
  24. )
  25. def rollback(dvc, path, name):
  26. from dvc.utils.stage import dump_stage_file
  27. from dvc.dvcfile import PipelineFile
  28. dvcfile = PipelineFile(dvc, "dvc.yaml")
  29. stage = dvcfile.stages[name]
  30. dump_stage_file(path, stage.dumpd())
  31. # don't have an API for removing entry.
  32. logger.warning(
  33. "Please remove entries regarding '{name}' from 'dvc.yaml' and 'dvc.lock'.".format(
  34. name=name
  35. )
  36. )
  37. if __name__ == "__main__":
  38. ### Usage: ./migrator.py <dot-dvc-file> <stage_name>
  39. ### ./migrator.py featurize.dvc featurize
  40. parser = argparse.ArgumentParser()
  41. parser.add_argument("-r", "--rollback", action="store_true")
  42. parser.add_argument(
  43. "path", help="Path to dvcfile (to output in terms of rollback)"
  44. )
  45. parser.add_argument(
  46. "name", help="Name of stage to output (to use in terms of rollback)"
  47. )
  48. args = parser.parse_args()
  49. repo = _get_repo()
  50. if args.rollback:
  51. rollback(repo, args.path, args.name)
  52. else:
  53. migrate(repo, args.path, args.name)
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...