1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, fetchpatch
5, pythonOlder
6, pythonRelaxDepsHook
7, setuptools-scm
8, appdirs
9, colorama
10, configobj
11, distro
12, dpath
13, dvc-azure
14, dvc-data
15, dvc-gs
16, dvc-http
17, dvc-render
18, dvc-s3
19, dvc-ssh
20, dvc-studio-client
21, dvc-task
22, flatten-dict
23, flufl_lock
24, funcy
25, grandalf
26, hydra-core
27, importlib-metadata
28, importlib-resources
29, iterative-telemetry
30, networkx
31, packaging
32, pathspec
33, platformdirs
34, psutil
35, pydot
36, pygtrie
37, pyparsing
38, requests
39, rich
40, ruamel-yaml
41, scmrepo
42, shortuuid
43, shtab
44, tabulate
45, tomlkit
46, tqdm
47, typing-extensions
48, voluptuous
49, zc_lockfile
50, enableGoogle ? false
51, enableAWS ? false
52, enableAzure ? false
53, enableSSH ? false
54}:
55
56buildPythonPackage rec {
57 pname = "dvc";
58 version = "3.30.1";
59 format = "pyproject";
60
61 src = fetchFromGitHub {
62 owner = "iterative";
63 repo = pname;
64 rev = "refs/tags/${version}";
65 hash = "sha256-UFAqcO6SG/1ufzylrNuOpJaH2hlIo0ZkSLEfxi8OqLw=";
66 };
67
68 pythonRelaxDeps = [
69 "dvc-data"
70 "platformdirs"
71 ];
72
73 postPatch = ''
74 substituteInPlace dvc/analytics.py --replace 'enabled = not os.getenv(DVC_NO_ANALYTICS)' 'enabled = False'
75 substituteInPlace dvc/daemon.py \
76 --subst-var-by dvc "$out/bin/dcv"
77 '';
78
79 nativeBuildInputs = [
80 pythonRelaxDepsHook
81 setuptools-scm
82 ];
83
84 propagatedBuildInputs = [
85 appdirs
86 colorama
87 configobj
88 distro
89 dpath
90 dvc-data
91 dvc-http
92 dvc-render
93 dvc-studio-client
94 dvc-task
95 flatten-dict
96 flufl_lock
97 funcy
98 grandalf
99 hydra-core
100 iterative-telemetry
101 networkx
102 packaging
103 pathspec
104 platformdirs
105 psutil
106 pydot
107 pygtrie
108 pyparsing
109 requests
110 rich
111 ruamel-yaml
112 scmrepo
113 shortuuid
114 shtab
115 tabulate
116 tomlkit
117 tqdm
118 typing-extensions
119 voluptuous
120 zc_lockfile
121 ]
122 ++ lib.optionals enableGoogle passthru.optional-dependencies.gs
123 ++ lib.optionals enableAWS passthru.optional-dependencies.s3
124 ++ lib.optionals enableAzure passthru.optional-dependencies.azure
125 ++ lib.optionals enableSSH passthru.optional-dependencies.ssh
126 ++ lib.optionals (pythonOlder "3.8") [
127 importlib-metadata
128 ] ++ lib.optionals (pythonOlder "3.9") [
129 importlib-resources
130 ];
131
132 passthru.optional-dependencies = {
133 azure = [ dvc-azure ];
134 gs = [ dvc-gs ];
135 s3 = [ dvc-s3 ];
136 ssh = [ dvc-ssh ];
137 };
138
139 # Tests require access to real cloud services
140 doCheck = false;
141
142 pythonImportsCheck = [ "dvc" "dvc.api" ];
143
144 meta = with lib; {
145 description = "Version Control System for Machine Learning Projects";
146 homepage = "https://dvc.org";
147 changelog = "https://github.com/iterative/dvc/releases/tag/${version}";
148 license = licenses.asl20;
149 maintainers = with maintainers; [ cmcdragonkai fab ];
150 };
151}