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

ENH Rework streams handling #4035

Merged
merged 45 commits into from
Aug 21, 2023
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
0d841b6
ENH Rework streams handling
hoodmane Jul 1, 2023
08eaded
Make sure to bind stream handlers to options object, update doc strings
hoodmane Aug 4, 2023
be16b7c
Update streams.md long form streams explanation for stdin handlers
hoodmane Aug 4, 2023
9f2e8c7
Merge branch 'main' into streams-new2
hoodmane Aug 4, 2023
eff05a6
Fix documentation rendering
hoodmane Aug 4, 2023
59b1294
Fix makefile
hoodmane Aug 4, 2023
d7e8069
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 4, 2023
02206de
Fix esbuild config
hoodmane Aug 4, 2023
236ac4c
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 4, 2023
b26274f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 4, 2023
6fe0f7b
Fix noargs setStdxxx
hoodmane Aug 4, 2023
d4f5279
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 4, 2023
2d9bea6
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 4, 2023
4477db5
Add lexer support for String.raw
hoodmane Aug 4, 2023
4280bd5
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 7, 2023
1a5e519
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 7, 2023
6f2a5f6
Update docs
hoodmane Aug 7, 2023
2175a9e
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 7, 2023
24f332a
Merge branch 'main' into streams-new2
hoodmane Aug 9, 2023
e2a189b
Add EAGAIN support
hoodmane Aug 9, 2023
ea5bee4
Update streams.md more
hoodmane Aug 9, 2023
9ccb330
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 9, 2023
0ac6cbc
Fix build
hoodmane Aug 9, 2023
a2f5581
simplify a bit
hoodmane Aug 9, 2023
1f977be
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 9, 2023
1167585
Fix docs
hoodmane Aug 9, 2023
dc8f7b7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 9, 2023
4b3749c
Fix again
hoodmane Aug 9, 2023
0b8168c
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 9, 2023
76e7919
Try to fix Makefile
hoodmane Aug 9, 2023
ac07c9c
Fix Makefile again
hoodmane Aug 12, 2023
906df09
Merge branch 'streams-new2' of github.com:hoodmane/pyodide into strea…
hoodmane Aug 12, 2023
06b71e1
Fix build again
hoodmane Aug 15, 2023
595f61d
Add comment
hoodmane Aug 15, 2023
a9cd26a
Fix test in firefox
hoodmane Aug 15, 2023
3a12d93
Clean up generated_struct_info stuff
hoodmane Aug 17, 2023
115c4c4
Merge branch 'main' into streams-new2
hoodmane Aug 17, 2023
cd423d7
Fix file name
hoodmane Aug 17, 2023
4e26f8f
Fix fsync
hoodmane Aug 17, 2023
737b75c
Apply suggestions from code review
hoodmane Aug 18, 2023
2cbe1b6
Revert some unneeded changes
hoodmane Aug 18, 2023
78b213d
Adjust some signatures
hoodmane Aug 18, 2023
f874ac5
Add a comment
hoodmane Aug 18, 2023
23dd096
Update changelog and change setStdin default to use prompt
hoodmane Aug 20, 2023
75df8fc
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 10 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ node_modules/.installed : src/js/package.json src/js/package-lock.json
ln -sfn src/js/node_modules/ node_modules
touch node_modules/.installed

dist/pyodide.js src/js/_pyodide.out.js: src/js/*.ts src/js/pyproxy.gen.ts src/js/error_handling.gen.ts node_modules/.installed
cd src/js && npm run tsc && node esbuild.config.mjs && cd -
dist/pyodide.js src/js/_pyodide.out.js: src/js/*.ts src/js/pyproxy.gen.ts src/js/error_handling.gen.ts src/js/generated_struct_info32.gen.json node_modules/.installed
cd src/js && node esbuild.config.mjs && npm run tsc && cd -

dist/package.json : src/js/package.json
cp $< $@
Expand All @@ -134,13 +134,19 @@ dist/package.json : src/js/package.json
npm-link: dist/package.json
cd src/test-js && npm ci && npm link ../../dist

dist/pyodide.d.ts dist/pyodide/ffi.d.ts: src/js/*.ts src/js/pyproxy.gen.ts src/js/error_handling.gen.ts
npx dts-bundle-generator src/js/{pyodide,ffi}.ts --export-referenced-types false --project src/js/tsconfig.json
dist/pyodide.d.ts dist/pyodide/ffi.d.ts: src/js/*.ts src/js/pyproxy.gen.ts src/js/error_handling.gen.ts src/js/generated_struct_info32.gen.json
node src/js/esbuild.config.mjs
# See https://github.com/timocov/dts-bundle-generator/issues/255
echo "export declare const defines: {[k:string] : number};" > src/js/generated_struct_info32.gen.json.d.ts
cd src/js && npx dts-bundle-generator {pyodide,ffi}.ts --export-referenced-types false --project tsconfig.json
hoodmane marked this conversation as resolved.
Show resolved Hide resolved
mv src/js/{pyodide,ffi}.d.ts dist
python3 tools/fixup-type-definitions.py dist/pyodide.d.ts
python3 tools/fixup-type-definitions.py dist/ffi.d.ts


src/js/generated_struct_info32.gen.json : emsdk/emsdk/.complete
cp emsdk/emsdk/upstream/emscripten/src/generated_struct_info32.json $@
hoodmane marked this conversation as resolved.
Show resolved Hide resolved


src/js/error_handling.gen.ts : src/core/error_handling.ts
cp $< $@
Expand Down
16 changes: 16 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import pathlib
import re
import sys
from collections.abc import Sequence

import pytest

Expand Down Expand Up @@ -250,3 +251,18 @@ def extra_checks_test_wrapper(browser, trace_hiwire_refs, trace_pyproxies):

def package_is_built(package_name):
return _package_is_built(package_name, pytest.pyodide_dist_dir)


def strip_assertions_stderr(messages: Sequence[str]) -> list[str]:
"""Strip additional messages on stderr included when ASSERTIONS=1"""
res = []
for msg in messages:
if msg.strip() in [
"sigaction: signal type not supported: this is a no-op.",
"Calling stub instead of siginterrupt()",
"warning: no blob constructor, cannot create blobs with mimetypes",
"warning: no BlobBuilder",
]:
continue
res.append(msg)
return res
29 changes: 28 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
autodoc_default_flags = ["members", "inherited-members"]

intersphinx_mapping = {
"python": ("https://docs.python.org/3.10", None),
"python": ("https://docs.python.org/3.11", None),
"micropip": (f"https://micropip.pyodide.org/en/v{micropip.__version__}/", None),
"numpy": ("https://numpy.org/doc/stable/", None),
}
Expand Down Expand Up @@ -259,9 +259,36 @@ def ensure_typedoc_on_path():
)


def get_emscripten_version():
hoodmane marked this conversation as resolved.
Show resolved Hide resolved
prefix = "export PYODIDE_EMSCRIPTEN_VERSION ?= "
for line in Path("../Makefile.envs").read_text().splitlines():
if line.startswith(prefix):
return line.removeprefix(prefix)


def create_struct_info():
struct_info_path = Path("../src/js/generated_struct_info32.gen.json")
if struct_info_path.exists():
return
src_path = Path(
"../emsdk/emsdk/upstream/emscripten/src/generated_struct_info32.json"
)
if src_path.exists():
shutil.copy(src_path, struct_info_path)
return
import urllib

urllib.request.urlretrieve(
f"https://raw.githubusercontent.com/emscripten-core/emscripten/{get_emscripten_version()}/src/generated_struct_info32.json",
struct_info_path,
)


def create_generated_typescript_files(app):
shutil.copy("../src/core/pyproxy.ts", "../src/js/pyproxy.gen.ts")
shutil.copy("../src/core/error_handling.ts", "../src/js/error_handling.gen.ts")
shutil.copy("../src/core/error_handling.ts", "../src/js/error_handling.gen.ts")
create_struct_info()
app.config.js_source_path = [str(x) for x in Path("../src/js").glob("*.ts")]

def remove_pyproxy_gen_ts():
Expand Down
7 changes: 5 additions & 2 deletions docs/sphinx_pyodide/sphinx_pyodide/lexers.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ class PyodideLexer(JavascriptLexer):
],
"python-code": [
(
rf"({quotemark})((?:\\\\|\\[^\\]|[^{quotemark}\\])*)({quotemark})",
rf"([A-Za-z.]*)({quotemark})((?:\\\\|\\[^\\]|[^{quotemark}\\])*)({quotemark})",
bygroups(
Token.Literal.String, using(PythonLexer), Token.Literal.String
using(JavascriptLexer),
Token.Literal.String,
using(PythonLexer),
Token.Literal.String,
),
"#pop",
)
Expand Down