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 GitHub Comments
could
pooch
also 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-realtime
Add 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 onscipy
IIRC, 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/reports
for now where it’s needed, and maybe @hoechenberger can see how much work it would be to move tojinja2
or 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.py
or wherever our doc-filling code lives