MAINT: Vendoring policy
See original GitHub issueI think we should perhaps discuss/revisit our policy of vendoring, at least for some dependencies we might want to try using install_requires nowadays. Even matplotlib nowadays has some dependencies:
I know the numpy/scipy/sklearn stack does not require anything (other than setuptools maybe?) but I see us as closer to matplotlib than these core (very C-based) scientific libraries. Also the packaging ecosystem (pip wheels, conda/mamba) has matured quite a bit I think since we made the conscious decision to vendor (5+ years ago IIRC?).
I bring this up because it would be nice to vendor fewer libraries (ideally zero?), and in #10197 we’re discussing possibly vendoring another library (packaging).
We can also discuss this at our next dev meeting if it’s easier.
Issue Analytics
- State:
- Created 2 years ago
- Comments:11 (11 by maintainers)

Top Related StackOverflow Question
could
poochalso be added and we do away with “data dependencies” while we’re at it? I’ve stumbled upon this multiple times in packages that use MNE as dependency. The distinction seems a bit artificial to me as I’ve never seen anyone use MNE without downloading some sample data and trying an example first …Okay let’s look through the seven things we keep in
mne/externals, plus the one (packaging) that we need for #10197 …… And good point – maybe we only vendor things that are no longer maintained. So my proposal is:
Remove
FieldTrip.py– it’s for realtime buffer support, we shouldn’t even have this anymore, we should put it inmne-realtimeAdd to
install_requires:decorator: pure python, maintainedh5io: pure python, only strict dep is numpy IIRC, maintainedpackaging: will be maintained by pypa folks, needed for #10197pymatreader: pure python, only depends onscipyIIRC, maintainedtqdm: already an optional dependency with[data], but we use it elsewhere (like for progress bars) so I think we might just want a hard dep hereMove
tempita: move tomne/reportsfor now where it’s needed, and maybe @hoechenberger can see how much work it would be to move tojinja2or some other templating system rather than sticking with something that is not maintaineddoccer.py: originally adapted from SciPy, it’s only ~100 lines so we should just move it toutils/docs.pyor wherever our doc-filling code lives