diff --git a/mne/io/fiff/raw.py b/mne/io/fiff/raw.py index 232decd3b3f..23b9498cb48 100644 --- a/mne/io/fiff/raw.py +++ b/mne/io/fiff/raw.py @@ -550,9 +550,12 @@ def read_raw_fif( def _path_from_fname(fname) -> Path | None: if not isinstance(fname, Path): - # Try to get a filename from the file-like object - try: - fname = Path(fname.name) - except Exception: - fname = None + if isinstance(fname, str): + fname = Path(fname) + else: + # Try to get a filename from the file-like object + try: + fname = Path(fname.name) + except Exception: + fname = None return fname diff --git a/mne/io/fiff/tests/test_raw_fiff.py b/mne/io/fiff/tests/test_raw_fiff.py index 7d19a07bed6..2978a09287c 100644 --- a/mne/io/fiff/tests/test_raw_fiff.py +++ b/mne/io/fiff/tests/test_raw_fiff.py @@ -2180,3 +2180,12 @@ def test_expand_user(tmp_path, monkeypatch): raw = read_raw_fif(fname=path_home, preload=True) raw.save(fname=path_home, overwrite=True) + + +@pytest.mark.parametrize("cast", [pathlib.Path, str]) +def test_init_kwargs(cast): + """Test for pull/12843#issuecomment-2380491528.""" + raw = read_raw_fif(cast(test_fif_fname)) + raw2 = read_raw_fif(**raw._init_kwargs) + for r in (raw, raw2): + assert isinstance(r._init_kwargs["fname"], pathlib.Path)