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