Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork11.9k
ENH, DOC: Add support for interactive examples for NumPy withjupyterlite-sphinx#26745
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Co-Authored-By: Albert Steppi <1953382+steppi@users.noreply.github.com>
[skip cirrus] [skip azp]
charris commentedJun 18, 2024
This could use a release note. |
| ..try_examples:: | ||
| >>>import numpyas np | ||
| >>>a= np.memmap('newfile.dat',dtype=float,mode='w+',shape=1000) | ||
| >>>a[10]=10.0 | ||
| >>>a[30]=30.0 | ||
| >>>del a | ||
| >>>b= np.fromfile('newfile.dat',dtype=float) | ||
| >>>print(b[10], b[30]) | ||
| 10.0 30.0 | ||
| >>>a= np.memmap('newfile.dat',dtype=float) | ||
| >>>print(a[10], a[30]) | ||
| 10.0 30.0 |
agriyakhetarpalJun 18, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I haven't tested whether every example works because there are way too many, but I did test this and this is one of the examples that doesn't, and fails with the error
ValueError: mmap length is greater than file sizeand reducing the shape from1000 to100 doesn't help:OSError: [Errno 43] No such device (edit: this error occurs on subsequent runs on the same cell becausenewfile.dat cannot be loaded)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I'm not sure if there is a way to enable the Pyodide file system or interact with Pyodide directly through a Pythonic interface like this.
Uh oh!
There was an error while loading.Please reload this page.
[skip cirrus] [skip azp]
agriyakhetarpal commentedJun 18, 2024
[skip cirrus] [skip azp]
08a1ecf to6b416aeCompareagriyakhetarpal commentedJun 18, 2024
I forgot to skip Azure Pipelines and Cirrus in my previous commit – please don't mind the force-push, my apologies |
agriyakhetarpal commentedJun 18, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I notice that for some reason the CircleCI build isn't able to load the examples, most likely because Edit: I think I figured it out – CircleCI is storing the notebooks ina different path, but GitHub Pages does not do so. Please use my GitHub Pages site to test things out:https://agriyakhetarpal.github.io/numpy/reference/maskedarray.generic.html, I have another branch atagriyakhetarpal#2 and I shall keep both of them in sync based on further commits that I push here. |
melissawm left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I also don't see the try examples button locally - should I do anything differently other thanspin docs?
Uh oh!
There was an error while loading.Please reload this page.
agriyakhetarpal commentedJun 18, 2024
@melissawm, I'm not sure – I think you'll need to refresh your |
melissawm commentedJun 18, 2024
Nevermind - I do see it now! |
[skip actions] [skip azp] [skip cirrus]
agriyakhetarpal commentedJan 2, 2025
d818f8c disablessource maps for JupyterLite, based onscikit-learn/scikit-learn#26246. This brings the size of the JupyterLite build in the |
This reverts commitef3f14b.[skip actions] [skip azp] [skip cirrus]
[skip actions] [skip azp] [skip cirrus]
[skip actions] [skip azp] [skip cirrus]
agriyakhetarpal commentedJan 13, 2025
Hi@rgommers, we publishedhttps://github.com/jupyterlite/jupyterlite-sphinx/releases/tag/v0.18.0 some moments ago (thanks@steppi!), and I've updated the versions of |
[skip actions] [skip azp] [skip cirrus]
[skip actions] [skip azp] [skip cirrus]
100b557 toe7972a5Compareagriyakhetarpal commentedJan 15, 2025
Commite7972a5 bumps tohttps://github.com/jupyterlite/pyodide-kernel/releases/tag/v0.5.1 that was released today, which brings the recenthttps://github.com/pyodide/pyodide/releases/tag/0.27.1. (Apologies for the force push!) |
melissawm left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Hi@agriyakhetarpal ! The changes look good to me, I've successfully built this PR locally and it seems to work (although the jupyterlite blocks don't work locally).
The CircleCI version of the "Try it" works fine, but when I click "Open in new tab" I see this:
Is this expected? (Maybe it's because it's in CI)
agriyakhetarpal commentedJan 21, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Hi@melissawm, thanks for the review! I don't think I can reproduce it with CircleCI. Could you please retry with incognito mode, or with a different internet connection or mobile data if you can? This is what I get: ![]() For reference, I tried this link:https://output.circle-artifacts.com/output/job/4b11fff4-e43b-4010-af4e-de2e84deed66/artifacts/0/doc/build/html/lite/notebooks/index.html?path=88efbc39_8e7b_4e21_86c0_519bb66f4f6a.ipynb Based on your screenshot, I guess you're using Firefox. I tried with it as well, both with incognito mode and without, and the JupyterLite UI loads perfectly.
They should work locally as well. Could you please share any errors or output that you might be seeing? |
[skip actions] [skip azp] [skip cirrus]
melissawm commentedJan 21, 2025
I think they had a partial outage eariler today so that may have been just bad luck. I'll wait for the check to finish here and test again. |
melissawm left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Now it works fine! Thanks@agriyakhetarpal
rgommers left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
This looks pretty clean, nice work@agriyakhetarpal! Time to give this a go. Thanks to@melissawm and everyone else who contributed as well.
@agriyakhetarpal could you update us on the next steps here? I think it includes upgrading to NumPy 2.2 in Pyodide and enabling use of nightlies, and probably also enabling functionality on the User Guide? Anything else?
62b43b9 intonumpy:mainUh oh!
There was an error while loading.Please reload this page.
agriyakhetarpal commentedJan 28, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Thanks,@rgommers! The following steps here are indeed those, and also, we need to add some docs to resolvegh-27310, similar to@melissawm's SciPy PR (scipy/scipy#22385, which I'll be reviewing and we can adopt similar messaging for NumPy when done).
|
rgommers commentedJan 29, 2025
Thanks Agriya. Docs would be a nice next step here indeed, leveraging the work Melissa did for SciPy (the setups and considerations are almost identical). It'd also be fine with me to have a shorter explanation and link to the SciPy docs on the topic for more details.
This would be good to prioritize. It seems like there was a way forward (or two possibly) there, by reverting making symbols private for example. Re User Guide: agreed with waiting for better tracebacks and doing 1-2 pages first. |
charris commentedDec 1, 2025
@agriyakhetarpal |


Uh oh!
There was an error while loading.Please reload this page.
Description
This PR adds support for WASM-powered interactive examples withJupyterLite and
jupyterlite-sphinxin the NumPy documentation.A similar enhancement was made for the documentation for SciPy (scipy/scipy#20019) and that for PyWavelets (PyWavelets/pywt#728).
How to test this
Tip
I have a GitHub Pages website deployed athttps://agriyakhetarpal.github.io/numpy/ through which these changes can be experimented with. The CircleCI deployment does not render the examples properly, however, a fix is available as reported in#26745 (comment) and will be fixed upstream injupyterlite/jupyterlite-sphinx#182.
Update, 24/07/2024: this fix is now available in
jupyterlite-sphinxversion 0.16.2, and the CircleCI deployment should render the examples properly as well.Key changes (so far)
jupyterlite-sphinxindoc/source/conf.pyanddoc/Makefile, coupled with changes to styling indoc/source/_static/numpy.cssnumpy/under the "Examples" section in the docstrings for various modulesNote
I have currently left out the following:
_datasource.py,_utils_impl.py,_version.py,_array_api_info.py,ctypeslib.py, files undernumpy/_typing/, andnumpy/_core/numerictypes.py.Tip
The "NumPy user guide" section has not been modified at this time due to the size of the PR (in terms of the number of files modified). However, it can be modified or adapted to a Jupytext notebook similar toscipy/scipy#20303 to make it work well in an interactive set-up.
Important
The NumPy documentation will have to be rebuilt and reuploaded inhttps://github.com/numpy/doc/ for these changes to show up in the official documentation.
What issue does this PR address?
Closes#25969
Additional context
try_examples.jsonconfiguration file. A custom Pyodide distribution or a custom wheel of NumPy is not provided with this PR, and a solution is being explored with nightly WASM wheels for NumPy (established inCI, BLD: Push NumPy's Emscripten/Pyodide wheels nightly to Anaconda.org PyPI index #26134) viaWeb proxy to work around the lack of CORS headers for nightly wheels uploaded to the Anaconda.org index pyodide/pyodide#4898.