Skip to content

Commit 5075054

Browse files
authored
Add extra urls (#1152)
1 parent 53334a3 commit 5075054

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

lzy/execution-env/src/main/java/ai/lzy/env/aux/CondaPackageRegistry.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ private record CondaEnv(
9494
Map<String, Package> packages,
9595
String pythonVersion,
9696
String pypiIndex,
97-
boolean noDeps
97+
boolean noDeps,
98+
List<String> extraIndexUrls
9899
) {}
99100

100101
/**
@@ -110,12 +111,12 @@ public String buildCondaYaml(String condaYaml) {
110111
throw new IllegalArgumentException("Cannot build env from yaml");
111112
}
112113

113-
return buildCondaYaml(env.packages, env.pythonVersion, env.pypiIndex, env.noDeps);
114+
return buildCondaYaml(env.packages, env.pythonVersion, env.pypiIndex, env.noDeps, env.extraIndexUrls);
114115
}
115116

116117
@Nullable
117118
private String buildCondaYaml(Map<String, Package> packages, String pythonVersion, String pypiIndex,
118-
boolean noDeps)
119+
boolean noDeps, List<String> extraIndexUrls)
119120
{
120121
try {
121122
var installedEnv = envs.values().stream()
@@ -149,14 +150,15 @@ private String buildCondaYaml(Map<String, Package> packages, String pythonVersio
149150
}
150151

151152
return buildYaml(new CondaEnv(installedEnv.name, packages, installedEnv.pythonVersion,
152-
pypiIndex, noDeps));
153+
pypiIndex, noDeps, extraIndexUrls));
153154
}
154155

155156
} catch (Exception e) {
156157
LOG.error("Error while building conda yaml for packages {}: ", packages, e);
157158
}
158159

159-
return buildYaml(new CondaEnv("py" + pythonVersion, packages, pythonVersion, pypiIndex, noDeps));
160+
return buildYaml(new CondaEnv("py" + pythonVersion, packages, pythonVersion, pypiIndex, noDeps,
161+
extraIndexUrls));
160162
}
161163

162164
public void notifyInstalled(String condaYaml) {
@@ -199,7 +201,7 @@ public String resolveEnvName(String condaYaml) {
199201
}
200202

201203
@Nullable
202-
private CondaEnv build(String condaYaml) {
204+
CondaEnv build(String condaYaml) {
203205
var yaml = new Yaml();
204206
//noinspection unchecked
205207
var res = (Map<String, Object>) yaml.load(condaYaml);
@@ -214,6 +216,7 @@ private CondaEnv build(String condaYaml) {
214216
String pythonVersion = null;
215217
String pypiIndex = null;
216218
boolean noDeps = false;
219+
List<String> extraIndexUrls = new ArrayList<>();
217220

218221
for (var dep : deps) {
219222
if (dep instanceof String) {
@@ -246,6 +249,12 @@ private CondaEnv build(String condaYaml) {
246249
pypiIndex = parts.length > 1 ? parts[1] : null;
247250
continue;
248251
}
252+
if (((String) pipDep).startsWith("--extra-index-url")) {
253+
var parts = ((String) pipDep).split(" ");
254+
var extraIndex = parts.length > 1 ? parts[1] : null;
255+
extraIndexUrls.add(extraIndex);
256+
continue;
257+
}
249258
if (((String) pipDep).startsWith("--no-deps")) {
250259
noDeps = true;
251260
}
@@ -281,7 +290,8 @@ private CondaEnv build(String condaYaml) {
281290
}
282291
}
283292

284-
return new CondaEnv(name, pkgs, pythonVersion, pypiIndex == null ? DEFAULT_PYPI_INDEX : pypiIndex, noDeps);
293+
return new CondaEnv(name, pkgs, pythonVersion, pypiIndex == null ? DEFAULT_PYPI_INDEX : pypiIndex, noDeps,
294+
extraIndexUrls);
285295
}
286296

287297
private String buildYaml(CondaEnv env) {
@@ -292,6 +302,10 @@ private String buildYaml(CondaEnv env) {
292302
pkgs.add("--no-deps");
293303
}
294304

305+
for (var extraUrl: env.extraIndexUrls) {
306+
pkgs.add("--extra-index-url " + extraUrl);
307+
}
308+
295309
for (var p: env.packages.values()) {
296310
pkgs.add(p.version != null ? p.name + "==" + p.version : p.name);
297311
}

0 commit comments

Comments
 (0)