10000 [3.11] gh-96883: browser: include concurrent.futures (GH-96886). · python/cpython@920ff93 · GitHub
[go: up one dir, main page]

Skip to content

Commit 920ff93

Browse files
committed
[3.11] gh-96883: browser: include concurrent.futures (GH-96886).
(cherry picked from commit 0b62964) Co-authored-by: Christian Heimes <christian@python.org>
1 parent d39fce0 commit 920ff93

File tree

2 files changed

+19
-17
lines changed

2 files changed

+19
-17
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
``wasm32-emscripten`` builds for browsers now include
2+
:mod:`concurrent.futures` for :mod:`asyncio` and :mod:`unittest.mock`.

Tools/wasm/wasm_assets.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
# Pure Python implementations of C extensions
5959
"_pydecimal.py",
6060
"_pyio.py",
61+
# concurrent threading
62+
"concurrent/futures/thread.py",
6163
# Misc unused or large files
6264
"pydoc_data/",
6365
"msilib/",
@@ -99,13 +101,12 @@
99101
"_dbm": ["dbm/ndbm.py"],
100102
"_gdbm": ["dbm/gnu.py"],
101103
"_json": ["json/"],
102-
"_multiprocessing": ["concurrent/", "multiprocessing/"],
104+
"_multiprocessing": ["concurrent/futures/process.py", "multiprocessing/"],
103105
"pyexpat": ["xml/", "xmlrpc/"],
104106
"readline": ["rlcompleter.py"],
105107
"_sqlite3": ["sqlite3/"],
106108
"_ssl": ["ssl.py"],
107109
"_tkinter": ["idlelib/", "tkinter/", "turtle.py", "turtledemo/"],
108-
109110
"_zoneinfo": ["zoneinfo/"],
110111
}
111112

@@ -125,21 +126,18 @@
125126

126127

127128
def get_builddir(args: argparse.Namespace) -> pathlib.Path:
128-
"""Get builddir path from pybuilddir.txt
129-
"""
129+
"""Get builddir path from pybuilddir.txt"""
130130
with open("pybuilddir.txt", encoding="utf-8") as f:
131131
builddir = f.read()
132132
return pathlib.Path(builddir)
133133

134134

135135
def get_sysconfigdata(args: argparse.Namespace) -> pathlib.Path:
136-
"""Get path to sysconfigdata relative to build root
137-
"""
136+
"""Get path to sysconfigdata relative to build root"""
138137
data_name = sysconfig._get_sysconfigdata_name()
139138
if not data_name.startswith(SYSCONFIG_NAMES):
140139
raise ValueError(
141-
f"Invalid sysconfig data name '{data_name}'.",
142-
SYSCONFIG_NAMES
140+
f"Invalid sysconfig data name '{data_name}'.", SYSCONFIG_NAMES
143141
)
144142
filename = data_name + ".py"
145143
return args.builddir / filename
@@ -150,20 +148,23 @@ def create_stdlib_zip(
150148
*,
151149
optimize: int = 0,
152150
) -> None:
153-
def filterfunc(name: str) -> bool:
154-
return not name.startswith(args.omit_subdirs_absolute)
151+
def filterfunc(filename: str) -> bool:
152+
pathname = pathlib.Path(filename).resolve()
153+
return pathname not in args.omit_files_absolute
155154

156155
with zipfile.PyZipFile(
157-
args.wasm_stdlib_zip, mode="w", compression=args.compression, optimize=optimize
156+
args.wasm_stdlib_zip,
157+
mode="w",
158+
compression=args.compression,
159+
optimize=optimize,
158160
) as pzf:
159161
if args.compresslevel is not None:
160162
pzf.compresslevel = args.compresslevel
161163
pzf.writepy(args.sysconfig_data)
162164
for entry in sorted(args.srcdir_lib.iterdir()):
165+
entry = entry.resolve()
163166
if entry.name == "__pycache__":
164167
continue
165-
if entry in args.omit_files_absolute:
166-
continue
167168
if entry.name.endswith(".py") or entry.is_dir():
168169
# writepy() writes .pyc files (bytecode).
169170
pzf.writepy(entry, filterfunc=filterfunc)
@@ -247,10 +248,9 @@ def main():
247248
if not extmods.get(modname):
248249
omit_files.extend(modfiles)
249250

250-
args.omit_files_absolute = {args.srcdir_lib / name for name in omit_files}
251-
args.omit_subdirs_absolute = tuple(
252-
str(args.srcdir_lib / name) for name in OMIT_SUBDIRS
253-
)
251+
args.omit_files_absolute = {
252+
(args.srcdir_lib / name).resolve() for name in omit_files
253+
}
254254

255255
# Empty, unused directory for dynamic libs, but required for site initialization.
256256
args.wasm_dynload.mkdir(parents=True, exist_ok=True)

0 commit comments

Comments
 (0)
0