internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/inverse/mne_cov_power.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:

Resolving patch:
diff --git a/examples/inverse/mne_cov_power.py b/examples/inverse/mne_cov_power.py
--- a/examples/inverse/mne_cov_power.py
+++ b/examples/inverse/mne_cov_power.py
@@ -24,7 +24,6 @@
 
 # %%
 
-import os.path as op
 import numpy as np
 
 import mne
@@ -43,8 +42,7 @@
 # First we compute an empty-room covariance, which captures noise from the
 # sensors and environment.
 
-raw_empty_room_fname = op.join(
-    data_path, 'MEG', 'sample', 'ernoise_raw.fif')
+raw_empty_room_fname = data_path / 'MEG' / 'sample' / 'ernoise_raw.fif'
 raw_empty_room = mne.io.read_raw_fif(raw_empty_room_fname)
 raw_empty_room.crop(0, 30)  # cropped just for speed
 raw_empty_room.info['bads'] = ['MEG 2443']
@@ -111,7 +109,6 @@
 # Read the forward solution and compute the inverse operator
 fname_fwd = meg_path / 'sample_audvis-meg-oct-6-fwd.fif'
 fwd = mne.read_forward_solution(fname_fwd)
-
 # make an MEG inverse operator
 info = evoked.info
 inverse_operator = make_inverse_operator(info, fwd, noise_cov,


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/inverse/snr_estimate.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:

Resolving patch:
diff --git a/examples/inverse/snr_estimate.py b/examples/inverse/snr_estimate.py
--- a/examples/inverse/snr_estimate.py
+++ b/examples/inverse/snr_estimate.py
@@ -15,8 +15,6 @@
 
 # %%
 
-from os import path as op
-
 from mne.datasets.sample import data_path
 from mne.minimum_norm import read_inverse_operator
 from mne import read_evokeds
@@ -24,9 +22,9 @@
 
 print(__doc__)
 
-data_dir = op.join(data_path(), 'MEG', 'sample')
-fname_inv = op.join(data_dir, 'sample_audvis-meg-oct-6-meg-inv.fif')
-fname_evoked = op.join(data_dir, 'sample_audvis-ave.fif')
+data_dir = data_path() / 'MEG' / 'sample'
+fname_inv = data_dir / 'sample_audvis-meg-oct-6-meg-inv.fif'
+fname_evoked = data_dir / 'sample_audvis-ave.fif'
 
 inv = read_inverse_operator(fname_inv)
 evoked = read_evokeds(fname_evoked, baseline=(None, 0))[0]


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/inverse/multidict_reweighted_tfmxne.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:

Resolving patch:
diff --git a/examples/inverse/multidict_reweighted_tfmxne.py b/examples/inverse/multidict_reweighted_tfmxne.py
--- a/examples/inverse/multidict_reweighted_tfmxne.py
+++ b/examples/inverse/multidict_reweighted_tfmxne.py
@@ -27,8 +27,6 @@
 
 # %%
 
-import os.path as op
-
 import mne
 from mne.datasets import somato
 from mne.inverse_sparse import tf_mixed_norm, make_stc_from_dipoles
@@ -43,10 +41,10 @@
 data_path = somato.data_path()
 subject = '01'
 task = 'somato'
-raw_fname = op.join(data_path, 'sub-{}'.format(subject), 'meg',
-                    'sub-{}_task-{}_meg.fif'.format(subject, task))
-fwd_fname = op.join(data_path, 'derivatives', 'sub-{}'.format(subject),
-                    'sub-{}_task-{}-fwd.fif'.format(subject, task))
+raw_fname = (data_path / f'sub-{subject}' / 'meg' /
+             f'sub-{subject}_task-{task}_meg.fif')
+fwd_fname = (data_path / 'derivatives' / f'sub-{subject}' /
+             f'sub-{subject}_task-{task}-fwd.fif')
 
 # Read evoked
 raw = mne.io.read_raw_fif(raw_fname)


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/io/read_xdf.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:

Resolving patch:
diff --git a/examples/io/read_xdf.py b/examples/io/read_xdf.py
--- a/examples/io/read_xdf.py
+++ b/examples/io/read_xdf.py
@@ -18,15 +18,13 @@
 
 # %%
 
-import os.path as op
-
 import pyxdf
 
 import mne
 from mne.datasets import misc
 
-fname = op.join(
-    misc.data_path(), 'xdf',
+fname = (
+    misc.data_path() / 'xdf' /
     'sub-P001_ses-S004_task-Default_run-001_eeg_a2.xdf')
 streams, header = pyxdf.load_xdf(fname)
 data = streams[0]["time_series"].T


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/preprocessing/movement_compensation.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:

Resolving patch:
diff --git a/examples/preprocessing/movement_compensation.py b/examples/preprocessing/movement_compensation.py
--- a/examples/preprocessing/movement_compensation.py
+++ b/examples/preprocessing/movement_compensation.py
@@ -20,19 +20,16 @@
 
 # %%
 
-from os import path as op
-
 import mne
 from mne.preprocessing import maxwell_filter
 
 print(__doc__)
 
-data_path = op.join(mne.datasets.misc.data_path(verbose=True), 'movement')
+data_path = mne.datasets.misc.data_path(verbose=True) / 'movement'
 
-head_pos = mne.chpi.read_head_pos(op.join(data_path, 'simulated_quats.pos'))
-raw = mne.io.read_raw_fif(op.join(data_path, 'simulated_movement_raw.fif'))
-raw_stat = mne.io.read_raw_fif(op.join(data_path,
-                                       'simulated_stationary_raw.fif'))
+head_pos = mne.chpi.read_head_pos(data_path / 'simulated_quats.pos')
+raw = mne.io.read_raw_fif(data_path / 'simulated_movement_raw.fif')
+raw_stat = mne.io.read_raw_fif(data_path / 'simulated_stationary_raw.fif')
 
 # %%
 # Visualize the "subject" head movements. By providing the measurement


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/inverse/morph_surface_stc.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:

Resolving patch:
diff --git a/examples/inverse/morph_surface_stc.py b/examples/inverse/morph_surface_stc.py
--- a/examples/inverse/morph_surface_stc.py
+++ b/examples/inverse/morph_surface_stc.py
@@ -29,9 +29,6 @@
 # License: BSD-3-Clause
 
 # %%
-import os
-import os.path as op
-
 import mne
 from mne.datasets import sample
 
@@ -41,14 +38,13 @@
 # Setup paths
 
 data_path = sample.data_path()
-sample_dir = op.join(data_path, 'MEG', 'sample')
-subjects_dir = op.join(data_path, 'subjects')
-fname_src = op.join(subjects_dir, 'sample', 'bem', 'sample-oct-6-src.fif')
-fname_fwd = op.join(sample_dir, 'sample_audvis-meg-oct-6-fwd.fif')
-fname_fsaverage_src = os.path.join(subjects_dir, 'fsaverage', 'bem',
-                                   'fsaverage-ico-5-src.fif')
-
-fname_stc = os.path.join(sample_dir, 'sample_audvis-meg')
+sample_dir = data_path / 'MEG' / 'sample'
+subjects_dir = data_path / 'subjects'
+fname_src = subjects_dir / 'sample' / 'bem' / 'sample-oct-6-src.fif'
+fname_fwd = sample_dir / 'sample_audvis-meg-oct-6-fwd.fif'
+fname_fsaverage_src = (subjects_dir / 'fsaverage' / 'bem' /
+                       'fsaverage-ico-5-src.fif')
+fname_stc = sample_dir / 'sample_audvis-meg'
 
 # %%
 # Load example data


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/datasets/opm_data.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.


Discussion:

Resolving patch:
diff --git a/examples/datasets/opm_data.py b/examples/datasets/opm_data.py
--- a/examples/datasets/opm_data.py
+++ b/examples/datasets/opm_data.py
@@ -13,19 +13,17 @@
 
 # sphinx_gallery_thumbnail_number = 4
 
-import os.path as op
-
 import numpy as np
 import mne
 
 data_path = mne.datasets.opm.data_path()
 subject = 'OPM_sample'
-subjects_dir = op.join(data_path, 'subjects')
-raw_fname = op.join(data_path, 'MEG', 'OPM', 'OPM_SEF_raw.fif')
-bem_fname = op.join(subjects_dir, subject, 'bem',
-                    subject + '-5120-5120-5120-bem-sol.fif')
-fwd_fname = op.join(data_path, 'MEG', 'OPM', 'OPM_sample-fwd.fif')
-coil_def_fname = op.join(data_path, 'MEG', 'OPM', 'coil_def.dat')
+subjects_dir = data_path / 'subjects'
+raw_fname = data_path / 'MEG' / 'OPM' / 'OPM_SEF_raw.fif'
+bem_fname = (subjects_dir / subject / 'bem' /
+             f'{subject}-5120-5120-5120-bem-sol.fif')
+fwd_fname = data_path / 'MEG' / 'OPM' / 'OPM_sample-fwd.fif'
+coil_def_fname = data_path / 'MEG' / 'OPM' / 'coil_def.dat'
 
 # %%
 # Prepare data for localization


Test patch:
Repository: mne-tools/mne-python

Issue:
use consistent icons 
on `doc/install/installers.rst` we should use a monochrome, font-awesome hourglass in the `.. note::` box (instead of the colorful one), to better match our other icons on that page (and other pages).

![Screenshot 2022-06-01 at 11-01-42 MNE-Python installers — MNE 1 1 dev0 documentation](https://user-images.githubusercontent.com/1810515/171449389-8359309e-e290-4261-9d2e-5d554abd7c37.png)



Discussion:

Resolving patch:
diff --git a/doc/conf.py b/doc/conf.py
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -871,7 +871,7 @@ def reset_warnings(gallery_conf, fname):
 )
 other_icons = (
     'hand-paper', 'question', 'rocket', 'server', 'code', 'desktop',
-    'terminal', 'cloud-download-alt', 'wrench',
+    'terminal', 'cloud-download-alt', 'wrench', 'hourglass'
 )
 icons = dict()
 for icon in brand_icons + fixed_icons + other_icons:


Test patch:
Repository: mne-tools/mne-python

Issue:
update path handling in examples/preprocessing/otp.py
all of our `data_path` functions now return `pathlib.Path` objects, which allows things like the following:

https://github.com/mne-tools/mne-python/blob/37a9e5587443109515a85cdc4396af4e014ecf82/examples/datasets/brainstorm_data.py#L32-L35

Compare this to the old pattern (using `os.path.join`, often imported as `op.join`):

```py
raw_path = os.path.join(data_path, 'MEG', 'bst_raw',
                        'subj001_somatosensory_20111109_01_AUX-f.ds')
```

or the *really* old pattern (using the `+` operator on plain strings):

```py
raw_path = (data_path + '/MEG/bst_raw/' +
            'subj001_somatosensory_20111109_01_AUX-f.ds')
```

Update the paths in the file mentioned in the issue title to use the new pathlib-style, which is considered the modern, best-practice way to handle file paths.



Discussion:
Hi @drammock . I'd like to collaborate on this task. Please assign this issue to me !
Thanks & Regards
Archit Singhal

Resolving patch:
diff --git a/examples/preprocessing/otp.py b/examples/preprocessing/otp.py
--- a/examples/preprocessing/otp.py
+++ b/examples/preprocessing/otp.py
@@ -15,7 +15,6 @@
 
 # %%
 
-import os.path as op
 import mne
 import numpy as np
 
@@ -34,8 +33,7 @@
 
 dipole_number = 1
 data_path = bst_phantom_elekta.data_path()
-raw = read_raw_fif(
-    op.join(data_path, 'kojak_all_200nAm_pp_no_chpi_no_ms_raw.fif'))
+raw = read_raw_fif(data_path / 'kojak_all_200nAm_pp_no_chpi_no_ms_raw.fif')
 raw.crop(40., 50.).load_data()
 order = list(range(160, 170))
 raw.copy().filter(0., 40.).plot(order=order, n_channels=10)


Test patch:
Repository: mne-tools/mne-python

Issue:
Add __eq__(), __neq__() to DigMontage
_Originally posted by @hoechenberger in https://github.com/mne-tools/mne-python/pull/10537#discussion_r851798198_

Hah. Turns out `DigMontage` inherits directly from `object` and doesn't implement its own `__eq__()`. We should probably put this on our todo.

In any case, I'll just compare `.dig` for now, which should suffice.




Discussion:

Resolving patch:
diff --git a/mne/channels/montage.py b/mne/channels/montage.py
--- a/mne/channels/montage.py
+++ b/mne/channels/montage.py
@@ -428,6 +428,15 @@ def __add__(self, other):
         out += other
         return out
 
+    def __eq__(self, other):
+        """Compare different DigMontage objects for equality.
+
+        Returns
+        -------
+        Boolean output from comparison of .dig
+        """
+        return self.dig == other.dig and self.ch_names == other.ch_names
+
     def _get_ch_pos(self):
         pos = [d['r'] for d in _get_dig_eeg(self.dig)]
         assert len(self.ch_names) == len(pos)


Test patch:
diff --git a/mne/channels/tests/test_montage.py b/mne/channels/tests/test_montage.py
--- a/mne/channels/tests/test_montage.py
+++ b/mne/channels/tests/test_montage.py
@@ -1580,6 +1580,20 @@ def test_plot_montage():
     plt.close('all')
 
 
+def test_montage_equality():
+    """Test montage equality."""
+    rng = np.random.RandomState(0)
+    fiducials = dict(zip(('nasion', 'lpa', 'rpa'), rng.rand(3, 3)))
+
+    # hsp positions are [1X, 1X, 1X]
+    hsp1 = make_dig_montage(**fiducials, hsp=np.full((2, 3), 11.))
+    hsp2 = make_dig_montage(**fiducials, hsp=np.full((2, 3), 12.))
+    hsp2_identical = make_dig_montage(**fiducials, hsp=np.full((2, 3), 12.))
+
+    assert hsp1 != hsp2
+    assert hsp2 == hsp2_identical
+
+
 @testing.requires_testing_data
 def test_montage_add_fiducials():
     """Test montage can add estimated fiducials for rpa, lpa, nas."""
diff --git a/mne/preprocessing/tests/test_maxwell.py b/mne/preprocessing/tests/test_maxwell.py
--- a/mne/preprocessing/tests/test_maxwell.py
+++ b/mne/preprocessing/tests/test_maxwell.py
@@ -1485,7 +1485,7 @@ def test_prepare_emptyroom_bads(bads):
     assert raw_er_prepared.info['dev_head_t'] == raw.info['dev_head_t']
 
     montage_expected = raw.copy().pick_types(meg=True).get_montage()
-    assert raw_er_prepared.get_montage().dig == montage_expected.dig
+    assert raw_er_prepared.get_montage() == montage_expected
 
     # Ensure the originals were not modified
     assert raw.info['bads'] == raw_bads_orig
Repository: mne-tools/mne-python

Issue:
new pip pre failures
```
______________________________ test_base_epochs _______________________________
mne\tests\test_epochs.py:709: in test_base_epochs
    BaseEpochs(raw.info, None, (np.ones((1, 3), int), {'foo': 1}))
<decorator-gen-247>:12: in __init__
    ???
mne\epochs.py:408: in __init__
    events = _ensure_events(events)
mne\utils\check.py:1002: in _ensure_events
    events = np.asarray(events)
E   ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
______________________________ test_events_type _______________________________
mne\tests\test_epochs.py:807: in test_events_type
    Epochs(raw, events, event_id, tmin, tmax)
<decorator-gen-259>:12: in __init__
    ???
mne\epochs.py:2590: in __init__
    super(Epochs, self).__init__(
<decorator-gen-247>:12: in __init__
    ???
mne\epochs.py:408: in __init__
    events = _ensure_events(events)
mne\utils\check.py:1002: in _ensure_events
    events = np.asarray(events)
E   ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
```

probably newly an error in numpy 1.24.dev0


Discussion:

Resolving patch:
diff --git a/mne/utils/check.py b/mne/utils/check.py
--- a/mne/utils/check.py
+++ b/mne/utils/check.py
@@ -996,13 +996,26 @@ def _safe_input(msg, *, alt=None, use=None):
 
 
 def _ensure_events(events):
-    events_type = type(events)
-    with warnings.catch_warnings(record=True):
-        warnings.simplefilter('ignore')  # deprecation for object array
-        events = np.asarray(events)
+    err_msg = f'events should be a NumPy array of integers, got {type(events)}'
+    if check_version('numpy', '1.24'):
+        # NumPy >= 1.24 raises ValueError
+        try:
+            events = np.asarray(events)
+        except ValueError as np_err:
+            if str(np_err).startswith(
+                    'setting an array element with a sequence. The requested '
+                    'array has an inhomogeneous shape'):
+                raise TypeError(err_msg)
+            else:
+                raise
+    else:
+        # NumPy < 1.24 gives VisibleDeprecationWarning
+        with warnings.catch_warnings(record=True):
+            warnings.simplefilter('ignore')
+            events = np.asarray(events)
+    # now that we're sure that events is an array...
     if not np.issubdtype(events.dtype, np.integer):
-        raise TypeError('events should be a NumPy array of integers, '
-                        f'got {events_type}')
+        raise TypeError(err_msg)
     if events.ndim != 2 or events.shape[1] != 3:
         raise ValueError(
             f'events must be of shape (N, 3), got {events.shape}')


Test patch:
Repository: mne-tools/mne-python

Issue:
Subject weight & height info keys are not documented
We support `info['subject_info']['weight']`:
https://github.com/mne-tools/mne-python/blob/c12a02000776adb9df18da55ea60c50cbf83827d/mne/io/meas_info.py#L1694

but the `weight` key is not documented at:
https://mne.tools/dev/generated/mne.Info.html



Discussion:
What does it even do? Is it "1" in normal cases and can be set to more or less than that when averaging wicth other subjects?
I don't think I understand your question … it's just the body weight in an unspecified unit, e.g., in kg or lb, stored as a float.
Just figured that height isn't documented either.

https://github.com/mne-tools/mne-python/blob/c12a02000776adb9df18da55ea60c50cbf83827d/mne/io/meas_info.py#L1697
>  it's just the body weight 

oh, ... okay.

> in an unspecified unit

O.o

EDIT: Thanks! :-D
PR welcome to document this

> Message ID: ***@***.***>
>

Units are kg and m

https://github.com/mne-tools/fiff-constants/blob/30d89d420d50c9e465f46524d4901795dac66741/DictionaryTags.txt#L378-L379
Hello! May I take this as my first issue?
Sure ! 🙏


Resolving patch:
diff --git a/mne/io/meas_info.py b/mne/io/meas_info.py
--- a/mne/io/meas_info.py
+++ b/mne/io/meas_info.py
@@ -758,6 +758,10 @@ class Info(dict, MontageMixin, ContainsMixin):
             Subject sex (0=unknown, 1=male, 2=female).
         hand : int
             Handedness (1=right, 2=left, 3=ambidextrous).
+        weight : float
+            Weight in kilograms.
+        height : float
+            Height in meters.
     """
 
     _attributes = {


Test patch: