Skip to content

Commit

Permalink
Include Python version in pip cache key (#303)
Browse files Browse the repository at this point in the history
  • Loading branch information
hugovk authored Jan 31, 2022
1 parent 156361d commit ba33a69
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 13 deletions.
6 changes: 1 addition & 5 deletions __tests__/cache-restore.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,9 @@ describe('restore-cache', () => {
dependencyFile
);
await cacheDistributor.restoreCache();
let pythonKey = '';
if (packageManager === 'pipenv') {
pythonKey = `python-${pythonVersion}-`;
}

expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${pythonKey}${packageManager}-${fileHash}`
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-python-${pythonVersion}-${packageManager}-${fileHash}`
);
}
);
Expand Down
9 changes: 5 additions & 4 deletions dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -34467,8 +34467,9 @@ const path = __importStar(__webpack_require__(622));
const os_1 = __importDefault(__webpack_require__(87));
const cache_distributor_1 = __importDefault(__webpack_require__(435));
class PipCache extends cache_distributor_1.default {
constructor(cacheDependencyPath = '**/requirements.txt') {
constructor(pythonVersion, cacheDependencyPath = '**/requirements.txt') {
super('pip', cacheDependencyPath);
this.pythonVersion = pythonVersion;
}
getCacheGlobalDirectories() {
return __awaiter(this, void 0, void 0, function* () {
Expand All @@ -34487,8 +34488,8 @@ class PipCache extends cache_distributor_1.default {
computeKeys() {
return __awaiter(this, void 0, void 0, function* () {
const hash = yield glob.hashFiles(this.cacheDependencyPath);
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`;
const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`;
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}`;
return {
primaryKey,
restoreKey: [restoreKey]
Expand Down Expand Up @@ -43888,7 +43889,7 @@ var PackageManagers;
function getCacheDistributor(packageManager, pythonVersion, cacheDependencyPath) {
switch (packageManager) {
case PackageManagers.Pip:
return new pip_cache_1.default(cacheDependencyPath);
return new pip_cache_1.default(pythonVersion, cacheDependencyPath);
case PackageManagers.Pipenv:
return new pipenv_cache_1.default(pythonVersion, cacheDependencyPath);
default:
Expand Down
2 changes: 1 addition & 1 deletion src/cache-distributions/cache-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export function getCacheDistributor(
) {
switch (packageManager) {
case PackageManagers.Pip:
return new PipCache(cacheDependencyPath);
return new PipCache(pythonVersion, cacheDependencyPath);
case PackageManagers.Pipenv:
return new PipenvCache(pythonVersion, cacheDependencyPath);
default:
Expand Down
9 changes: 6 additions & 3 deletions src/cache-distributions/pip-cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ import os from 'os';
import CacheDistributor from './cache-distributor';

class PipCache extends CacheDistributor {
constructor(cacheDependencyPath: string = '**/requirements.txt') {
constructor(
private pythonVersion: string,
cacheDependencyPath: string = '**/requirements.txt'
) {
super('pip', cacheDependencyPath);
}

Expand Down Expand Up @@ -36,8 +39,8 @@ class PipCache extends CacheDistributor {

protected async computeKeys() {
const hash = await glob.hashFiles(this.cacheDependencyPath);
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`;
const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`;
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}`;

return {
primaryKey,
Expand Down

0 comments on commit ba33a69

Please sign in to comment.