Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scoped ${workspaceFolder:<folder>} doesn't resolve named folders in multi-root workspace #22452

Closed
OmeGak opened this issue Nov 9, 2023 · 14 comments · Fixed by #22471
Closed
Assignees
Labels
area-environments Features relating to handling interpreter environments feature-request Request for new features or functionality verification-needed Verification of issue is requested verified Verification succeeded
Milestone

Comments

@OmeGak
Copy link

OmeGak commented Nov 9, 2023

Behaviour

Potentially related to #18650.

Expected vs. Actual

I have a multi-root workspace and I name the folders for clarity in the file explorer and search results. The ${workspaceFolder} variable, however, doesn't seem to be resolved correctly when scoped by folder name in Python settings like python.defaultInterpreterPath. Given the following folders definition in my .code-workspace file:

{
    "folders": [
        {
            "name": "named-folder",
            "path": "org/projects/project-folder"
        }
    ]
}

I expect to be able to use ${workspaceFolder:named-folder} in python.defaultInterpreterPath:

{
    "settings": {
        "python.defaultInterpreterPath": "${workspaceFolder:named-folder}/.venv/bin/python",
    }
}

Instead, ${workspaceFolder:named-folder} is not resolved at all and I'm forced to use the implicit folder name as derived from its path:

{
    "settings": {
        "python.defaultInterpreterPath": "${workspaceFolder:project-folder}/.venv/bin/python",
    }
}

This is inconsistent with how ${workspaceFolder:<folder>} is resolved in other places. For instance, ${workspaceFolder:project-folder} will not resolve in a task when the folder is named like in my example above:

{
    "tasks": {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "echo",
                "type": "shell",
                "command": "echo ${workspaceFolder:project-folder}",
            }
        ]
    },
}
Variable ${workspaceFolder:project-folder} can not be resolved. No such folder 'project-folder'.

Steps to reproduce:

  1. Create a multi-root workspace with at least one explicitly named folder, like in my example above.
  2. Set the defaultInterpreterPath to ${workspaceFolder:<explicit-folder-name>}/<relative-path-to-python-interpreter>
  3. Observe in the Python output that the ${workspaceFolder} was not resolved and, thus, no interpreter is found.
  • Python version (& distribution if applicable, e.g. Anaconda): 3.9.16
  • Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): Unknown
  • Value of the python.languageServer setting: Pylance
Output for Python in the Output panel (ViewOutput, change the drop-down the upper-right of the Output panel to Python)

2023-11-09 12:16:51.050 [warning] Identifier for virt-virtualenv failed to identify /Users/ome/Code/org/projects/project-folder/${workspaceFolder:named-folder}/.venv/bin/python [Error: ENOENT: no such file or directory, scandir '/Users/ome/Code/org/projects/project-folder/${workspaceFolder:named-folder}/.venv/bin'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'scandir',
  path: '/Users/ome/Code/org/projects/project-folder/${workspaceFolder:named-folder}/.venv/bin'
}

@OmeGak OmeGak added the feature-request Request for new features or functionality label Nov 9, 2023
@github-actions github-actions bot added the triage-needed Needs assignment to the proper sub-team label Nov 9, 2023
@OmeGak
Copy link
Author

OmeGak commented Nov 9, 2023

This is not a feature-request but reporting from the built-in issue reporter in VSCode was not working.

@karrtikr
Copy link

Thanks for the bug report! We investigate issues in order based on priority and severity, which includes the impact it has on your ability to use the extension to do productive work, and the number of people affected. If other users come forward and leave a comment demonstrating they are seeing/reproducing the problem then we will raise this issue's priority. Thanks for understanding and the patience!

@OmeGak
Copy link
Author

OmeGak commented Nov 11, 2023

I'll be happy to try and fix it myself. If I understand correctly, the bug is coming from this line of code unconditionally setting the workspace folder name to the path basename.

this._workspaceFolder = workspaceFolder ? workspaceFolder.uri.fsPath : rootFolder || __dirname;
this._workspaceFolderName = Path.basename(this._workspaceFolder);

@karrtikr
Copy link

I see, so what're you expecting it to be set to?

@github-actions github-actions bot added the info-needed Issue requires more information from poster label Nov 11, 2023
@OmeGak
Copy link
Author

OmeGak commented Nov 13, 2023

If a folder is explicitly named, I would be expecting that one to be set as this._workspaceFolderName, rather than the basename of the path. From what I can see, WorkspaceFolder has a name attribute and I'm guessing that that is the one that stores the explicitly set name. If that is the case, my naive solution would be this:

this._workspaceFolderName = workspaceFolder.name || Path.basename(this._workspaceFolder);

@github-actions github-actions bot removed the info-needed Issue requires more information from poster label Nov 13, 2023
@OmeGak
Copy link
Author

OmeGak commented Nov 13, 2023

On a different note, I'm surprised that there is no canonical way to resolve workspace folder names in VSCode. This leaves how to resolve the scoped ${workspaceFolder} variable up to extension authors, clearly leading to inconsistent behavior.

Also, the official documentation remains ambiguous as to how scoped ${workspaceFolder} variables should be resolved. Here, the documentation says nothing about the name attribute in workspace folders. Here, the documentation states that the name attribute in workspace folders is for display purpose in the Explorer. However, [here],(https://code.visualstudio.com/docs/editor/variables-reference#_how-can-i-know-a-variables-actual-value) the documentation implies that the canonical way to resolve variables is via echo in a task.

Then, as I mentioned in the description, if a workspace folder is named, this task will fail:

"echo ${workspaceFolder:<workspace-folder-path-basename>}"

While this one will work:

"echo ${workspaceFolder:<workspace-folder-name>}"

It may be worth eventually resolving this directly on VSCode to avoid confusion. I would imagine:

  • A resolveName() or resolveScope() function in the WorkspaceFolder class that can be used by VSCode and extensions to resolve the scope canonically.
  • Clarifying here that scoped ${workspaceFolder} variables are resolved with either their explicitly set name or with their path basename.
  • Clarifying here that the name attribute in workspace folder is not used only for display in Explorer but also to scope ${workspaceFolder} variables.

What would you reckon is the best way to bring attention of VSCode maintainers to this?

@karrtikr
Copy link

Feel free to create an issue on VS Code's end: https://github.com/Microsoft/vscode/issues. There's a hesitancy of supporting such variables due to similar reasons mentioned in #18650 (comment). But if we mention that a similar functionality already exists: https://code.visualstudio.com/docs/editor/variables-reference#_variables-scoped-per-workspace-folder, with the support ideas you mentioned, it's more likely for them to add support.

@karrtikr
Copy link

Regarding the issue in hand, name is supposed to be same as basename according to VS Code docs:

image

Could you elaborate on what is the value of each in your scenario?

@karrtikr
Copy link

Added support to also resolve using using WorkspaceFolder.name: #22471

Workspace folder name can be relative whereas basename is always absolute, hence they can be different.

@karrtikr karrtikr added area-environments Features relating to handling interpreter environments needs PR Ready to be worked on and removed info-needed Issue requires more information from poster triage-needed Needs assignment to the proper sub-team labels Nov 13, 2023
@karrtikr karrtikr added this to the November 2023 milestone Nov 13, 2023
karrtikr pushed a commit that referenced this issue Nov 13, 2023
… when resolving `${workspaceFolder:name}` syntax in settings (#22471)

Closes #22452
@github-actions github-actions bot removed the needs PR Ready to be worked on label Nov 13, 2023
@karrtikr karrtikr added verification-needed Verification of issue is requested needs PR Ready to be worked on labels Nov 13, 2023
@karrtikr
Copy link

Fix should be out in the pre-release version of the extension in a day, use the following to try it out:

image

@OmeGak
Copy link
Author

OmeGak commented Nov 14, 2023

Thanks for the quick reaction, @karrtikr! I tried the pre-release version and it's working as expected now.

@karrtikr karrtikr added the verified Verification succeeded label Nov 14, 2023
@nrs-mparker
Copy link

I was running into this issue yesterday and came across this thread while looking for fixes. I've tried the pre-release version, but it did not fix it for me. I'm new to VS Code, so it's possible that I'm attempting something that's not supported. Basically I'm trying to make a multi-root workspace for an Unreal Engine project that has Python in many different folders, and I've specified the paths to all of them as relative paths from the .code-workspace file. Unreal ships with its own copy of the interpreter, so all roots should use that same one. But it seems some combination of all this relative pathing breaks the folder resolution. Here's a relevant snippet of the file:

"folders": [
	{
		"name": "MyGame",
		"path": "../.."
	},
	{
		"name": "Sequencer Scripting",
		"path": "../../../../../Engine/Plugins/MovieScene/SequencerScripting/Content/Python"
	}
],
"settings": {
	"python.defaultInterpreterPath": "${workspaceFolder:MyGame}/../../../Engine/Binaries/ThirdParty/Python3/Win64/python.exe",
	"python.analysis.extraPaths": [
		"../../Intermediate/PythonStub"
	],
	"python.autoComplete.extraPaths": [
		"../../Intermediate/PythonStub"
	]
},

Everything about the workspace functions well on my and another person's machine except the interpreter path. When I try to pick that one as the interpreter, I get:

2023-11-22 10:12:51.364 [warning] Identifier for virt-virtualenv failed to identify ..\..\..\Engine\Binaries\ThirdParty\Python3\Win64\python.exe [Error: ENOENT: no such file or directory, scandir 'C:\Engine\Binaries\ThirdParty\Python3\Win64'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'scandir',
  path: 'C:\\Engine\\Binaries\\ThirdParty\\Python3\\Win64'
}

The workspace and all code files are not even on the C: drive, so it's clear that it's starting from where VS Code or the Python extension are installed instead. Please let me know if there's something unsupported I've tried here. The extension version is v2023.21.13261010.

@nrs-mparker
Copy link

@karrtikr Sorry to comment again, but I wasn't sure if you got a notification for comments since the issue is Closed. We also had the long holiday of course, so I don't expect anything to be addressed already, but neither do I want it to fall through the cracks.

As an interesting side note, when I go to select my interpreter to get the output above, I'm picking "Select at workspace level", then "Use Python from 'python.defaultInterpreterPath' setting". I noticed that there is a darkened path/tooltip next to that text showing what that path becomes, and the path is correct there (other than having mixed path separators because I'm on Windows but used forward slashes). The "Recommended" interpreter in that menu with the star icon has the same path next to it (and produces the same issue).

I tried changing my path separators to backslashes in my workspace folder and defaultInterpreterPath just in case that was the problem. When I tried after that, I get a notification saying "An Invalid Python interpreter is selected for workspace ..." that I did not get before. That could also be related to when I save the .code-workspace file though, as it also appears when I change it back and save again.

Another interesting thing is that darkened path/tooltip had been evaluated from relative to absolute to show me exactly where it was pointing, except the part that came after ${workspaceFolder:MyGame}. Not sure if that's any indication of failing to fully convert to an absolute path.

@karrtikr
Copy link

karrtikr commented Nov 29, 2023

@nrs-mparker Can you open a new issue with these details please? We'll be happy to have a look. Generally we don't track comments in already fixed issues so you'll be better off creating a new one.

@eleanorjboyd eleanorjboyd removed the needs PR Ready to be worked on label Dec 14, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jan 14, 2024
wesm pushed a commit to posit-dev/positron that referenced this issue Mar 28, 2024
…from upstream

Merge pull request #277 from posit-dev/merge/2023.22

Merge vscode-python 2023.22 from upstream
--------------------
Commit message for posit-dev/positron-python@2e3ea32:

handle new upstream `deprecated` response upon parser error

--------------------
Commit message for posit-dev/positron-python@d50c326:

Update yarn.lock

--------------------
Commit message for posit-dev/positron-python@105bf9d:

Merge commit 'a0cddbdf0939729cdb82dca2d129433ad475f51e'

--------------------
Commit message for microsoft/vscode-python@a0cddbd:

bump-release-2023.22 (microsoft/vscode-python#22587)

bump to release version 2023.22 and update package.json
--------------------
Commit message for microsoft/vscode-python@5302d0e:

Revert unsuccessful REPL decoration fix and disable for windows (microsoft/vscode-python#22578)

Reverting microsoft/vscode-python#22572 since it is producing color decoration on weird Python
REPL spot for Windows pwsh users, and disable decoration entirely for
Windows pwsh users temporarily while trying to fix specific problem.

Disable feature for stable. 

Refer: microsoft/vscode-python#22546 microsoft/vscode-python#22535
--------------------
Commit message for microsoft/vscode-python@bffc9b3:

Fix shell integration decoration bug for Windows pwsh (microsoft/vscode-python#22572)

Attempt to fix colorless and randomized circle decoration for Python
REPL usage by Windows Powershell users.
Resolves: microsoft/vscode-python#22546 microsoft/vscode-python#22535
--------------------
Commit message for microsoft/vscode-python@e1b54d0:

fix no test id provided for pytest run (microsoft/vscode-python#22569)

fixes microsoft/vscode-python#22567

Now if a user tries to click the "run" button a empty folder (ie a
folder with no tests in it) it will just run pytest with no testIds as
args and notify the user.
--------------------
Commit message for microsoft/vscode-python@61fcf3a:

Properly build deactivate commands for powershell (microsoft/vscode-python#22570)

For microsoft/vscode-python#20950
--------------------
Commit message for microsoft/vscode-python@db6e15e:

Do not throw if initializing deactivate script fails (microsoft/vscode-python#22566)

For microsoft/vscode-python#20950
--------------------
Commit message for microsoft/vscode-python@caa50dc:

Fix shell integration decoration for windows pwsh (microsoft/vscode-python#22560)

Attempting to fix shell integration decoration glitch for windows pwsh
when using Python REPL from VS Code.
Resolves: microsoft/vscode-python#22546 microsoft/vscode-python#22535
--------------------
Commit message for microsoft/vscode-python@3efb54f:

White space after REPL prompt (microsoft/vscode-python#22549)

There should be white space after new REPL prompt that I override for
purpose of shell integration.
Resolves: microsoft/vscode-python#22548
--------------------
Commit message for microsoft/vscode-python@261ae66:

Improvement: Pass along python interpreter to jedi-language-server (microsoft/vscode-python#22466)

Fixes microsoft/vscode-python#22495

## Before this PR

Overriding the Python interpreter to a different environment that isn't
the current globally-activated base environment would yield no
completions when Jedi is used as the underlying language server.

Example [stackoverflow
question](https://stackoverflow.com/questions/62018436/vscode-intellisense-code-completion-doesnt-work-when-i-am-not-in-base-conda-e)
hitting the same issue.

## After this PR

We now pass along the interpreter path to jedi-language-server as part
of the initial options under `workspace.environmentPath`
([ref](https://github.com/pappasam/jedi-language-server/#workspaceenvironmentpath))
--------------------
Commit message for microsoft/vscode-python@1639753:

switch to conditional error message on check for UUID and port during pytest config (microsoft/vscode-python#22534)

fixes microsoft/vscode-python#19857
--------------------
Commit message for microsoft/vscode-python@9a5363c:

Resolve test suite discovery import errors due to path ordering (microsoft/vscode-python#22454)

[Issue microsoft/vscode-python#22453](microsoft/vscode-python#22453)

- Once starting to run discovery, add the projects root path to PATH at
index 0 so that any further imports will use the projects root directory
and not reference the incorrect directory.
- Since the test suite only allows the start_dir to be one directory
deep, we can conclude that if the start_dir is not "." or contains a
"/", that we need to add that start_dir's parent to PATH. Otherwise, we
simply add the start_dir to PATH.
--------------------
Commit message for microsoft/vscode-python@eb96141:

Use shell integration to denote success/failure  (microsoft/vscode-python#22487)

Resolves: microsoft/vscode-python#22486

Use shell integration to denote success/failure in Python REPL launched
from VS Code.
This would mean having the blue or red decorators based on whether or
not user's command succeeded.
--------------------
Commit message for microsoft/vscode-python@f6e1338:

Use worker threads for fetching conda environments and interpreter related info (microsoft/vscode-python#22481)


--------------------
Commit message for microsoft/vscode-python@3c552f9:

Show warning and allow user to turn off smart send for deprecated Python code (microsoft/vscode-python#22353)

Resolves: microsoft/vscode-python#22341 microsoft/vscode-python#22340

Showing warning message after detecting user is on Python file with
deprecated Python code, and are attempting to run smart send via
shift+enter action. Allow user to turn off this via workspace setting.

---------

Co-authored-by: Courtney Webster <60238438+cwebster-99@users.noreply.github.com>
Co-authored-by: Kartik Raj <karraj@microsoft.com>
--------------------
Commit message for microsoft/vscode-python@ef983f4:

Bump `vscode-tas-client` and fix tests (microsoft/vscode-python#22493)

Closes microsoft/vscode-python#22461

Sinon requires the actual object definition, so we need to point it to
the module file that actually has the function.
--------------------
Commit message for microsoft/vscode-python@9298b2c:

Bump dessant/lock-threads from 4 to 5 (microsoft/vscode-python#22474)

Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads)
from 4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dessant/lock-threads/releases">dessant/lock-threads's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<p>Learn more about this release from the <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md#changelog">changelog</a>.</p>
<h2>v4.0.1</h2>
<p>Learn more about this release from the <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md#changelog">changelog</a>.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md">dessant/lock-threads's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v4.0.1...v5.0.0">5.0.0</a>
(2023-11-14)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Discussions are also processed by default,
set the <code>process-only</code> input parameter to preserve the old
behavior</li>
</ul>
<pre lang="yaml"><code>    steps:
      - uses: dessant/lock-threads@v5
        with:
          process-only: 'issues, prs'
</code></pre>
<ul>
<li>the action now requires Node.js 20</li>
</ul>
<h3>Features</h3>
<ul>
<li>lock discussions (<a
href="https://github.com/dessant/lock-threads/commit/0a0976f3ded51c88c6128dd96dd115c9f14fa764">0a0976f</a>),
closes <a
href="https://redirect.github.com/dessant/lock-threads/issues/25">#25</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update dependencies (<a
href="https://github.com/dessant/lock-threads/commit/5a25b54eae3e7a5580d09ef0f7cbc5b18376db67">5a25b54</a>)</li>
</ul>
<h3><a
href="https://github.com/dessant/lock-threads/compare/v4.0.0...v4.0.1">4.0.1</a>
(2023-06-12)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>retry and throttle GitHub API requests (<a
href="https://github.com/dessant/lock-threads/commit/1618e91da69b9fe614fb9837ac673ea4600eb529">1618e91</a>),
closes <a
href="https://redirect.github.com/dessant/lock-threads/issues/35">#35</a></li>
</ul>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v3.0.0...v4.0.0">4.0.0</a>
(2022-12-04)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>the action now requires Node.js 16</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update dependencies (<a
href="https://github.com/dessant/lock-threads/commit/38e918558115222435d26c0639870cdbe3572929">38e9185</a>)</li>
<li>update docs (<a
href="https://github.com/dessant/lock-threads/commit/32986e26965060a85db09e98ef7e5958c961ae84">32986e2</a>)</li>
</ul>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v2.1.2...v3.0.0">3.0.0</a>
(2021-09-27)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>input parameter names have changed</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dessant/lock-threads/commit/d42e5f49803f3c4e14ffee0378e31481265dda22"><code>d42e5f4</code></a>
chore(release): 5.0.0</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/d8da6c1485cbe748b5b632f1a52cf2a52941cbf9"><code>d8da6c1</code></a>
chore: update package</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/c1eab4b45f97073a922fbd226afab0e34a70cf5f"><code>c1eab4b</code></a>
chore: update workflow</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/0a0976f3ded51c88c6128dd96dd115c9f14fa764"><code>0a0976f</code></a>
feat: lock discussions</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/53f3f0c0b9158bece84746885adc5f4bf2dd1ddc"><code>53f3f0c</code></a>
chore: migrate package to ESM</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/5a25b54eae3e7a5580d09ef0f7cbc5b18376db67"><code>5a25b54</code></a>
fix: update dependencies</li>
<li>See full diff in <a
href="https://github.com/dessant/lock-threads/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dessant/lock-threads&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--------------------
Commit message for microsoft/vscode-python@e27185a:

Use worker threads for fetching Windows Registry interpreters (microsoft/vscode-python#22479)

For microsoft/vscode-python#22146
--------------------
Commit message for microsoft/vscode-python@7a4de92:

Use `WorkspaceFolder.name` in addition to workspace folder's basename when resolving `${workspaceFolder:name}` syntax in settings (microsoft/vscode-python#22471)

Closes microsoft/vscode-python#22452
--------------------
Commit message for microsoft/vscode-python@fbfa126:

Add 3.12 to conda version list (microsoft/vscode-python#22470)


--------------------
Commit message for microsoft/vscode-python@47552a3:

Install requirements before toml (microsoft/vscode-python#22468)

Fixes microsoft/vscode-python#22423
--------------------
Commit message for microsoft/vscode-python@a1fac81:

If active editor opened is outside the editor, activate the first workspace (microsoft/vscode-python#22450)

For microsoft/vscode-python#22449
--------------------
Commit message for microsoft/vscode-python@b68ddee:

Support deactivating virtual environments without user intervention (microsoft/vscode-python#22405)

Closes microsoft/vscode-python#22448

Adds deactivate script to `PATH`
--------------------
Commit message for microsoft/vscode-python@8d174a8:

Fix shell integration API reliability (microsoft/vscode-python#22446)

microsoft/vscode-python#22440

It leads to terminals activating forever.
--------------------
Commit message for microsoft/vscode-python@1b3c1ea:

Adding `Locked` comments to walkthrough commands (microsoft/vscode-python#22432)

Adds comments to lock command names for walkthrough localization. Only
added Locked comments for walkthrough tiles that are in use and have
commands
--------------------
Commit message for microsoft/vscode-python@2fc9fea:

Revert "Reliably detect whether shell integration is working" (microsoft/vscode-python#22445)

Reverts microsoft/vscode-python#22440

It seems reactivating never finishes after this, although this doesn't
repro when debugging the extension, have to investigate further.
--------------------
Commit message for microsoft/vscode-python@f98caf6:

Add consoleTitle to launch.json properties schema (microsoft/vscode-python#22406)

consoleTitle is effectively an undocumented feature. pydebug accepts the
config key, but vscode will report a problem because it is missing from
the schema. see [this debugpy
issue](microsoft/debugpy#1178) and
[#13040](microsoft/vscode-python#13040)

I used the phrase "console or terminal" because I noticed the name was
represented on both integratedTerminal and internalConsole. I didn't
test externalTerminal.

---------

Co-authored-by: Luciana Abud <45497113+luabud@users.noreply.github.com>
--------------------
Commit message for microsoft/vscode-python@2a976e3:

Reliably detect whether shell integration is working (microsoft/vscode-python#22440)

Closes microsoft/vscode-python#22439

Blocked on https://github.com/microsoft/vscode-distro/pull/822
--------------------
Commit message for microsoft/vscode-python@67b4801:

Improve shell identifier on case-insensitive system (microsoft/vscode-python#22391)

Use case-insensitive regex to remove `.exe`  extension.

See:
microsoft/vscode-python#22036 (comment)
--------------------
Commit message for microsoft/vscode-python@7bc45e5:

Do not attempt to kill the process if it has already exited (microsoft/vscode-python#22424)

Closes microsoft/vscode-python#22420

This bugs seems to have existed every since `rawProcessApi.ts` was
created. `proc.killed` can be `false` even after process has exited.
--------------------
Commit message for microsoft/vscode-python@f6cfa6e:

Remove old code for folder support in interpreter path setting (microsoft/vscode-python#22413)

Closes microsoft/vscode-python#12452

Lead-authored-by: Kartik Raj <karraj@microsoft.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Courtney Webster <60238438+cwebster-99@users.noreply.github.com>
Co-authored-by: John H. Ayad <johnhany97@gmail.com>
Co-authored-by: Wasim Lorgat <mwlorgat@gmail.com>
Co-authored-by: Shane Saravia <shanesaravia@live.ca>
Co-authored-by: Trysten <trysten@sleepyowl.com>
Co-authored-by: JamzumSum <zzzzss990315@gmail.com>
Co-authored-by: Eleanor Boyd <eleanorboyd@microsoft.com>
Co-authored-by: Karthik Nadig <kanadig@microsoft.com>
Co-authored-by: Pete Farland <pete.farland@posit.co>
Co-authored-by: Anthony Kim <62267334+anthonykim1@users.noreply.github.com>
Signed-off-by: GitHub <noreply@github.com>
wesm pushed a commit to posit-dev/positron that referenced this issue Mar 28, 2024
…from upstream

Merge pull request #277 from posit-dev/merge/2023.22

Merge vscode-python 2023.22 from upstream
--------------------
Commit message for posit-dev/positron-python@2e3ea32:

handle new upstream `deprecated` response upon parser error

--------------------
Commit message for posit-dev/positron-python@d50c326:

Update yarn.lock

--------------------
Commit message for posit-dev/positron-python@105bf9d:

Merge commit 'a0cddbdf0939729cdb82dca2d129433ad475f51e'

--------------------
Commit message for microsoft/vscode-python@a0cddbd:

bump-release-2023.22 (microsoft/vscode-python#22587)

bump to release version 2023.22 and update package.json
--------------------
Commit message for microsoft/vscode-python@5302d0e:

Revert unsuccessful REPL decoration fix and disable for windows (microsoft/vscode-python#22578)

Reverting microsoft/vscode-python#22572 since it is producing color decoration on weird Python
REPL spot for Windows pwsh users, and disable decoration entirely for
Windows pwsh users temporarily while trying to fix specific problem.

Disable feature for stable. 

Refer: microsoft/vscode-python#22546 microsoft/vscode-python#22535
--------------------
Commit message for microsoft/vscode-python@bffc9b3:

Fix shell integration decoration bug for Windows pwsh (microsoft/vscode-python#22572)

Attempt to fix colorless and randomized circle decoration for Python
REPL usage by Windows Powershell users.
Resolves: microsoft/vscode-python#22546 microsoft/vscode-python#22535
--------------------
Commit message for microsoft/vscode-python@e1b54d0:

fix no test id provided for pytest run (microsoft/vscode-python#22569)

fixes microsoft/vscode-python#22567

Now if a user tries to click the "run" button a empty folder (ie a
folder with no tests in it) it will just run pytest with no testIds as
args and notify the user.
--------------------
Commit message for microsoft/vscode-python@61fcf3a:

Properly build deactivate commands for powershell (microsoft/vscode-python#22570)

For microsoft/vscode-python#20950
--------------------
Commit message for microsoft/vscode-python@db6e15e:

Do not throw if initializing deactivate script fails (microsoft/vscode-python#22566)

For microsoft/vscode-python#20950
--------------------
Commit message for microsoft/vscode-python@caa50dc:

Fix shell integration decoration for windows pwsh (microsoft/vscode-python#22560)

Attempting to fix shell integration decoration glitch for windows pwsh
when using Python REPL from VS Code.
Resolves: microsoft/vscode-python#22546 microsoft/vscode-python#22535
--------------------
Commit message for microsoft/vscode-python@3efb54f:

White space after REPL prompt (microsoft/vscode-python#22549)

There should be white space after new REPL prompt that I override for
purpose of shell integration.
Resolves: microsoft/vscode-python#22548
--------------------
Commit message for microsoft/vscode-python@261ae66:

Improvement: Pass along python interpreter to jedi-language-server (microsoft/vscode-python#22466)

Fixes microsoft/vscode-python#22495

## Before this PR

Overriding the Python interpreter to a different environment that isn't
the current globally-activated base environment would yield no
completions when Jedi is used as the underlying language server.

Example [stackoverflow
question](https://stackoverflow.com/questions/62018436/vscode-intellisense-code-completion-doesnt-work-when-i-am-not-in-base-conda-e)
hitting the same issue.

## After this PR

We now pass along the interpreter path to jedi-language-server as part
of the initial options under `workspace.environmentPath`
([ref](https://github.com/pappasam/jedi-language-server/#workspaceenvironmentpath))
--------------------
Commit message for microsoft/vscode-python@1639753:

switch to conditional error message on check for UUID and port during pytest config (microsoft/vscode-python#22534)

fixes microsoft/vscode-python#19857
--------------------
Commit message for microsoft/vscode-python@9a5363c:

Resolve test suite discovery import errors due to path ordering (microsoft/vscode-python#22454)

[Issue microsoft/vscode-python#22453](microsoft/vscode-python#22453)

- Once starting to run discovery, add the projects root path to PATH at
index 0 so that any further imports will use the projects root directory
and not reference the incorrect directory.
- Since the test suite only allows the start_dir to be one directory
deep, we can conclude that if the start_dir is not "." or contains a
"/", that we need to add that start_dir's parent to PATH. Otherwise, we
simply add the start_dir to PATH.
--------------------
Commit message for microsoft/vscode-python@eb96141:

Use shell integration to denote success/failure  (microsoft/vscode-python#22487)

Resolves: microsoft/vscode-python#22486

Use shell integration to denote success/failure in Python REPL launched
from VS Code.
This would mean having the blue or red decorators based on whether or
not user's command succeeded.
--------------------
Commit message for microsoft/vscode-python@f6e1338:

Use worker threads for fetching conda environments and interpreter related info (microsoft/vscode-python#22481)


--------------------
Commit message for microsoft/vscode-python@3c552f9:

Show warning and allow user to turn off smart send for deprecated Python code (microsoft/vscode-python#22353)

Resolves: microsoft/vscode-python#22341 microsoft/vscode-python#22340

Showing warning message after detecting user is on Python file with
deprecated Python code, and are attempting to run smart send via
shift+enter action. Allow user to turn off this via workspace setting.

---------

Co-authored-by: Courtney Webster <60238438+cwebster-99@users.noreply.github.com>
Co-authored-by: Kartik Raj <karraj@microsoft.com>
--------------------
Commit message for microsoft/vscode-python@ef983f4:

Bump `vscode-tas-client` and fix tests (microsoft/vscode-python#22493)

Closes microsoft/vscode-python#22461

Sinon requires the actual object definition, so we need to point it to
the module file that actually has the function.
--------------------
Commit message for microsoft/vscode-python@9298b2c:

Bump dessant/lock-threads from 4 to 5 (microsoft/vscode-python#22474)

Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads)
from 4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dessant/lock-threads/releases">dessant/lock-threads's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<p>Learn more about this release from the <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md#changelog">changelog</a>.</p>
<h2>v4.0.1</h2>
<p>Learn more about this release from the <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md#changelog">changelog</a>.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md">dessant/lock-threads's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v4.0.1...v5.0.0">5.0.0</a>
(2023-11-14)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Discussions are also processed by default,
set the <code>process-only</code> input parameter to preserve the old
behavior</li>
</ul>
<pre lang="yaml"><code>    steps:
      - uses: dessant/lock-threads@v5
        with:
          process-only: 'issues, prs'
</code></pre>
<ul>
<li>the action now requires Node.js 20</li>
</ul>
<h3>Features</h3>
<ul>
<li>lock discussions (<a
href="https://github.com/dessant/lock-threads/commit/0a0976f3ded51c88c6128dd96dd115c9f14fa764">0a0976f</a>),
closes <a
href="https://redirect.github.com/dessant/lock-threads/issues/25">#25</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update dependencies (<a
href="https://github.com/dessant/lock-threads/commit/5a25b54eae3e7a5580d09ef0f7cbc5b18376db67">5a25b54</a>)</li>
</ul>
<h3><a
href="https://github.com/dessant/lock-threads/compare/v4.0.0...v4.0.1">4.0.1</a>
(2023-06-12)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>retry and throttle GitHub API requests (<a
href="https://github.com/dessant/lock-threads/commit/1618e91da69b9fe614fb9837ac673ea4600eb529">1618e91</a>),
closes <a
href="https://redirect.github.com/dessant/lock-threads/issues/35">#35</a></li>
</ul>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v3.0.0...v4.0.0">4.0.0</a>
(2022-12-04)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>the action now requires Node.js 16</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update dependencies (<a
href="https://github.com/dessant/lock-threads/commit/38e918558115222435d26c0639870cdbe3572929">38e9185</a>)</li>
<li>update docs (<a
href="https://github.com/dessant/lock-threads/commit/32986e26965060a85db09e98ef7e5958c961ae84">32986e2</a>)</li>
</ul>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v2.1.2...v3.0.0">3.0.0</a>
(2021-09-27)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>input parameter names have changed</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dessant/lock-threads/commit/d42e5f49803f3c4e14ffee0378e31481265dda22"><code>d42e5f4</code></a>
chore(release): 5.0.0</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/d8da6c1485cbe748b5b632f1a52cf2a52941cbf9"><code>d8da6c1</code></a>
chore: update package</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/c1eab4b45f97073a922fbd226afab0e34a70cf5f"><code>c1eab4b</code></a>
chore: update workflow</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/0a0976f3ded51c88c6128dd96dd115c9f14fa764"><code>0a0976f</code></a>
feat: lock discussions</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/53f3f0c0b9158bece84746885adc5f4bf2dd1ddc"><code>53f3f0c</code></a>
chore: migrate package to ESM</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/5a25b54eae3e7a5580d09ef0f7cbc5b18376db67"><code>5a25b54</code></a>
fix: update dependencies</li>
<li>See full diff in <a
href="https://github.com/dessant/lock-threads/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dessant/lock-threads&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--------------------
Commit message for microsoft/vscode-python@e27185a:

Use worker threads for fetching Windows Registry interpreters (microsoft/vscode-python#22479)

For microsoft/vscode-python#22146
--------------------
Commit message for microsoft/vscode-python@7a4de92:

Use `WorkspaceFolder.name` in addition to workspace folder's basename when resolving `${workspaceFolder:name}` syntax in settings (microsoft/vscode-python#22471)

Closes microsoft/vscode-python#22452
--------------------
Commit message for microsoft/vscode-python@fbfa126:

Add 3.12 to conda version list (microsoft/vscode-python#22470)


--------------------
Commit message for microsoft/vscode-python@47552a3:

Install requirements before toml (microsoft/vscode-python#22468)

Fixes microsoft/vscode-python#22423
--------------------
Commit message for microsoft/vscode-python@a1fac81:

If active editor opened is outside the editor, activate the first workspace (microsoft/vscode-python#22450)

For microsoft/vscode-python#22449
--------------------
Commit message for microsoft/vscode-python@b68ddee:

Support deactivating virtual environments without user intervention (microsoft/vscode-python#22405)

Closes microsoft/vscode-python#22448

Adds deactivate script to `PATH`
--------------------
Commit message for microsoft/vscode-python@8d174a8:

Fix shell integration API reliability (microsoft/vscode-python#22446)

microsoft/vscode-python#22440

It leads to terminals activating forever.
--------------------
Commit message for microsoft/vscode-python@1b3c1ea:

Adding `Locked` comments to walkthrough commands (microsoft/vscode-python#22432)

Adds comments to lock command names for walkthrough localization. Only
added Locked comments for walkthrough tiles that are in use and have
commands
--------------------
Commit message for microsoft/vscode-python@2fc9fea:

Revert "Reliably detect whether shell integration is working" (microsoft/vscode-python#22445)

Reverts microsoft/vscode-python#22440

It seems reactivating never finishes after this, although this doesn't
repro when debugging the extension, have to investigate further.
--------------------
Commit message for microsoft/vscode-python@f98caf6:

Add consoleTitle to launch.json properties schema (microsoft/vscode-python#22406)

consoleTitle is effectively an undocumented feature. pydebug accepts the
config key, but vscode will report a problem because it is missing from
the schema. see [this debugpy
issue](microsoft/debugpy#1178) and
[#13040](microsoft/vscode-python#13040)

I used the phrase "console or terminal" because I noticed the name was
represented on both integratedTerminal and internalConsole. I didn't
test externalTerminal.

---------

Co-authored-by: Luciana Abud <45497113+luabud@users.noreply.github.com>
--------------------
Commit message for microsoft/vscode-python@2a976e3:

Reliably detect whether shell integration is working (microsoft/vscode-python#22440)

Closes microsoft/vscode-python#22439

Blocked on https://github.com/microsoft/vscode-distro/pull/822
--------------------
Commit message for microsoft/vscode-python@67b4801:

Improve shell identifier on case-insensitive system (microsoft/vscode-python#22391)

Use case-insensitive regex to remove `.exe`  extension.

See:
microsoft/vscode-python#22036 (comment)
--------------------
Commit message for microsoft/vscode-python@7bc45e5:

Do not attempt to kill the process if it has already exited (microsoft/vscode-python#22424)

Closes microsoft/vscode-python#22420

This bugs seems to have existed every since `rawProcessApi.ts` was
created. `proc.killed` can be `false` even after process has exited.
--------------------
Commit message for microsoft/vscode-python@f6cfa6e:

Remove old code for folder support in interpreter path setting (microsoft/vscode-python#22413)

Closes microsoft/vscode-python#12452

Lead-authored-by: Kartik Raj <karraj@microsoft.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Courtney Webster <60238438+cwebster-99@users.noreply.github.com>
Co-authored-by: John H. Ayad <johnhany97@gmail.com>
Co-authored-by: Wasim Lorgat <mwlorgat@gmail.com>
Co-authored-by: Shane Saravia <shanesaravia@live.ca>
Co-authored-by: Trysten <trysten@sleepyowl.com>
Co-authored-by: JamzumSum <zzzzss990315@gmail.com>
Co-authored-by: Eleanor Boyd <eleanorboyd@microsoft.com>
Co-authored-by: Karthik Nadig <kanadig@microsoft.com>
Co-authored-by: Pete Farland <pete.farland@posit.co>
Co-authored-by: Anthony Kim <62267334+anthonykim1@users.noreply.github.com>
Signed-off-by: GitHub <noreply@github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-environments Features relating to handling interpreter environments feature-request Request for new features or functionality verification-needed Verification of issue is requested verified Verification succeeded
Projects
None yet
4 participants