owned this note
owned this note
Published
Linked with GitHub
# Scientific Python Project Developer Summit 2025 work log
#### PRs created
https://github.com/scientific-python/devstats/pull/85
https://github.com/scientific-python/devstats/pull/87
https://github.com/scientific-python/devstats/pull/86
https://github.com/scientific-python/learn.scientific-python.org/pull/244 by @guenp
https://github.com/scientific-python/specs/pull/389
https://github.com/scientific-python/specs/pull/390
https://github.com/scientific-python/specs/pull/391
https://github.com/scientific-python/blog.scientific-python.org/pull/250
https://github.com/scientific-python/installer/pull/1
https://github.com/scientific-python/installer/pull/3
#### PRs merged
## SPECS
## Tools
- SPEC-0 tools Action
- Builds the markdown files required for SPEC-0
- Builds now a JSON file of versions to use as the minimum pin.
- https://github.com/scientific-python/spec-zero-tools
- Need to figure out the workflow for the SPEC repo and downstream tools
- Ideally want to create a script/tool that will update a package's pyproject.toml
- [executable-tutorials repo](https://github.com/scientific-python/executable-tutorials), writing it up from zero by collecting and generalizing pieces from tutorial repos
- First 40 PRs are made during the summit
- devstats PRs:
- https://github.com/scientific-python/devstats/pull/86
- https://github.com/scientific-python/devstats/pull/91
- https://github.com/scientific-python/devstats/pull/90
- https://github.com/scientific-python/devstats/pull/71
- https://github.com/scientific-python/devstats/pull/89
- https://github.com/scientific-python/devstats/pull/87
- https://github.com/scientific-python/devstats/pull/85
- Devstats summary issue after several meetings:
- https://github.com/scientific-python/summit-2025/issues/44
- Several ideas for future work that we can tackle after the summit.
- Property-based testing for scientific software
- Discussion was focused around how to use Hypothesis, the pitfalls that come with using hypothesis with numerical libraries where the inputs are actually valid but due to algorithm or Python floating point precssion, the tests are going to fail but are not legit failures.
- We want to engage the hypothesis developers at a SciPy meeting to dicuss the issues that scipy/numpy/networkx maintainers have encouthered.
- Want to research strategies which will be useful more broadly through the ecosystem.
- CI Efficiency
- scikit-image is testing out some code to only run the unit tests of the code which are affected by the changes.
- Need others to review the code and see how it works in other libraries.
- Discussion around caching and using meson cache and ccache to store results.
- Idea was floated to use docker containers created by a CI job on main to use as a up to date cache.
## Documentation
### MyST Working notes
[MyST Working notes doc](https://docs.google.com/document/d/1V_efdCEAsGTp-_fHC6Shg4jmtD5MCmQav6UuRzl--jc/edit?tab=t.0#heading=h.6ztxe76vzz4d)
#### Upstreaming ideas and configs, etc.
- double clicking md files should be upstream default in jupyterlab (without the local config workarounds of overrides.json etc)
### learn.scientific-python
- brainstorming/plan: https://hackmd.io/yFs20o4cTeivA5ilVu_ZRw?edit
## Spontaneous collaborations
- @drammock and @matthew-brett are going to fork the MNE-Python executable installer and mod it to be a "core scientific python packages" installer for workshops/courses.
## Data Analysis and Statistical Python
### Numpy 0d Arrays
* Discussion from 2025-05-11: https://github.com/scientific-python/summit-2025/issues/38#issuecomment-2870282440
### PyTrees
* Peter presented a Colab notebook (link: https://colab.research.google.com/drive/1oscjsDxiQAGvqq2rMVQs86D8L5vEhsd_?usp=sharing)
* JAX Issue on the idea of making PyTrees a standalone library: https://github.com/jax-ml/jax/issues/7707
* Closed, but people were not against the idea fundamentally
* Would be useful to get a full list from Peter of functionality that exists in [`jax.tree`](https://docs.jax.dev/en/latest/jax.tree.html#module-jax.tree) that does not exist in https://github.com/google-deepmind/tree
* Erik Welch (@eriknw) mentioned that this would be something that he would be open to hacking on this week in https://github.com/pytoolz/toolz or https://github.com/pytoolz/cytoolz
* Goal for the week: Hack out a pure-Python implementation of PyTrees
* Peter Fackeldey (@pfackeldey), Matthew Feickert (@matthewfeickert), Erik Welch (@eriknw), Mihai Maruseac (@mihaimaruseac)
* Peter mentions that https://github.com/patrick-kidger/optimistix uses PyTrees as basically the one requirement.
* Peter and Mihai have found https://github.com/metaopt/optree which comes from Meta and has [integrations with JAX, NumPy, and PyTorch](https://optree.readthedocs.io/en/latest/integrations.html)
* `optree` already exists on PyPI and conda-forge.
* `optree` seems to be a great candidate:
* lightweight & fast (C++ implementation)
* supports the same (and even more) features than `jax.tree_util`
* supports Python 3.13 free-threaded
* active & responsive team behind it
* battle-tested: used by pytorch, keras and tensorflow for working with PyTrees
* Actions:
* :white_check_mark: Mihai is going to inform the JAX team on the existence of `optree`
* :white_check_mark: Peter opened a discussion with `optree` to add partitioning and combining of pytrees: https://github.com/metaopt/optree/issues/221
* :white_check_mark: Matthew opened a discussion about general plans for `optree`: https://github.com/metaopt/optree/issues/220
* :white_check_mark: We're writing a blog post for blog.scientific-python.org about PyTrees (https://github.com/scientific-python/blog.scientific-python.org/pull/250) :rocket:
### Sparse Array migration
##### Created this week by Dan and Serge.
https://github.com/pysal/libpysal/pull/785 sparse array support (migration pass 1) for libpysal.
Branches to become PRs for pass 1: pysal/spreg; pysal/esda
##### Created the week by Dan and Serge. Reviewed and merged by Jake
[scipy/scipy/22987 updates to migration guide and tools](https://github.com/scipy/scipy/pull/22987)
##### Merged this week thanks to time together with Stefan and Dan S:
[scip/scipy#22897 nD sparse array binary operations](https://github.com/scipy/scipy/pull/22897)
[scipy/scipy#22873 nD reduction operations](https://github.com/scipy/scipy/pull/22873)
### Array API Wrappers
* https://github.com/mdhaber/marray example of using Array API
## Other Work Logs
* Tyler R
* [General work done at summit](https://workflowy.com/s/sp-developer-summit/DkqFVlAmBPWtgVNj)
* [Work done at summit specifically related to the SciPy `1.16.0` release process](https://workflowy.com/s/activity-done-at-sp/jJCzjhSX6q5PDVvz) (i.e., often facilitated by in person discussions with other devs)
### Wonderful Crazy Ideas discussed
- Dispatching a function to itself.
- pulling out numpy.matrix to its own package to remove it from numpy
- adding `__array__` dunders to Scipy sparse arrays
- creating a largely script-based meta-project to package together all the scientific python projects on a 6 month cycle. Single Source Scientific Software Supply SSSSS.
- using AI to police whether contributions are from AI sources.
-
---
## :tada: :tada: Showcase shareout
* Statistical Python - @jarrodmillman
* Ask is to read and approve description and say that this is really important work
* learn.scientific-python.org - @drammock
* Dan leading this initiative for the foreseeable future 🎉
* Addressed questions for who we are, what resources we can create and share, and who our audience is and what they need to discover them
* SciPy lectures - aimed at learners, and instructors
* Development guide - Content aimed at contributors moving to maintainers and leaders
* There is some content that is not yet in either of these resources - future conversations will scope the decisions - not in secret
* Installer - @drammock
* Make it easy for folks to set up environments really easily
* Borrowed from MNE-Python installer
* Not yet online - will be soon!
* Security - @mihaimaruseac
* Two new SPECs for [vulnerability disclosure](https://github.com/scientific-python/specs/pull/391) and [security policy](https://github.com/scientific-python/specs/pull/390)
* Looked over existing security SPECs (SPEC 6, SPEC 8)
* Reviewed [scorecard reports](https://docs.google.com/spreadsheets/d/1l3PsB9kUSYkWxBAP69EKaaI4QtM7rtyy/edit?gid=983251814#gid=983251814)
* Security extension - Matthew F
* Trusted publishers
* Only works on GitHub.com and GitLab.com - can't currently trust CERN's GitLab self hosted instance - Not yet supported (for reasonable reason!)
* Recommendations a year ago aren't strictly necessary anymore!
* PR to update SPEC 008
* PRs to endorser projects
* Q: dashboard?
* There's a website that already exists https://trailofbits.github.io/are-we-pep740-yet/
* Pytree - @pfackeldey
* Found a team who are working on this already!! And they're really close!
* Wrote a blog post!
* Executable tutorials - @ bsipocz @danielballan @ksunden @rossbar
* https://scientific-python.github.io/executable-tutorials/index.html
* Usecases
* treat it as a library - test across all versions
* Future work - ask MyST to make these features even easier
* Having Chris, Angus and Franklin was so helpful!!
* Defined blockers vs nice to have
* Remote wasn't as
* Integrating code review & testing against tutorials content
* Avoiding bit-rotting tutorials
* Dove-tails with installer - users benefit in different ways
* Could ship tutorials inside the installer
* Not the domain stacks though
* Installer could include links out to websites eg: interactive tutorial resource
* Dispatching - Eric, Sebastian
* Fully functional prototype for dispatching layer
* Pure Python, could go fast!
* Adding some tooling so backend author can add some decorators
* https://github.com/scientific-python/spatch/pull/3
* Scikit stats - Matt H
* Set up template to allow statistics experts to contribute their expertise and
* Can install all these different distribution packages so they all come together
* Lots of standardized testing
* Different repo per different test
* Persona: add an issue to repository - suggest name, purpose - and then create a new repository under the organization
* There are 120 distributions in scipy - why do we need more?
* it can be hard to get hard into scipy - scipy is really big
* Sets up a model for how to make it easy for folks to contribute
* scalars vs 0D arrays - Matt H
* There are lots of errors but its looking manageable - alternatives considered
* If you take an element out of a 1D array you get a 0D array INSTEAD of a scalar - stops this dimensionality "edge case"
* Q: can we get rid of scalars entirely?
* Everything breaks if you do!
* Arguement that d-type is useful
* Main goal is more for consistency rather than totally remove scalar
* https://github.com/scientific-python/summit-2025/issues/38
* SPEC update - Sanket
* SPEC000 - extend spec so that scikit learn can endorse it
* We can change the SPEC if you go back to the projects and get their buy in
* There's a PR that needs to be endorsed
* [KW MISSED - phone call]
* CI optimization
* Caching
* Documentation
* Balance between readability and "stubs"
* There's an issue and more detailed notes that Matt H has that might need some cleaning up before sharing
* Tutorial repo - execututable tutorials team
* Comment - a blog post can be a useful document that sets out considerations
* Don't have to end up as a SPEC!
* Please write more blog posts either way
* EG: AI SPEC
* Reflection: we are evolving - figuring out who we are in the community and who we need to serve
* Early stage and figuring out that process
* MyST - Kira, Angus, Franklin, Chris H, Stefan
* Figuring out how to improve onboarding documentation & how to run meetings effectively
* Supported the executable tutorials team
* Preview command for PRs
* Don't want to have to manage netlify!
* Lots of documentation work
* Chris H captured in documentation ([ADD LINK!])
* Dan Allen - how to show solutions for tutorials
* Stefan & Franklin - working on generating docs without sphinx
* Adding footer content - 2 days of discussion!!!
* Franklin trying to get it over the line!
* Onboarded Kira
* PR on edit button
* Caching social media items - related to footer
* Interesting to reflect on joining a new project - even as experienced contributor to Python, hard to join a new team in a different coo
* CELEBRATION - Matthew Brett joined core scikit image team
* Tools & DevStats - Nabil
* Summarized in hackMD :pray:
* CI efficiency
* Plan is to run Stefan's script on sunpy
* Curious to see how that works!
* Lots of discussions on hypothesis
* Possible event in Berkeley with the lead developer
* Jake worked on devstats - left already
* added a bunch more stats
* Not yet updated website
* summarized in issue
* Input from Chris Holgraf - code used for Jupyter - move that code upstream
* Discussion on how to make devstats interactive
* Q: Who is the audience? What's the purpose? What are the needs?
* Maybe grant proposal or grant report stage?
* To be discussed in tools / SPEC meetings going forwards
* PySal and sparse matrices - Serge & Dan S
* Huge help from Dan - saved hours / days / weeks of time!!
* Found some edge cases - improved migration guide
* Remember that all meetings are open for anyone to join!
* ASK: Please promote the Scientific Python community / project, tell your friends, bring other developers & maintainers in!
* Want to engage with domain stacks a little more - please connect with Jarrod first, then aim to invite
*