From 30085329e7c0d6103f0d2192a83885daf4618548 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 9 Mar 2018 10:07:07 -0800 Subject: [PATCH] Cherry-pick Pipfile detection fix for 2018.2.1 (#1002) * Detect pipenv by looking for Pipfile, not pipfile (#994) On platforms with case-sensitive filesystems, like Linux, these are not equivalent. pipenv documents that the file should be called Pipfile[0] and `Pipfile.find()` only finds files matching this exact case[1]. As a result, even if `pipenv --venv` in `cwd` would return success, it will never be run on Linux, and Code never detects the pipenv. (You can work around this with `touch pipfile`.) With this change, it's detected successfully. I believe there's no need to add a backwards-compatibility check for the old case, because on platforms where the old, incorrect check worked, so will the new, correct one. [0] https://docs.pipenv.org/basics/#example-pipfile-pipfile-lock [1] https://github.com/pypa/pipfile/blob/5acb9ac7/pipfile/api.py#L76-L85 * Prep for 2018.2.1 --- CHANGELOG.md | 7 +++++++ package.json | 2 +- src/client/interpreter/locators/services/pipEnvService.ts | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d746daec36e..c21837fe22c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 2018.2.1 (09 Mar 2018) + +### Fixes + +1. Check for `Pipfile` and not `pipfile` when looking for pipenv usage + (thanks to [Will Thompson for the fix](https://github.com/wjt)) + ## 2018.2.0 (08 Mar 2018) [Release pushed by one week] diff --git a/package.json b/package.json index 629777518a9a..922d756cf5f5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "python", "displayName": "Python", "description": "Linting, Debugging (multi-threaded, remote), Intellisense, code formatting, refactoring, unit tests, snippets, and more.", - "version": "2018.2.0", + "version": "2018.2.1", "publisher": "ms-python", "author": { "name": "Microsoft Corporation" diff --git a/src/client/interpreter/locators/services/pipEnvService.ts b/src/client/interpreter/locators/services/pipEnvService.ts index f511dede8302..738eba8f605b 100644 --- a/src/client/interpreter/locators/services/pipEnvService.ts +++ b/src/client/interpreter/locators/services/pipEnvService.ts @@ -69,7 +69,7 @@ export class PipEnvService extends CacheableLocatorService { private async getInterpreterPathFromPipenv(cwd: string): Promise { // Quick check before actually running pipenv - if (!await this.fs.fileExistsAsync(path.join(cwd, 'pipfile'))) { + if (!await this.fs.fileExistsAsync(path.join(cwd, 'Pipfile'))) { return; } const venvFolder = await this.invokePipenv('--venv', cwd);