Closed moble closed 1 year ago
Check out this pull request on
See visual diffs & provide feedback on Jupyter Notebooks.
Powered by ReviewNB
Thank you for doing this! It's a comprehensive polish of GAlgebra, clearly you have put into a lot of efforts into this, the PR is carefully prepared, aligned and documented.
The old CircleCI is obsolete, and indeed should be updated to Github Actions. And it's nice to know pyodide
has evolved to support something like jupyterlite
.
Personally, I'm OK with merging this PR almost as is, including the move to Github Actions and the addition of jupyterlite
, then improve based on that. I like jupyterlite
(browser based) as much as Binder
(docker based, slow to start up). The inclusion of jupyterlite
can be considered an experimental feature.
Review in progress, more comments coming.
- Someone will need to go to https://github.com/pygae/galgebra/settings/secrets/actions and add appropriate values for
PYPI_API_TOKEN
andCODECOV_TOKEN
.
I've just added them.
- every notebook has to start with
[%pip install galgebra]
.
Do you mean the users need to manually execute %pip install galgebra
before running the notebook ? I tried this and it works (without []
).
It's better to save the trouble for the users, and add it via CI into the notebooks, is it possible?
- This would probably be a good time to re-organize the
examples
directory. In particular, a more specific set of notebooks with more complete tutorials might be helpful ā stepping through 3D GA with relation to quaternions, STA, CGA, etc
More examples welcome! And you're also welcome to add features to GAlgebra in the ways that suit your need if you're motivated to maintain these features.
May I ask what led you to GAlgerba and what's your use case of it?
There were two settings I had to change / check on this repo to make sure the page can deploy:
- I have set the "Build and deployment" source to "Github actions" on https://github.com/pygae/galgebra/settings/pages
- I have ensured that on https://github.com/pygae/galgebra/settings/actions, the "Workflow permissions" are set to "Read and write permissions"
They're both set (presumably by Eric).
- A previous attempt to change one little thing led to finding out that CircleCI fails at the very first step now.
It's wierd. The cause is git@github.com: Permission denied (publickey).
But it seems to be using a valid ssh key set up by @eric-wieser (I no longer have memory about how I set it up š¤¦ ):
Anyway, maybe we don't need to bother with debugging this and just make sure the new CI passes tests: https://github.com/moble/galgebra/actions/runs/5814032932/job/15762888427
- Unfortunately, the pyodide kernel makes it impossible to pre-install any special requirements (other than things that already ship with pyodide, which includes sympy)
According to Ship additional Pyodide wheels at build time + Using a custom Pyodide distribution, it seems feasible?
I think I'd prefer to merge the move to GH actions as a standalone PR; I'm happy to make the split myself if you don't want to.
I have no problem with that. I'm coming close to the end of my spare time, though, so I'd appreciate it if you could make the split.
Do you mean the users need to manually execute %pip install galgebra before running the notebook ? I tried this and it works (without []).
Yeah, at least before the first import galgebra
. You can see a working example on my fork, in the tutorial notebook.
It's better to save the trouble for the users, and add it via CI into the notebooks, is it possible?
For now, I've manually added it to the tutorial notebook, and just copied all the other notebooks to the examples directory as they are. I don't know how robust it would be to try this automatically via CI.
May I ask what led you to GAlgebra and what's your use case of it?
I'm actually an OG user, from back in the days when brombo was just starting out with it. I've developed a number of specialized quaternion packages and a few STA packages mostly for numerics, related to analysis of gravitational waves. Occasionally I use galgebra to do analytical work / check formulas that I'm implementing elsewhere. But quite generally, I'm a big proponent of geometric algebra, so I'm happy to help this package thrive however I can.
There were two settings I had to change / check on this repo to make sure the page can deploy [...]
They're both set (presumably by Eric).
No, I did it; I'm an owner in pygae. I just wanted to point out those two settings for posterity, and in case anyone objects for any reason.
According to Ship additional Pyodide wheels at build time + Using a custom Pyodide distribution, it seems feasible?
I am actually already building and shipping the galgebra wheel in the jupyterlite workflow, but the user still has to run %pip install galgebra
; it just uses the version of galgebra that was in git at the time the jupyterlite workflow ran, rather than fetching from PyPI.
I have to admit that I don't actually understand the second link, or whether it would allow the user to skip the %pip
command. It looks complicated, but I'm certainly open to suggestions.
Another approach that could work might be getting galgebra added to the packages included with pyodide. (I don't know how particular they are about that list...)
May I ask what led you to GAlgebra and what's your use case of it?
I'm actually an OG user, from back in the days when brombo was just starting out with it. I've developed a number of specialized quaternion packages and a few STA packages mostly for numerics, related to analysis of gravitational waves. Occasionally I use galgebra to do analytical work / check formulas that I'm implementing elsewhere. But quite generally, I'm a big proponent of geometric algebra, so I'm happy to help this package thrive however I can.
Cool! Excited to know! I'll check your other works too. I'm also code in Julia occasionally and to do analytical work / check GA formulas e.g. here and here are some more thoughts, though I have little spare time to work on this recently.
There were two settings I had to change / check on this repo to make sure the page can deploy [...]
They're both set (presumably by Eric).
No, I did it; I'm an owner in pygae. I just wanted to point out those two settings for posterity, and in case anyone objects for any reason.
š
It's better to save the trouble for the users, and add it via CI into the notebooks, is it possible?
For now, I've manually added it to the tutorial notebook, and just copied all the other notebooks to the examples directory as they are. I don't know how robust it would be to try this automatically via CI.
I was thinking about automatically adding something to the JSON of ipynb, which is very feasible. But of course these is better to be experimented in a new PR or simply guide the user to do so would suffice.
Another approach that could work might be getting galgebra added to the packages included with pyodide. (I don't know how particular they are about that list...)
While it seems that they're not quite particular about the list and they might welcome it as long as it would be well maintained, and I'm not against adding galgebra to it, but I generally don't wish to maintain multiple distributions (conda, pyodide etc.) for a pure python package which pip install
from pypi or github would just work. This adds extra work and wait time for each release for devs and users alike.
Actually, I've just realized that it would be best for the jupyterlite step to be part of the standard CI, so that it can depend on the tests passing. (We don't want to be uploading jupyterlite with the wheel for a failing galgebra.) Since that will take a little reconfiguration anyway, I think I'll just split this into two PRs myself.
Added a github actions workflow that creates a jupyterlite instance with all of the
ipynb
s from theexamples
directory, including thetutorial_algebra.ipynb
at the top level.Sympy Live now works through (a modified version of) jupyterlite, which runs entirely in the browser, with no requirement on the user to install anything. Galgebra has lots of ipython notebooks that could be really nice as "live" documentation in a similar way. This PR sets that up. The process is just a quick (~1 minute) Github Actions run, which will then deploy to the (currently unused) Github Pages for this repo.
You can see a preview from my fork: https://moble.github.io/galgebra/jupyterlite
Added a github actions workflow that attempts to replace CircleCI for testing and deployment
A previous attempt to change one little thing led to finding out that CircleCI fails at the very first step now.
python_requires=">=3.6.*"
: reviews.llvm.org/rLNT0476dede37838e2f765f50dd26734cfced9d90d9. I've updated that.inspect.getargspec
was deprecated, so its use inMlt.__init__
had to be corrected.Mlt.__init__
was referring to a non-existentargs
variable, so I just set it to 0.Some notes:
PYPI_API_TOKEN
andCODECOV_TOKEN
.[%pip install galgebra]
. This could maybe be worked around using the xeus-python backend, but would require waiting until conda-forge gets the updated version before building jupyterlite.examples
directory. In particular, a more specific set of notebooks with more complete tutorials might be helpful ā stepping through 3D GA with relation to quaternions, STA, CGA, etc.