diff --git a/docs/example_md.md b/docs/example_md.md index d03be05..603076f 100644 --- a/docs/example_md.md +++ b/docs/example_md.md @@ -4,6 +4,7 @@ py-config: autoclose: true packages: - matplotlib + - hallo_world-0.1.0-py2.py3-none-any.whl --- # Example with MyST diff --git a/docs/example_rst.rst b/docs/example_rst.rst index 71e6f7c..6a14c38 100644 --- a/docs/example_rst.rst +++ b/docs/example_rst.rst @@ -4,6 +4,7 @@ autoclose: true packages: - matplotlib + - hallo_world-0.1.0-py2.py3-none-any.whl Example with RST ================ diff --git a/docs/hallo_world-0.1.0-py2.py3-none-any.whl b/docs/hallo_world-0.1.0-py2.py3-none-any.whl new file mode 100644 index 0000000..68b0129 Binary files /dev/null and b/docs/hallo_world-0.1.0-py2.py3-none-any.whl differ diff --git a/src/sphinx_pyscript.py b/src/sphinx_pyscript.py index 0dfa4dc..e69a98a 100644 --- a/src/sphinx_pyscript.py +++ b/src/sphinx_pyscript.py @@ -3,6 +3,7 @@ __version__ = "0.1.0" import json +import os from pathlib import Path import yaml @@ -134,6 +135,7 @@ def doctree_read(app: Sphinx, doctree: nodes.document): ) else: doctree["pyscript"] = True + _copy_wheels(app, data) data_str = json.dumps(data, indent=2) doctree.append( nodes.raw( @@ -142,3 +144,25 @@ def doctree_read(app: Sphinx, doctree: nodes.document): format="html", ) ) + + +def _copy_wheels(app: Sphinx, data: dict) -> None: + """Copy wheels to the output directory.""" + packages = [] + for pkg in data.get("packages", []): + if pkg.endswith(".whl"): + rel_filename, filename = app.env.relfn2path(pkg, app.env.docname) + app.env.dependencies[app.env.docname].add(rel_filename) + if not os.access(filename, os.R_OK): + LOGGER.warning( + f"Could not read pyscript wheel: {filename}", + location=(app.env.docname, 0), + ) + continue + packages.append( + "_downloads/" + app.env.dlfiles.add_file(app.env.docname, rel_filename) + ) + else: + packages.append(pkg) + if packages: + data["packages"] = packages