From b168639de5d8a2401f47580b90e4f0c1f4beee3a Mon Sep 17 00:00:00 2001 From: Jos Verlinde Date: Thu, 16 Oct 2025 15:32:45 +0200 Subject: [PATCH 1/5] chore: Move existing stubs to folder Signed-off-by: Jos Verlinde --- src/pyscript-stubs/{ => pre-existing}/__init__.pyi | 0 src/pyscript-stubs/{ => pre-existing}/base.pyi | 0 src/pyscript-stubs/{ => pre-existing}/document_class.pyi | 0 src/pyscript-stubs/{ => pre-existing}/element.pyi | 0 src/pyscript-stubs/{ => pre-existing}/node.pyi | 0 src/pyscript-stubs/{ => pre-existing}/py.typed | 0 src/pyscript-stubs/{ => pre-existing}/window_class.pyi | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename src/pyscript-stubs/{ => pre-existing}/__init__.pyi (100%) rename src/pyscript-stubs/{ => pre-existing}/base.pyi (100%) rename src/pyscript-stubs/{ => pre-existing}/document_class.pyi (100%) rename src/pyscript-stubs/{ => pre-existing}/element.pyi (100%) rename src/pyscript-stubs/{ => pre-existing}/node.pyi (100%) rename src/pyscript-stubs/{ => pre-existing}/py.typed (100%) rename src/pyscript-stubs/{ => pre-existing}/window_class.pyi (100%) diff --git a/src/pyscript-stubs/__init__.pyi b/src/pyscript-stubs/pre-existing/__init__.pyi similarity index 100% rename from src/pyscript-stubs/__init__.pyi rename to src/pyscript-stubs/pre-existing/__init__.pyi diff --git a/src/pyscript-stubs/base.pyi b/src/pyscript-stubs/pre-existing/base.pyi similarity index 100% rename from src/pyscript-stubs/base.pyi rename to src/pyscript-stubs/pre-existing/base.pyi diff --git a/src/pyscript-stubs/document_class.pyi b/src/pyscript-stubs/pre-existing/document_class.pyi similarity index 100% rename from src/pyscript-stubs/document_class.pyi rename to src/pyscript-stubs/pre-existing/document_class.pyi diff --git a/src/pyscript-stubs/element.pyi b/src/pyscript-stubs/pre-existing/element.pyi similarity index 100% rename from src/pyscript-stubs/element.pyi rename to src/pyscript-stubs/pre-existing/element.pyi diff --git a/src/pyscript-stubs/node.pyi b/src/pyscript-stubs/pre-existing/node.pyi similarity index 100% rename from src/pyscript-stubs/node.pyi rename to src/pyscript-stubs/pre-existing/node.pyi diff --git a/src/pyscript-stubs/py.typed b/src/pyscript-stubs/pre-existing/py.typed similarity index 100% rename from src/pyscript-stubs/py.typed rename to src/pyscript-stubs/pre-existing/py.typed diff --git a/src/pyscript-stubs/window_class.pyi b/src/pyscript-stubs/pre-existing/window_class.pyi similarity index 100% rename from src/pyscript-stubs/window_class.pyi rename to src/pyscript-stubs/pre-existing/window_class.pyi From 808f80c3c34b045ab3c3a5215d4e76159676a8d7 Mon Sep 17 00:00:00 2001 From: Jos Verlinde Date: Thu, 16 Oct 2025 15:33:27 +0200 Subject: [PATCH 2/5] Add PyScript-micropython reference stubs Signed-off-by: Jos Verlinde --- src/pyscript-stubs/pyscript/__init__.pyi | 61 ++ src/pyscript-stubs/pyscript/_pyscript.pyi | 48 ++ src/pyscript-stubs/pyscript/display.pyi | 38 + src/pyscript-stubs/pyscript/events.pyi | 48 ++ src/pyscript-stubs/pyscript/fetch.pyi | 169 ++++ src/pyscript-stubs/pyscript/ffi.pyi | 91 ++ src/pyscript-stubs/pyscript/flatted.pyi | 92 ++ src/pyscript-stubs/pyscript/fs.pyi | 61 ++ src/pyscript-stubs/pyscript/magic_js.pyi | 91 ++ src/pyscript-stubs/pyscript/media.pyi | 150 ++++ src/pyscript-stubs/pyscript/polyscript.pyi | 43 + src/pyscript-stubs/pyscript/storage.pyi | 90 ++ src/pyscript-stubs/pyscript/util.pyi | 34 + src/pyscript-stubs/pyscript/web.pyi | 929 +++++++++++++++++++++ src/pyscript-stubs/pyscript/websocket.pyi | 126 +++ src/pyscript-stubs/pyscript/workers.pyi | 75 ++ 16 files changed, 2146 insertions(+) create mode 100644 src/pyscript-stubs/pyscript/__init__.pyi create mode 100644 src/pyscript-stubs/pyscript/_pyscript.pyi create mode 100644 src/pyscript-stubs/pyscript/display.pyi create mode 100644 src/pyscript-stubs/pyscript/events.pyi create mode 100644 src/pyscript-stubs/pyscript/fetch.pyi create mode 100644 src/pyscript-stubs/pyscript/ffi.pyi create mode 100644 src/pyscript-stubs/pyscript/flatted.pyi create mode 100644 src/pyscript-stubs/pyscript/fs.pyi create mode 100644 src/pyscript-stubs/pyscript/magic_js.pyi create mode 100644 src/pyscript-stubs/pyscript/media.pyi create mode 100644 src/pyscript-stubs/pyscript/polyscript.pyi create mode 100644 src/pyscript-stubs/pyscript/storage.pyi create mode 100644 src/pyscript-stubs/pyscript/util.pyi create mode 100644 src/pyscript-stubs/pyscript/web.pyi create mode 100644 src/pyscript-stubs/pyscript/websocket.pyi create mode 100644 src/pyscript-stubs/pyscript/workers.pyi diff --git a/src/pyscript-stubs/pyscript/__init__.pyi b/src/pyscript-stubs/pyscript/__init__.pyi new file mode 100644 index 0000000..4e7a204 --- /dev/null +++ b/src/pyscript-stubs/pyscript/__init__.pyi @@ -0,0 +1,61 @@ +""" +PyScript makes available convenience objects, functions and attributes. + +These APIs will work with both Pyodide and MicroPython in exactly the same way. + +PyScript can run in two contexts: the main browser thread, or on a web worker. T +he following three categories of API functionality explain features that are common for: + - both main thread and worker, + - main thread only, + - and worker only. + + Most features work in both contexts in exactly the same manner, but please be aware that some are specific to either the main thread + or a worker context. + +""" +# Copyright (c) 2020-2025 Jos Verlinde +# MIT Licensed + +__all__ = [ + "PyWorker", + "config", + "current_target", + "display", + "document", + "fetch", + "js_import", + "js_modules", + "py_import", + "storage", + "sync", + "window", + "workers", + "HTML", + "Event", + "WebSocket", + "create_named_worker" +] + + +from polyscript import lazy_py_modules as py_import # type: ignore +from pyscript.display import HTML as HTML, display as display +from pyscript.events import Event as Event, when as when +from pyscript.fetch import fetch as fetch +from pyscript.magic_js import ( + RUNNING_IN_WORKER as RUNNING_IN_WORKER, + PyWorker as PyWorker, + config as config, + current_target as current_target, + document as document, + js_import as js_import, + sync as sync, + window as window, + js_modules as js_modules +) + +from pyscript.storage import Storage as Storage, storage as storage +from pyscript.websocket import WebSocket as WebSocket +from pyscript.workers import create_named_worker as create_named_worker, workers as workers + +if not RUNNING_IN_WORKER: + ... diff --git a/src/pyscript-stubs/pyscript/_pyscript.pyi b/src/pyscript-stubs/pyscript/_pyscript.pyi new file mode 100644 index 0000000..a9493cc --- /dev/null +++ b/src/pyscript-stubs/pyscript/_pyscript.pyi @@ -0,0 +1,48 @@ +# Copyright (c) 2020-2025 Jos Verlinde +# MIT Licensed + + +from typing import Any, Callable +from _typeshed import Incomplete + +def js_import(name: str) -> JSModule: + """Module level __getattr__ that returns an JSModule object for any requested attribute.""" + ... + + +class JSModule: + def __init__(self, name) -> None: ... + def __getattr__(self, field) -> Any | None: ... + + + +class Worker: + async def sync(self) -> Callable: ... + +class XWorker(Worker): + # https://pyscript.github.io/polyscript/#xworker-options + + polyfill:bool = False + window: Incomplete = ... + + def __init__(self, + file:str, + a_sync:bool=True, + config:str = "", + type:str='pyodide', # pyodide, micropython, ruby-wasm-wasi, wasmoon, webr + version:str=..., + serviceWorker:str=..., + ) -> None: ... + + # def isWindowProxy(self, ref:Incomplete) -> bool: ... + + + +class PyWorker(XWorker): + def __init__(self, name) -> None: ... + + +xworker:XWorker = ... + + + diff --git a/src/pyscript-stubs/pyscript/display.pyi b/src/pyscript-stubs/pyscript/display.pyi new file mode 100644 index 0000000..f1b0a30 --- /dev/null +++ b/src/pyscript-stubs/pyscript/display.pyi @@ -0,0 +1,38 @@ +""" +Pyscript 2025.2.3 type-stub. +see: https://docs.pyscript.net/2025.2.3/api/ +""" +# Copyright (c) 2020-2025 Jos Verlinde +# MIT Licensed + + +_MIME_METHODS = ... +_MIME_RENDERERS = ... +class HTML: + """ + Wrap a string so that display() can render it as plain HTML + """ + def __init__(self, html) -> None: + ... + + + +def display(*values, target=None, append:bool=True) -> None: + """ + A function used to display content. The function is intelligent enough to introspect the object[s] it is passed and work out how to correctly + display the object[s] in the web page based on the following mime types:: + - text/plain to show the content as text + - text/html to show the content as HTML + - image/png to show the content as + - image/jpeg to show the content as + - image/svg+xml to show the content as + - application/json to show the content as JSON + - application/javascript to put the content in