nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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 requests,
47 rich,
48 ruamel-yaml,
49 scmrepo,
50 setuptools-scm,
51 shortuuid,
52 shtab,
53 tabulate,
54 tomlkit,
55 tqdm,
56 typing-extensions,
57 voluptuous,
58 zc-lockfile,
59 enableGoogle ? false,
60 enableAWS ? false,
61 enableAzure ? false,
62 enableSSH ? false,
63}:
64
65buildPythonPackage (finalAttrs: {
66 pname = "dvc";
67 version = "3.66.1";
68 pyproject = true;
69
70 src = fetchFromGitHub {
71 owner = "iterative";
72 repo = "dvc";
73 tag = finalAttrs.version;
74 hash = "sha256-IvO5JEM3P0ggmufrBFv7fUBwoKzNIgWMUnOo31rYJRk=";
75 };
76
77 pythonRelaxDeps = [
78 "dvc-data"
79 "platformdirs"
80 ];
81
82 postPatch = ''
83 substituteInPlace dvc/analytics.py \
84 --replace-fail 'enabled = not os.getenv(DVC_NO_ANALYTICS)' 'enabled = False'
85 substituteInPlace dvc/daemon.py \
86 --subst-var-by dvc "$out/bin/dvc"
87 '';
88
89 build-system = [ setuptools-scm ];
90
91 dependencies = [
92 attrs
93 celery
94 colorama
95 configobj
96 distro
97 dpath
98 dulwich
99 dvc-data
100 dvc-http
101 dvc-render
102 dvc-studio-client
103 dvc-task
104 flatten-dict
105 flufl-lock
106 fsspec
107 funcy
108 grandalf
109 gto
110 hydra-core
111 iterative-telemetry
112 kombu
113 networkx
114 omegaconf
115 packaging
116 pathspec
117 platformdirs
118 psutil
119 pydot
120 pygtrie
121 pyparsing
122 requests
123 rich
124 ruamel-yaml
125 scmrepo
126 shortuuid
127 shtab
128 tabulate
129 tomlkit
130 tqdm
131 typing-extensions
132 voluptuous
133 zc-lockfile
134 ]
135 ++ lib.optionals enableGoogle finalAttrs.passthru.optional-dependencies.gs
136 ++ lib.optionals enableAWS finalAttrs.passthru.optional-dependencies.s3
137 ++ lib.optionals enableAzure finalAttrs.passthru.optional-dependencies.azure
138 ++ lib.optionals enableSSH finalAttrs.passthru.optional-dependencies.ssh;
139
140 optional-dependencies = {
141 azure = [ dvc-azure ];
142 gdrive = [ dvc-gdrive ];
143 gs = [ dvc-gs ];
144 hdfs = [ dvc-hdfs ];
145 oss = [ dvc-oss ];
146 s3 = [ dvc-s3 ];
147 ssh = [ dvc-ssh ];
148 ssh_gssapi = [ dvc-ssh ] ++ dvc-ssh.optional-dependencies.gssapi;
149 webdav = [ dvc-webdav ];
150 webhdfs = [ dvc-webhdfs ];
151 webhdfs_kerberos = [ dvc-webhdfs ] ++ dvc-webhdfs.optional-dependencies.kerberos;
152 };
153
154 # Tests require access to real cloud services
155 doCheck = false;
156
157 pythonImportsCheck = [
158 "dvc"
159 "dvc.api"
160 ];
161
162 meta = {
163 description = "Version Control System for Machine Learning Projects";
164 homepage = "https://dvc.org";
165 changelog = "https://github.com/iterative/dvc/releases/tag/${finalAttrs.src.tag}";
166 license = lib.licenses.asl20;
167 maintainers = with lib.maintainers; [
168 cmcdragonkai
169 fab
170 ];
171 mainProgram = "dvc";
172 };
173})