From dc45b1e4e099d3a97f140f3216f45892eb9a089b Mon Sep 17 00:00:00 2001 From: Oran Avraham Date: Sat, 8 Oct 2022 11:46:59 +0300 Subject: [PATCH] poetry: Support same virtualenv appearing in multiple projects --- dist/setup/index.js | 9 +++++---- src/cache-distributions/poetry-cache.ts | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 11468943..804d6a32 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -66105,7 +66105,8 @@ class PoetryCache extends cache_distributor_1.default { getCacheGlobalDirectories() { var e_1, _a; return __awaiter(this, void 0, void 0, function* () { - const paths = []; + // Same virtualenvs path may appear for different projects, hence we use a Set + const paths = new Set(); const globber = yield glob.create(this.patterns); try { for (var _b = __asyncValues(globber.globGenerator()), _c; _c = yield _b.next(), !_c.done;) { @@ -66114,9 +66115,9 @@ class PoetryCache extends cache_distributor_1.default { const poetryConfig = yield this.getPoetryConfiguration(basedir); const cacheDir = poetryConfig['cache-dir']; const virtualenvsPath = poetryConfig['virtualenvs.path'].replace('{cache-dir}', cacheDir); - paths.push(virtualenvsPath); + paths.add(virtualenvsPath); if (poetryConfig['virtualenvs.in-project'] === true) { - paths.push(path.join(basedir, '.venv')); + paths.add(path.join(basedir, '.venv')); } } } @@ -66138,7 +66139,7 @@ class PoetryCache extends cache_distributor_1.default { else { utils_1.logWarning('python binaries were not found in PATH'); } - return paths; + return [...paths]; }); } computeKeys() { diff --git a/src/cache-distributions/poetry-cache.ts b/src/cache-distributions/poetry-cache.ts index 46e239a8..a0666d44 100644 --- a/src/cache-distributions/poetry-cache.ts +++ b/src/cache-distributions/poetry-cache.ts @@ -16,7 +16,8 @@ class PoetryCache extends CacheDistributor { } protected async getCacheGlobalDirectories() { - const paths = []; + // Same virtualenvs path may appear for different projects, hence we use a Set + const paths = new Set(); const globber = await glob.create(this.patterns); for await (const file of globber.globGenerator()) { @@ -29,10 +30,10 @@ class PoetryCache extends CacheDistributor { cacheDir ); - paths.push(virtualenvsPath); + paths.add(virtualenvsPath); if (poetryConfig['virtualenvs.in-project'] === true) { - paths.push(path.join(basedir, '.venv')); + paths.add(path.join(basedir, '.venv')); } } @@ -56,7 +57,7 @@ class PoetryCache extends CacheDistributor { logWarning('python binaries were not found in PATH'); } - return paths; + return [...paths]; } protected async computeKeys() {