-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use pathlib.Path instead of os.path to handle files and folders #11473
Conversation
Yes please do! It's been planned to switch entirely to pathlib but nobody had the time so far |
Great, the first step is perfect for when I'm out of energy and don't want to think too hard ;) |
str_data = data.encode('latin1') | ||
str_data = str(data).encode('latin1') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note about this change:
When writing a src
, the field "mri_volume_name"
could be a Path
which can not be encoded to "latin1"
.
IMO, it is safer to cast to string before writing than to chase every case where something else than a string might be provided to write_string
.
If reverted, a test in tests/test_source_space
will break, so we can always fix this issue differently if we want to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agreed that casting to str
before write operations is the correct fix. I think I've hit this problem before (and obviously didn't fix it everywhere 😉).
The MPL deprecations should be fixed/worked around by #11497, but this one does seem related:
probably something somewhere does not look for |
Looks like it's all green, modulo #11497. A quick summary of the changes: Occurrences of
Changes:
Especially for
Examples can be found by searching for And that should be a good stopping point for this PR 😄 |
I took a cursory look at the code and it looks reasonable. Your choices also sound good to me. CIs were green before I merged |
Super nice. Thanks @mscheltienne |
whoooot 200 files changes 🚀 |
I believe we forgot a changelog entry – @mscheltienne could you add one? |
@hoechenberger Done in #11499, but I made it very general and did not include cross-ref to the different functions now compatible with Paths. |
* upstream/main: (46 commits) Fix docstrings by replacing str with path-like and fix double backticks for formatting (mne-tools#11499) Use pathlib.Path instead of os.path to handle files and folders [circle deploy] (mne-tools#11473) MAINT: Fix Circle [circle deploy] (mne-tools#11497) MAINT: Use mamba in CIs (mne-tools#11471) Updating documentation to clarify full vs half-bandwidth and defaults in time_frequency.multitaper.py (mne-tools#11479) Fix typo in tutorial (mne-tools#11498) Typo fix and added colons before code (mne-tools#11496) [MRG] ENH/DOC: demo custom spectrum creation (mne-tools#11493) Accept only left-clicks for adding annotations (mne-tools#11491) [BUG, MRG] Fix pial surface loading, logging in locate_ieeg (mne-tools#11489) [ENH] Added unit_role to add non-breaking space between magnitude and units (mne-tools#11469) MAINT: Fix CircleCI build (mne-tools#11488) [DOC] Updated decoding.SSD documentation and internal variable naming (mne-tools#11475) Typo fix (mne-tools#11485) [MRG] Forward argument axes from plot_sensors to DigMontage.plot (mne-tools#11470) [MRG] Improve error message raised on channels missing from DigMontage (mne-tools#11472) MAINT: Deal with pkg_resources usage bugs (mne-tools#11478) Add object array support and docstring (mne-tools#11465) [ENH] Adjusted SSD algorithm to support non-full rank data (mne-tools#11458) [BUG] fix nibabel reference (mne-tools#11467) ...
* upstream/main: (264 commits) BUG: Fix deprecated API usage in example (mne-tools#11512) Deprecate 'kind' and 'path' in favor of 'fname' in the layout reader (mne-tools#11500) EGI/MFF events outside EEG recording should not break the code (mne-tools#11505) fixed annotations error on export (mne-tools#11435) DOC: Update installer links [skip azp] [skip actions] [skip cirrus] (mne-tools#11506) BUG: updates for MPL 3.7 compatibility (mne-tools#11409) Fix docstrings by replacing str with path-like and fix double backticks for formatting (mne-tools#11499) Use pathlib.Path instead of os.path to handle files and folders [circle deploy] (mne-tools#11473) MAINT: Fix Circle [circle deploy] (mne-tools#11497) MAINT: Use mamba in CIs (mne-tools#11471) Updating documentation to clarify full vs half-bandwidth and defaults in time_frequency.multitaper.py (mne-tools#11479) Fix typo in tutorial (mne-tools#11498) Typo fix and added colons before code (mne-tools#11496) [MRG] ENH/DOC: demo custom spectrum creation (mne-tools#11493) Accept only left-clicks for adding annotations (mne-tools#11491) [BUG, MRG] Fix pial surface loading, logging in locate_ieeg (mne-tools#11489) [ENH] Added unit_role to add non-breaking space between magnitude and units (mne-tools#11469) MAINT: Fix CircleCI build (mne-tools#11488) [DOC] Updated decoding.SSD documentation and internal variable naming (mne-tools#11475) Typo fix (mne-tools#11485) ...
The MNE codebase uses a mix of strings (with the help of
os.path
) andpathlib.Path
objects to handle files and folders.I believe it would be beneficial to move to
pathlib.Path
objects entirely.Summary of the PR here.
Current list of tests and associated functions incompatible with
Path
objects: