@eclipse-lyra/extension-python-runtime 0.0.0 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/{python-editor-BZ-OYhJ1.js → python-editor-u6Qw1UhF.js} +2 -2
- package/dist/{python-editor-BZ-OYhJ1.js.map → python-editor-u6Qw1UhF.js.map} +1 -1
- package/dist/{python-runtime-extension-B31nPBS0.js → python-runtime-extension-DyYuDVQi.js} +4 -4
- package/dist/{python-runtime-extension-B31nPBS0.js.map → python-runtime-extension-DyYuDVQi.js.map} +1 -1
- package/package.json +5 -1
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ extensionRegistry.registerExtension({
|
|
|
15
15
|
name: t("EXT_PYTHONRUNTIME_NAME"),
|
|
16
16
|
description: t("EXT_PYTHONRUNTIME_DESC"),
|
|
17
17
|
loader: () => Promise.all([
|
|
18
|
-
import("./python-runtime-extension-
|
|
18
|
+
import("./python-runtime-extension-DyYuDVQi.js").then((n) => n.a),
|
|
19
19
|
import("./commands-3JccKvcq.js")
|
|
20
20
|
]),
|
|
21
21
|
icon: "lyra python"
|
|
@@ -5,7 +5,7 @@ import { createRef, ref } from "lit/directives/ref.js";
|
|
|
5
5
|
import { styleMap } from "lit/directives/style-map.js";
|
|
6
6
|
import { P as PyEnv } from "./pyservice-B-tT6VHu.js";
|
|
7
7
|
import { p as pythonPackageManagerService } from "./package-manager-DTcpwrMr.js";
|
|
8
|
-
import { p as parsePackagesFromContent, c as contentWithPackagesLine } from "./python-runtime-extension-
|
|
8
|
+
import { p as parsePackagesFromContent, c as contentWithPackagesLine } from "./python-runtime-extension-DyYuDVQi.js";
|
|
9
9
|
var __defProp = Object.defineProperty;
|
|
10
10
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
11
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -244,4 +244,4 @@ LyraPythonEditor = __decorateClass([
|
|
|
244
244
|
export {
|
|
245
245
|
LyraPythonEditor
|
|
246
246
|
};
|
|
247
|
-
//# sourceMappingURL=python-editor-
|
|
247
|
+
//# sourceMappingURL=python-editor-u6Qw1UhF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python-editor-BZ-OYhJ1.js","sources":["../src/python-editor.ts"],"sourcesContent":["import { customElement, property, state } from \"lit/decorators.js\";\nimport { LyraPart } from \"@eclipse-lyra/core\";\nimport { css, html } from \"lit\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { EditorInput, EditorContentProvider, workspaceService } from \"@eclipse-lyra/core\";\nimport { LyraMonacoWidget } from \"@eclipse-lyra/extension-monaco-editor\";\nimport { PyEnv, pythonPackageManagerService } from \"./api\";\nimport { parsePackagesFromContent, contentWithPackagesLine } from \"./editor-python-run\";\nimport { toastError } from \"@eclipse-lyra/core\";\n\n@customElement(\"lyra-python-editor\")\nexport class LyraPythonEditor extends LyraPart implements EditorContentProvider {\n @property({ attribute: false })\n public input?: EditorInput;\n @property({ type: Boolean })\n public readOnly = false;\n\n @state()\n private initialContent: string | undefined = undefined;\n @state()\n private initialUri: string | undefined = undefined;\n\n @state()\n private pyenv?: PyEnv;\n @state()\n private pyConnected = false;\n @state()\n private pyConnecting = false;\n @state()\n private pyVersion?: string;\n\n private widgetRef = createRef<LyraMonacoWidget>();\n\n protected async doInitUI() {\n const file = this.input!.data;\n const textContents = await file.getContents();\n this.initialContent = textContents;\n this.initialUri = file.getName();\n this.requestUpdate();\n }\n\n private _onContentChange = () => {\n this.markDirty(true);\n };\n\n save(): void {\n const value = this.widgetRef.value?.getContent() ?? \"\";\n this.input?.data.saveContents(value);\n this.markDirty(false);\n }\n\n protected doClose() {\n this.widgetRef.value?.dispose();\n if (this.pyenv) {\n this.pyenv.close();\n this.pyenv = undefined;\n }\n this.pyConnected = false;\n this.pyVersion = undefined;\n }\n\n public getLanguage(): string | null {\n return \"python\";\n }\n\n public isLanguage(lang: string): boolean {\n return lang.toLowerCase() === \"python\";\n }\n\n public getContent(): string | null {\n return this.widgetRef.value?.getContent() ?? null;\n }\n\n public getSelection(): string | null {\n return this.widgetRef.value?.getSelection() ?? null;\n }\n\n public getSnippet(lines: number = 5): { snippet: string; cursorLine: number } | null {\n return this.widgetRef.value?.getSnippet(lines) ?? null;\n }\n\n public getFilePath(): string | null {\n return this.input?.data?.getWorkspacePath() ?? null;\n }\n\n public getPyEnv(): PyEnv | undefined {\n return this.pyenv;\n }\n\n private async initPyEnv(): Promise<void> {\n if (this.pyenv) return;\n const workspace = await workspaceService.getWorkspace();\n if (!workspace) {\n toastError(\"No workspace selected\");\n return;\n }\n this.pyenv = new PyEnv();\n await this.pyenv.init(workspace);\n this.pyConnected = true;\n try {\n const response = await this.pyenv.execCode(\"import sys; sys.version.split()[0]\");\n this.pyVersion = response?.result || \"Unknown\";\n } catch {\n this.pyVersion = \"Unknown\";\n }\n }\n\n async connectPython(): Promise<void> {\n if (this.pyConnecting || this.pyConnected) return;\n try {\n this.pyConnecting = true;\n await this.initPyEnv();\n } catch (err) {\n toastError(err instanceof Error ? err.message : String(err));\n } finally {\n this.pyConnecting = false;\n }\n }\n\n private async runScript(): Promise<void> {\n if (!this.pyConnected || !this.pyenv) {\n await this.connectPython();\n if (!this.pyenv) return;\n }\n const content = this.getContent()?.trim();\n if (!content) {\n toastError(\"No content to run\");\n return;\n }\n try {\n const packages = parsePackagesFromContent(content);\n if (packages.length > 0) await this.pyenv.loadPackages(packages);\n await this.pyenv.execCode(content);\n } catch (err) {\n toastError(err instanceof Error ? err.message : String(err));\n }\n }\n\n private updateEditorPackagesLine(packages: string[]): void {\n const content = this.getContent() ?? \"\";\n const newContent = contentWithPackagesLine(content, packages);\n if (newContent === content) return;\n this.widgetRef.value?.getModel()?.setValue(newContent);\n this.markDirty(true);\n }\n\n private openPackageManager(): void {\n if (!this.pyConnected || !this.pyenv) return;\n const content = this.getContent() ?? \"\";\n const packages = parsePackagesFromContent(content);\n pythonPackageManagerService.showPackageManager({\n packages,\n pyenv: this.pyenv,\n onPackageAdded: (name) => {\n const next = [...parsePackagesFromContent(this.getContent() ?? \"\"), name];\n this.updateEditorPackagesLine(next);\n },\n onPackageRemoved: (name) => {\n const next = parsePackagesFromContent(this.getContent() ?? \"\").filter((p) => p !== name);\n this.updateEditorPackagesLine(next);\n },\n });\n }\n\n protected renderToolbar() {\n const connectionTitle = this.pyConnecting\n ? \"Connecting to Python...\"\n : this.pyConnected\n ? \"Python Connected\"\n : \"Python Disconnected - Click to connect\";\n const connectionText = this.pyConnecting\n ? \"Connecting...\"\n : this.pyConnected && this.pyVersion\n ? `Python ${this.pyVersion}`\n : \"Not connected\";\n const iconColor = this.pyConnected\n ? \"var(--wa-color-green-40)\"\n : this.pyConnecting\n ? \"var(--wa-color-warning-500)\"\n : \"var(--wa-color-red-40)\";\n\n return html`\n <wa-button\n appearance=\"plain\"\n size=\"small\"\n style=${styleMap({ display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" })}\n ?disabled=${this.pyConnecting}\n @click=${() => this.connectPython()}\n title=${connectionTitle}\n >\n <wa-icon name=\"circle\" label=\"Python status\" style=${styleMap({ color: iconColor })}></wa-icon>\n ${connectionText}\n </wa-button>\n <wa-button\n size=\"small\"\n appearance=\"plain\"\n ?disabled=${!this.pyConnected}\n @click=${() => this.runScript()}\n title=\"Run Python script\"\n >\n <wa-icon name=\"play\" label=\"Run\"></wa-icon>\n Run\n </wa-button>\n <wa-button\n size=\"small\"\n appearance=\"plain\"\n ?disabled=${!this.pyConnected}\n @click=${() => this.openPackageManager()}\n title=\"Manage packages\"\n >\n <wa-icon name=\"box\" label=\"Packages\"></wa-icon>\n Packages\n </wa-button>\n `;\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"pyConnected\") ||\n changedProperties.has(\"pyConnecting\") ||\n changedProperties.has(\"pyVersion\")\n ) {\n this.updateToolbar();\n }\n }\n\n render() {\n if (this.initialContent === undefined) {\n return html`<div class=\"monaco-editor-placeholder\"></div>`;\n }\n return html`\n <lyra-monaco-widget\n .value=${this.initialContent}\n .uri=${this.initialUri}\n .language=${\"python\"}\n .readOnly=${this.readOnly}\n @content-change=${this._onContentChange}\n ${ref(this.widgetRef)}\n ></lyra-monaco-widget>\n `;\n }\n\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n height: 100%;\n }\n .monaco-editor-placeholder {\n flex: 1;\n min-height: 0;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"lyra-python-editor\": LyraPythonEditor;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"python-editor-u6Qw1UhF.js","sources":["../src/python-editor.ts"],"sourcesContent":["import { customElement, property, state } from \"lit/decorators.js\";\nimport { LyraPart } from \"@eclipse-lyra/core\";\nimport { css, html } from \"lit\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { EditorInput, EditorContentProvider, workspaceService } from \"@eclipse-lyra/core\";\nimport { LyraMonacoWidget } from \"@eclipse-lyra/extension-monaco-editor\";\nimport { PyEnv, pythonPackageManagerService } from \"./api\";\nimport { parsePackagesFromContent, contentWithPackagesLine } from \"./editor-python-run\";\nimport { toastError } from \"@eclipse-lyra/core\";\n\n@customElement(\"lyra-python-editor\")\nexport class LyraPythonEditor extends LyraPart implements EditorContentProvider {\n @property({ attribute: false })\n public input?: EditorInput;\n @property({ type: Boolean })\n public readOnly = false;\n\n @state()\n private initialContent: string | undefined = undefined;\n @state()\n private initialUri: string | undefined = undefined;\n\n @state()\n private pyenv?: PyEnv;\n @state()\n private pyConnected = false;\n @state()\n private pyConnecting = false;\n @state()\n private pyVersion?: string;\n\n private widgetRef = createRef<LyraMonacoWidget>();\n\n protected async doInitUI() {\n const file = this.input!.data;\n const textContents = await file.getContents();\n this.initialContent = textContents;\n this.initialUri = file.getName();\n this.requestUpdate();\n }\n\n private _onContentChange = () => {\n this.markDirty(true);\n };\n\n save(): void {\n const value = this.widgetRef.value?.getContent() ?? \"\";\n this.input?.data.saveContents(value);\n this.markDirty(false);\n }\n\n protected doClose() {\n this.widgetRef.value?.dispose();\n if (this.pyenv) {\n this.pyenv.close();\n this.pyenv = undefined;\n }\n this.pyConnected = false;\n this.pyVersion = undefined;\n }\n\n public getLanguage(): string | null {\n return \"python\";\n }\n\n public isLanguage(lang: string): boolean {\n return lang.toLowerCase() === \"python\";\n }\n\n public getContent(): string | null {\n return this.widgetRef.value?.getContent() ?? null;\n }\n\n public getSelection(): string | null {\n return this.widgetRef.value?.getSelection() ?? null;\n }\n\n public getSnippet(lines: number = 5): { snippet: string; cursorLine: number } | null {\n return this.widgetRef.value?.getSnippet(lines) ?? null;\n }\n\n public getFilePath(): string | null {\n return this.input?.data?.getWorkspacePath() ?? null;\n }\n\n public getPyEnv(): PyEnv | undefined {\n return this.pyenv;\n }\n\n private async initPyEnv(): Promise<void> {\n if (this.pyenv) return;\n const workspace = await workspaceService.getWorkspace();\n if (!workspace) {\n toastError(\"No workspace selected\");\n return;\n }\n this.pyenv = new PyEnv();\n await this.pyenv.init(workspace);\n this.pyConnected = true;\n try {\n const response = await this.pyenv.execCode(\"import sys; sys.version.split()[0]\");\n this.pyVersion = response?.result || \"Unknown\";\n } catch {\n this.pyVersion = \"Unknown\";\n }\n }\n\n async connectPython(): Promise<void> {\n if (this.pyConnecting || this.pyConnected) return;\n try {\n this.pyConnecting = true;\n await this.initPyEnv();\n } catch (err) {\n toastError(err instanceof Error ? err.message : String(err));\n } finally {\n this.pyConnecting = false;\n }\n }\n\n private async runScript(): Promise<void> {\n if (!this.pyConnected || !this.pyenv) {\n await this.connectPython();\n if (!this.pyenv) return;\n }\n const content = this.getContent()?.trim();\n if (!content) {\n toastError(\"No content to run\");\n return;\n }\n try {\n const packages = parsePackagesFromContent(content);\n if (packages.length > 0) await this.pyenv.loadPackages(packages);\n await this.pyenv.execCode(content);\n } catch (err) {\n toastError(err instanceof Error ? err.message : String(err));\n }\n }\n\n private updateEditorPackagesLine(packages: string[]): void {\n const content = this.getContent() ?? \"\";\n const newContent = contentWithPackagesLine(content, packages);\n if (newContent === content) return;\n this.widgetRef.value?.getModel()?.setValue(newContent);\n this.markDirty(true);\n }\n\n private openPackageManager(): void {\n if (!this.pyConnected || !this.pyenv) return;\n const content = this.getContent() ?? \"\";\n const packages = parsePackagesFromContent(content);\n pythonPackageManagerService.showPackageManager({\n packages,\n pyenv: this.pyenv,\n onPackageAdded: (name) => {\n const next = [...parsePackagesFromContent(this.getContent() ?? \"\"), name];\n this.updateEditorPackagesLine(next);\n },\n onPackageRemoved: (name) => {\n const next = parsePackagesFromContent(this.getContent() ?? \"\").filter((p) => p !== name);\n this.updateEditorPackagesLine(next);\n },\n });\n }\n\n protected renderToolbar() {\n const connectionTitle = this.pyConnecting\n ? \"Connecting to Python...\"\n : this.pyConnected\n ? \"Python Connected\"\n : \"Python Disconnected - Click to connect\";\n const connectionText = this.pyConnecting\n ? \"Connecting...\"\n : this.pyConnected && this.pyVersion\n ? `Python ${this.pyVersion}`\n : \"Not connected\";\n const iconColor = this.pyConnected\n ? \"var(--wa-color-green-40)\"\n : this.pyConnecting\n ? \"var(--wa-color-warning-500)\"\n : \"var(--wa-color-red-40)\";\n\n return html`\n <wa-button\n appearance=\"plain\"\n size=\"small\"\n style=${styleMap({ display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" })}\n ?disabled=${this.pyConnecting}\n @click=${() => this.connectPython()}\n title=${connectionTitle}\n >\n <wa-icon name=\"circle\" label=\"Python status\" style=${styleMap({ color: iconColor })}></wa-icon>\n ${connectionText}\n </wa-button>\n <wa-button\n size=\"small\"\n appearance=\"plain\"\n ?disabled=${!this.pyConnected}\n @click=${() => this.runScript()}\n title=\"Run Python script\"\n >\n <wa-icon name=\"play\" label=\"Run\"></wa-icon>\n Run\n </wa-button>\n <wa-button\n size=\"small\"\n appearance=\"plain\"\n ?disabled=${!this.pyConnected}\n @click=${() => this.openPackageManager()}\n title=\"Manage packages\"\n >\n <wa-icon name=\"box\" label=\"Packages\"></wa-icon>\n Packages\n </wa-button>\n `;\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n if (\n changedProperties.has(\"pyConnected\") ||\n changedProperties.has(\"pyConnecting\") ||\n changedProperties.has(\"pyVersion\")\n ) {\n this.updateToolbar();\n }\n }\n\n render() {\n if (this.initialContent === undefined) {\n return html`<div class=\"monaco-editor-placeholder\"></div>`;\n }\n return html`\n <lyra-monaco-widget\n .value=${this.initialContent}\n .uri=${this.initialUri}\n .language=${\"python\"}\n .readOnly=${this.readOnly}\n @content-change=${this._onContentChange}\n ${ref(this.widgetRef)}\n ></lyra-monaco-widget>\n `;\n }\n\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n height: 100%;\n }\n .monaco-editor-placeholder {\n flex: 1;\n min-height: 0;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"lyra-python-editor\": LyraPythonEditor;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -74,7 +74,7 @@ editorRegistry.registerEditorInputHandler({
|
|
|
74
74
|
label: "Python",
|
|
75
75
|
icon: "python",
|
|
76
76
|
lazyInit: async () => {
|
|
77
|
-
await import("./python-editor-
|
|
77
|
+
await import("./python-editor-u6Qw1UhF.js");
|
|
78
78
|
},
|
|
79
79
|
canHandle: (input) => input instanceof File && input.getName().toLowerCase().endsWith(".py"),
|
|
80
80
|
ranking: 1e3,
|
|
@@ -86,9 +86,9 @@ editorRegistry.registerEditorInputHandler({
|
|
|
86
86
|
icon: "python",
|
|
87
87
|
noOverflow: false,
|
|
88
88
|
state: {},
|
|
89
|
-
|
|
89
|
+
component: () => null
|
|
90
90
|
};
|
|
91
|
-
editorInput.
|
|
91
|
+
editorInput.component = () => html`<lyra-python-editor .input=${editorInput}></lyra-python-editor>`;
|
|
92
92
|
return editorInput;
|
|
93
93
|
}
|
|
94
94
|
});
|
|
@@ -102,4 +102,4 @@ export {
|
|
|
102
102
|
contentWithPackagesLine as c,
|
|
103
103
|
parsePackagesFromContent as p
|
|
104
104
|
};
|
|
105
|
-
//# sourceMappingURL=python-runtime-extension-
|
|
105
|
+
//# sourceMappingURL=python-runtime-extension-DyYuDVQi.js.map
|
package/dist/{python-runtime-extension-B31nPBS0.js.map → python-runtime-extension-DyYuDVQi.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python-runtime-extension-
|
|
1
|
+
{"version":3,"file":"python-runtime-extension-DyYuDVQi.js","sources":["../src/editor-python-run.ts","../src/python-runtime-extension.ts"],"sourcesContent":["export const PACKAGES_COMMENT_PREFIX = \"# @py-packages:\";\nconst MAGIC_COMMENT_REGEX = /^#\\s*@py-packages:\\s*(.+)$/i;\n\nexport function parsePackagesFromContent(content: string): string[] {\n const firstLine = content.split(\"\\n\")[0] ?? \"\";\n const match = firstLine.match(MAGIC_COMMENT_REGEX);\n if (!match) return [];\n return match[1]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n}\n\nexport function contentWithPackagesLine(content: string, packages: string[]): string {\n const lines = content.split(\"\\n\");\n const idx = lines.findIndex((line) => MAGIC_COMMENT_REGEX.test(line));\n const newLine = packages.length > 0 ? `${PACKAGES_COMMENT_PREFIX} ${packages.join(\", \")}` : null;\n\n if (idx >= 0) {\n if (newLine) {\n lines[idx] = newLine;\n } else {\n lines.splice(idx, 1);\n }\n } else if (newLine) {\n lines.unshift(newLine);\n }\n return lines.join(\"\\n\");\n}\n","import {\n rootContext,\n registerAll,\n commandRegistry,\n workspaceService,\n toastInfo,\n toastError,\n editorRegistry,\n File,\n type EditorInput,\n} from \"@eclipse-lyra/core\";\nimport { html } from \"lit\";\n\ntype EditorWithLanguage = { isLanguage?(lang: string): boolean };\nimport { PyEnv } from \"./pyservice\";\nimport { parsePackagesFromContent } from \"./editor-python-run\";\nimport { pythonPackageManagerService } from \"./package-manager\";\n\nexport { PyEnv } from \"./pyservice\";\nexport { pythonPackageManagerService } from \"./package-manager\";\n\nregisterAll({\n command: {\n id: \"python\",\n name: \"Run Python Script\",\n description: \"Executes a Python script given its file path\",\n parameters: [\n { name: \"script\", description: \"the path to a Python script to run\", required: false },\n ],\n },\n handler: {\n execute: async (context: any) => {\n const script: string = context.params?.[\"script\"];\n if (!script) return;\n const pyenv = new PyEnv();\n await pyenv.init(undefined, { params: context.params });\n await pyenv.execScript(script);\n },\n },\n});\n\nregisterAll({\n command: {\n id: \"python.openEditorPackageManager\",\n name: \"Manage packages\",\n description: \"Manage Python packages for the editor environment\",\n parameters: [],\n },\n handler: {\n canExecute: (ctx) => !!(ctx.activeEditor as EditorWithLanguage)?.isLanguage?.(\"python\"),\n execute: async (ctx) => {\n const ed = ctx.activeEditor as { getContent?: () => string; getPyEnv?: () => PyEnv | undefined } | undefined;\n if (!ed) {\n toastError(\"No active editor\");\n return;\n }\n const content = ed?.getContent?.() ?? \"\";\n const packages = parsePackagesFromContent(content);\n const pyenv = ed.getPyEnv?.();\n pythonPackageManagerService.showPackageManager({\n packages,\n pyenv,\n });\n },\n },\n});\n\neditorRegistry.registerEditorInputHandler({\n editorId: \"system.python-editor\",\n label: \"Python\",\n icon: \"python\",\n lazyInit: async () => {\n await import(\"./python-editor\");\n },\n canHandle: (input: unknown) =>\n input instanceof File && input.getName().toLowerCase().endsWith(\".py\"),\n ranking: 1000,\n handle: async (input: File) => {\n const editorInput: EditorInput = {\n title: input.getName(),\n data: input,\n key: input.getName(),\n icon: \"python\",\n noOverflow: false,\n state: {},\n component: () => null as any,\n };\n\n editorInput.component = () =>\n html`<lyra-python-editor .input=${editorInput}></lyra-python-editor>`;\n\n return editorInput;\n },\n});\n"],"names":[],"mappings":";;;;AAAO,MAAM,0BAA0B;AACvC,MAAM,sBAAsB;AAErB,SAAS,yBAAyB,SAA2B;AAChE,QAAM,YAAY,QAAQ,MAAM,IAAI,EAAE,CAAC,KAAK;AAC5C,QAAM,QAAQ,UAAU,MAAM,mBAAmB;AACjD,MAAI,CAAC,MAAO,QAAO,CAAA;AACnB,SAAO,MAAM,CAAC,EACT,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAA,CAAM,EACnB,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AACnC;AAEO,SAAS,wBAAwB,SAAiB,UAA4B;AACjF,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,QAAM,MAAM,MAAM,UAAU,CAAC,SAAS,oBAAoB,KAAK,IAAI,CAAC;AACpE,QAAM,UAAU,SAAS,SAAS,IAAI,GAAG,uBAAuB,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK;AAE5F,MAAI,OAAO,GAAG;AACV,QAAI,SAAS;AACT,YAAM,GAAG,IAAI;AAAA,IACjB,OAAO;AACH,YAAM,OAAO,KAAK,CAAC;AAAA,IACvB;AAAA,EACJ,WAAW,SAAS;AAChB,UAAM,QAAQ,OAAO;AAAA,EACzB;AACA,SAAO,MAAM,KAAK,IAAI;AAC1B;ACPA,YAAY;AAAA,EACR,SAAS;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,MACR,EAAE,MAAM,UAAU,aAAa,sCAAsC,UAAU,MAAA;AAAA,IAAM;AAAA,EACzF;AAAA,EAEJ,SAAS;AAAA,IACL,SAAS,OAAO,YAAiB;AAC7B,YAAM,SAAiB,QAAQ,SAAS,QAAQ;AAChD,UAAI,CAAC,OAAQ;AACb,YAAM,QAAQ,IAAI,MAAA;AAClB,YAAM,MAAM,KAAK,QAAW,EAAE,QAAQ,QAAQ,QAAQ;AACtD,YAAM,MAAM,WAAW,MAAM;AAAA,IACjC;AAAA,EAAA;AAER,CAAC;AAED,YAAY;AAAA,EACR,SAAS;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY,CAAA;AAAA,EAAC;AAAA,EAEjB,SAAS;AAAA,IACL,YAAY,CAAC,QAAQ,CAAC,CAAE,IAAI,cAAqC,aAAa,QAAQ;AAAA,IACtF,SAAS,OAAO,QAAQ;AACpB,YAAM,KAAK,IAAI;AACf,UAAI,CAAC,IAAI;AACL,mBAAW,kBAAkB;AAC7B;AAAA,MACJ;AACA,YAAM,UAAU,IAAI,aAAA,KAAkB;AACtC,YAAM,WAAW,yBAAyB,OAAO;AACjD,YAAM,QAAQ,GAAG,WAAA;AACjB,kCAA4B,mBAAmB;AAAA,QAC3C;AAAA,QACA;AAAA,MAAA,CACH;AAAA,IACL;AAAA,EAAA;AAER,CAAC;AAED,eAAe,2BAA2B;AAAA,EACtC,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU,YAAY;AAClB,UAAM,OAAO,6BAAiB;AAAA,EAClC;AAAA,EACA,WAAW,CAAC,UACR,iBAAiB,QAAQ,MAAM,QAAA,EAAU,YAAA,EAAc,SAAS,KAAK;AAAA,EACzE,SAAS;AAAA,EACT,QAAQ,OAAO,UAAgB;AAC3B,UAAM,cAA2B;AAAA,MAC7B,OAAO,MAAM,QAAA;AAAA,MACb,MAAM;AAAA,MACN,KAAK,MAAM,QAAA;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO,CAAA;AAAA,MACP,WAAW,MAAM;AAAA,IAAA;AAGrB,gBAAY,YAAY,MACpB,kCAAkC,WAAW;AAEjD,WAAO;AAAA,EACX;AACJ,CAAC;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-lyra/extension-python-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -31,5 +31,9 @@
|
|
|
31
31
|
"typescript": "^5.9.3",
|
|
32
32
|
"vite": "^7.1.12",
|
|
33
33
|
"vite-plugin-dts": "^4.5.4"
|
|
34
|
+
},
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/eclipse-lyra/core"
|
|
34
38
|
}
|
|
35
39
|
}
|