mirror of
https://github.com/pyscript/pyscript.git
synced 2026-02-23 08:03:01 -05:00
kill unwrapped_remote (#1490)
* kill unwrapped_remote * linting * don't use callKwargs for python plugins * fix tests and improve types
This commit is contained in:
@@ -4,9 +4,11 @@ import { UserError, ErrorCode } from './exceptions';
|
||||
import { getLogger } from './logger';
|
||||
import { make_PyScript } from './components/pyscript';
|
||||
import { InterpreterClient } from './interpreter_client';
|
||||
import { make_PyRepl } from './components/pyrepl';
|
||||
|
||||
const logger = getLogger('plugin');
|
||||
type PyScriptTag = InstanceType<ReturnType<typeof make_PyScript>>;
|
||||
type PyReplTag = InstanceType<ReturnType<typeof make_PyRepl>>;
|
||||
|
||||
export class Plugin {
|
||||
/** Validate the configuration of the plugin and handle default values.
|
||||
@@ -84,7 +86,12 @@ export class Plugin {
|
||||
* @param options.outEl The element that the result of the REPL evaluation will be output to.
|
||||
* @param options.pyReplTag The <py-repl> HTML tag the originated the evaluation
|
||||
*/
|
||||
beforePyReplExec(options: { interpreter: InterpreterClient; src: string; outEl: HTMLElement; pyReplTag: any }) {
|
||||
beforePyReplExec(options: {
|
||||
interpreter: InterpreterClient;
|
||||
src: string;
|
||||
outEl: HTMLElement;
|
||||
pyReplTag: PyReplTag;
|
||||
}) {
|
||||
/* empty */
|
||||
}
|
||||
|
||||
@@ -100,7 +107,7 @@ export class Plugin {
|
||||
interpreter: InterpreterClient;
|
||||
src: string;
|
||||
outEl: HTMLElement;
|
||||
pyReplTag: HTMLElement;
|
||||
pyReplTag: PyReplTag;
|
||||
result: any;
|
||||
}) {
|
||||
/* empty */
|
||||
@@ -126,10 +133,26 @@ export type PythonPlugin = {
|
||||
configure?: (config: AppConfig) => Promise<void>;
|
||||
afterSetup?: (interpreter: InterpreterClient) => Promise<void>;
|
||||
afterStartup?: (interpreter: InterpreterClient) => Promise<void>;
|
||||
beforePyScriptExec?: { callKwargs: (options: any) => Promise<void> };
|
||||
afterPyScriptExec?: { callKwargs: (options: any) => Promise<void> };
|
||||
beforePyReplExec?: { callKwargs: (options: any) => Promise<void> };
|
||||
afterPyReplExec?: { callKwargs: (options: any) => Promise<void> };
|
||||
beforePyScriptExec?: (interpreter: InterpreterClient, src: string, pyScriptTag: PyScriptTag) => Promise<void>;
|
||||
afterPyScriptExec?: (
|
||||
interpreter: InterpreterClient,
|
||||
src: string,
|
||||
pyScriptTag: PyScriptTag,
|
||||
result: any,
|
||||
) => Promise<void>;
|
||||
beforePyReplExec?: (
|
||||
interpreter: InterpreterClient,
|
||||
src: string,
|
||||
outEl: HTMLElement,
|
||||
pyReplTag: PyReplTag,
|
||||
) => Promise<void>;
|
||||
afterPyReplExec?: (
|
||||
interpreter: InterpreterClient,
|
||||
src: string,
|
||||
outEl: HTMLElement,
|
||||
pyReplTag: PyReplTag,
|
||||
result: any,
|
||||
) => Promise<void>;
|
||||
onUserError?: (error: UserError) => Promise<void>;
|
||||
};
|
||||
|
||||
@@ -188,7 +211,9 @@ export class PluginManager {
|
||||
|
||||
async beforePyScriptExec(options: { interpreter: InterpreterClient; src: string; pyScriptTag: PyScriptTag }) {
|
||||
await Promise.all(this._plugins.map(p => p.beforePyScriptExec?.(options)));
|
||||
await Promise.all(this._pythonPlugins.map(p => p.beforePyScriptExec.callKwargs(options)));
|
||||
await Promise.all(
|
||||
this._pythonPlugins.map(p => p.beforePyScriptExec?.(options.interpreter, options.src, options.pyScriptTag)),
|
||||
);
|
||||
}
|
||||
|
||||
async afterPyScriptExec(options: {
|
||||
@@ -198,22 +223,47 @@ export class PluginManager {
|
||||
result: any;
|
||||
}) {
|
||||
await Promise.all(this._plugins.map(p => p.afterPyScriptExec?.(options)));
|
||||
await Promise.all(this._pythonPlugins.map(p => p.afterPyScriptExec.callKwargs(options)));
|
||||
await Promise.all(
|
||||
this._pythonPlugins.map(
|
||||
p => p.afterPyScriptExec?.(options.interpreter, options.src, options.pyScriptTag, options.result),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
async beforePyReplExec(options: {
|
||||
interpreter: InterpreterClient;
|
||||
src: string;
|
||||
outEl: HTMLElement;
|
||||
pyReplTag: any;
|
||||
pyReplTag: PyReplTag;
|
||||
}) {
|
||||
await Promise.all(this._plugins.map(p => p.beforePyReplExec?.(options)));
|
||||
await Promise.all(this._pythonPlugins.map(p => p.beforePyReplExec.callKwargs(options)));
|
||||
await Promise.all(
|
||||
this._pythonPlugins.map(
|
||||
p => p.beforePyReplExec?.(options.interpreter, options.src, options.outEl, options.pyReplTag),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
async afterPyReplExec(options: { interpreter: InterpreterClient; src: string; outEl; pyReplTag; result }) {
|
||||
async afterPyReplExec(options: {
|
||||
interpreter: InterpreterClient;
|
||||
src: string;
|
||||
outEl: HTMLElement;
|
||||
pyReplTag: PyReplTag;
|
||||
result: any;
|
||||
}) {
|
||||
await Promise.all(this._plugins.map(p => p.afterPyReplExec?.(options)));
|
||||
await Promise.all(this._pythonPlugins.map(p => p.afterPyReplExec.callKwargs(options)));
|
||||
await Promise.all(
|
||||
this._pythonPlugins.map(
|
||||
p =>
|
||||
p.afterPyReplExec?.(
|
||||
options.interpreter,
|
||||
options.src,
|
||||
options.outEl,
|
||||
options.pyReplTag,
|
||||
options.result,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
async onUserError(error: UserError) {
|
||||
|
||||
Reference in New Issue
Block a user