Repository navigation
Expose interpreter path using API #11294
Copy link
Copy link
Closed
Labels
area-environmentsFeatures relating to handling interpreter environmentsFeatures relating to handling interpreter environmentsfeature-requestRequest for new features or functionalityRequest for new features or functionality
Description
THIS WILL SOON BE REMOVED. CHECK #12596 FOR THE UPDATED DESIGN PROPOSAL
This code snippet shows how to use the new API, could be helpful.
Update the API as follows by adding a settings section,
interface IExtensionApi {
/**
* Promise indicating whether all parts of the extension have completed loading or not.
* @type {Promise<void>}
* @memberof IExtensionApi
*/
ready: Promise<void>;
debug: {
/**
* Generate an array of strings for commands to pass to the Python executable to launch the debugger for remote debugging.
* Users can append another array of strings of what they want to execute along with relevant arguments to Python.
* E.g `['/Users/..../pythonVSCode/pythonFiles/ptvsd_launcher.py', '--host', 'localhost', '--port', '57039', '--wait']`
* @param {string} host
* @param {number} port
* @param {boolean} [waitUntilDebuggerAttaches=true]
* @returns {Promise<string[]>}
*/
getRemoteLauncherCommand(host: string, port: number, waitUntilDebuggerAttaches: boolean): Promise<string[]>;
};
/**
* Return internal settings within the extension which are stored in VSCode storage
*/
settings: {
/**
* Returns the Python execution command corresponding to the specified resource, taking into account
* any workspace-specific settings for the workspace to which this resource belongs.
* E.g of execution commands returned could be,
* * `['<path to the interpreter set in settings>']`
* * `['<path to the interpreter selected by the extension when setting is not set>']`
* * `['conda', 'run', 'python']` which is used to run from within Conda environments.
* or something similar for some other Python environments.
* @param {Resource} [resource] A resource for which the setting is asked for.
* * When no resource is provided, the setting scoped to the first workspace folder is returned.
* * If no folder is present, it returns the global setting.
* @returns {(string[] | undefined)} When return value is `undefined`, it means no interpreter is set.
* Otherwise, join the items returned using space to construct the full execution command.
*/
getExecutionCommand(resource?: Resource): string[] | undefined;
};
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area-environmentsFeatures relating to handling interpreter environmentsFeatures relating to handling interpreter environmentsfeature-requestRequest for new features or functionalityRequest for new features or functionality
Activity
karrtikr commentedon Apr 21, 2020
formulahendry/vscode-code-runner#604
karrtikr commentedon Apr 22, 2020
formulahendry/vscode-code-runner#604 (comment):
We've to make sure all these 4 cases work,
Proposed changes
Code runner
In the new version of code runner,
We would check if user is using the old or the new python extension using the new setting.
Python extension
How to check from extension A if user is using the old version of extension B or the new one
Introduce a flag in
package.jsonof both the extensions. Within extension A, check ifpackage.jsonof extension B has flag set. If it is set, it's the newer version of the extension.Python extension
package.jsonof the extension, which states if the extension is using the new interpreter storage or not. We're adding the following to ourpackage.json,So you can access the flag using,
Code runner
Please add a similar flag in
package.jsonand let us know. You can use the following to call our API, which makes sure the extension is activated before calling the API:Note we will have to release Code runnner extension first, followed by the extension release. (which is targeted before May 12)
DonJayamanne commentedon Apr 22, 2020
karrtikr commentedon Apr 23, 2020
brettcannon commentedon Apr 23, 2020
DonJayamanne commentedon Apr 23, 2020