mne-tools / mne-tools/mne-python
RFC: developer meta-environments
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 3.5k
- Forks
- 1.6k
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 100
Description
This week I needed to recreate my dev env. As you may know, I develop/contribute to several related packages, so I often want/need editable installs of many things and to have all the optional dependencies installed (so I can run their tests, build their docs, etc). This makes things... hard. For example:
- MNE-NIRS isn't really installable: its dependency
sphinx_rtd_themerequiresdocutils<0.21and its other (nested) dependencyreadme-rendererrequiresdocutils>=0.21.2 - MNE-LSL forces installation of PyQt5, which can cause headaches if you choose/prefer to install MNE-Python with PyQt6 or PySide
- MNE-Connectivity pins
pytest<8andpydata_sphinx_theme==0.14.1(specially bad problem for me as I also develop that theme, but others may also want to do local MNE doc builds against current main of that theme)
Possible solutions (please suggest others!)
- migrate currently maintained MNE tools into a monorepo with a unified environment spec / lockfile (this is possible with e.g. Rye; see https://rdrn.me/postmodern-python/#monorepo)
- unify a few key things to reduce pain:
- use the same Qt binding across mne-python, mne-lsl, and mne-qt-browser
- use the same sphinx theme (and version) across mne-nirs (rtd), mne-lsl (furo), mne-conectivity (pydata==0.14.1) and mne-python (pydata). Ideally we'd also use it for mne-bids-pipeline but I don't expect to win that argument.
- Do nothing, and make devs use different envs for different packages they work on (I do this too... but it feels weird to need different envs just for working on different MNE packages...)
thoughts?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the dependency conflicts described for MNE-NIRS, MNE-LSL, and MNE-Connectivity, then compare the three proposed environment strategies, including the Rye monorepo example. Done means the project has an agreed direction for handling development environments and a documented scope for any follow-up work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system, developer-experience
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 22/100