Hello Everyone!
My name is Ayush Kumar, and I am currently a B.Tech student.I am interested in participating in GSoC 2026.
While going through the GRASS idea page under Numfocus, I found two projects that aligh well with my skills:
Improve GRASS user experience in Jupyter Notebook
Support writing tests with pytest
I have experience to contribute to open-source projects and am comfortable in working with Python.
I would appreciate your guidance on how to get started with the contributions related to these projects and how I can contribute to the organization.
Hi @wenzeslaus!
I wanted to share a small update since my introduction.
After exploring GRASS codebase, I started working toward the “Support writing tests with pytest” GSoC project and opened a small PR:
In this PR, I:
added pytest-based tests for grass.jupyter.utils functions,
initialized a GRASS session using existing fixtures,
ensured tests run outside the GRASS shell environment,
verified execution in a clean Docker setup.
My goal was to understand the current testing infrastructure and explore pytest-based testing.
If this direction looks appropriate, I would like to start preparing a GSoC proposal for this project. I would greatly appreciate feedback and guidance from the maintainers.
@wenzeslaus ,since you are mentoring this project, I would be especially thankful if you could share your thoughts on whether I am moving in the right direction and what areas I should focus on next.
Quoting from the wiki, I suggest to “Create general comparison functions from the grass.gunittest assert methods so that they can be used with pytest.” Just focus on one function to start with and get feedback on it through a PR. Make sure it’s pytest-like.
I will explore the grass.gunittest assert methods and start by extracting one comparison function to make it used with pytest. I’ll open a focused PR for initial feedback.
If there is a specific assert method you would recommend starting with, please let me know.
I’ve opened a new PR where I converted rasterExists from grass.gunittest to a pytest-style implementation. As per your suggestion, I started by converting just one function.
PR:
I’d appreciate your review when you have time and any feedback on the approach.
While working on the pytest conversion, I tried creating a separate directory (python/grass/pytest) so that it might help to organize pytest-related utilities separately in the future.
However, Github CI checks are failing with:
ModuleNotFoundError: No module named 'grass.pytest'
I assume this is because the new subpackage isn’t included when GRASS is installed in CI.
Before going further, I want to ask that for a longer-term pytest migration, would it be better to:
keep everything inside existing grass module, or
introduce a separate submodule and adjust package accordingly?
If keeping separate is acceptable, could you please suggest what changes would be needed so that the `grass.pytest` module is properly available in CI?
I’d like to follow the structure that fits best with the project.