Skip to content

Commit

Permalink
Cherry-pick Pipfile detection fix for 2018.2.1 (#1002)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
brettcannon authored and DonJayamanne committed Mar 9, 2018
1 parent 3f777f6 commit 3008532
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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]
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion src/client/interpreter/locators/services/pipEnvService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export class PipEnvService extends CacheableLocatorService {

private async getInterpreterPathFromPipenv(cwd: string): Promise<string | undefined> {
// 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);
Expand Down

0 comments on commit 3008532

Please sign in to comment.