-
Notifications
You must be signed in to change notification settings - Fork 120
UCurv project
This page is intended to provide a roadmap (and timelines) for the integration of https://github.com/yud08/ucurv into PyLops. It contains tasks that should be accomplished in both projects to bring code and documentation quality to an acceptable level for PyLops to confidently include ucurv as a trusted (optional) dependency.
List of tasks (in no specific order):
-
Improve README providing info about
- info on how to install from pip and source
- simple example showcasing the main functionality of the library
- info on how to run tests and build doc
-
Add Makefile like https://github.com/PyLops/pylops/blob/dev/Makefile with basic commands used to build the environment used in ucurv development, run tests, build doc, and potentially do linting and type checking
-
Clean up tests (adding docstrings to each test explaining what it does). Consider using https://github.com/PyLops/pylops/blob/3ec6e05e8da4e8a00cd53cac251bc244fe992a22/pytests/test_ffts.py#L261 to build what is currently called
combinations) -
Switch from
setup.pytopyproject.toml(see https://github.com/PyLops/pylops/blob/dev/pyproject.toml). If brave could consider using this project also as a guinea pig for usinguvinstead (https://github.com/astral-sh/uv) -
Add github action to run tests (see https://github.com/PyLops/pylops/blob/dev/.github/workflows/build.yaml)
-
Move
devscript(so far I see only notebooks) to another repository as notebooks pollute version control make it harder to follow the code history from commits. -
Add docstring to main
__init__file (useful when runninghelp(ucurv)) - see https://github.com/PyLops/pylops/blob/dev/pylops/__init__.py. Also add version part and usesetuptools_scmto get automated versioning (follow PyLops pyproject.toml to set it up -
meyerwavelet.pyadd docstrings to all functions and create some unittests. Note that using ChatGPT/CoPilot to get a first version of the docstrings and then refine them is becoming a good time saver (do NOT copy-paste without reading as sometimes these AI assistants make mistakes!) -
zoneplate.pyadd docstrings to all functions and create some unittests -
fun_meyer.pyadd docstrings to all functions and create some unittests. I see there is already a docstring forfun_meyerbut it uses an uncoventional format (need something standard like numpydoc - reccomended - to be able to later get nicely formatted HTML doc) -
ucurv.pyadd docstrings to all functions/classes and create some unittests. Note that in python classes names should use CamelCase, so here eitherUDCTorUdct(I prefer the latter) but notudct. -
test whether a dual backend (numpy/cupy) is feasible by just replacing all
npwithncpwhere you can use something like https://github.com/PyLops/pylops/blob/3ec6e05e8da4e8a00cd53cac251bc244fe992a22/pylops/utils/backend.py#L126 to get the correct module handlers (numpy/cupy). One option would be to usecpdirectly but this would require makingcupya dependency ofucurvwhich however would be a roadblockt to the subsequent PyLops integration as we don't all cupy to be one of our mandatory dependencies.
- address all comments in https://github.com/PyLops/pylops/pull/610