Skip to content
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

Update deprecations #2011

Merged
merged 24 commits into from
Dec 23, 2024
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
0dce442
update deprecated classes and methods
stephprince Dec 17, 2024
71dd68b
update deprecation warnings
stephprince Dec 18, 2024
1d0ed92
update tests for deprecated classes and functions
stephprince Dec 18, 2024
93ae7a1
fix warnings and formatting
stephprince Dec 18, 2024
01be0fb
add scratch tests and deprecations
stephprince Dec 18, 2024
7b4e197
keep function behavior for deprecation warnings
stephprince Dec 18, 2024
478454e
update CHANGELOG.md
stephprince Dec 18, 2024
095ce84
add tests for deprecations
stephprince Dec 18, 2024
c62ebd4
update scratch tutorial
stephprince Dec 18, 2024
d2934b6
skip deprecated gallery examples
stephprince Dec 18, 2024
e885275
Merge branch 'dev' into deprecation-errors
stephprince Dec 19, 2024
190bd72
Merge branch 'dev' into deprecation-errors
stephprince Dec 21, 2024
de32f40
update CHANGELOG.md
stephprince Dec 21, 2024
fe6a0f5
remove old icephys tutorial
stephprince Dec 21, 2024
f971a1a
add pynwb 4.0 deprecation info
stephprince Dec 21, 2024
363d1fa
add error on new pass on construct method
stephprince Dec 21, 2024
bb2d82d
remove warnings on construct for deprecations
stephprince Dec 21, 2024
7ec06b0
fix formatting
stephprince Dec 22, 2024
4edc013
update hdmf-zarr url
stephprince Dec 22, 2024
419d685
Apply suggestions from code review
stephprince Dec 23, 2024
5dee6e0
Update src/pynwb/core.py
stephprince Dec 23, 2024
1cf28a1
add code review suggestions
stephprince Dec 23, 2024
ac6a98a
add catch for extra warning
stephprince Dec 23, 2024
1c4bca2
remove unused variable
stephprince Dec 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,27 @@

## PyNWB 3.0.0 (Upcoming)

### Deprecations
- The following deprecated classes will now raise errors when creating new instances of these classes: ``ClusteringWaveforms``, ``Clustering``, ``SweepTable``. Reading files using these data types will continue to be supported.
- The following methods and arguments have been deprecated:
- ``ProcessingModule.add_container`` and ``ProcessingModule.add_data_interface`` are replaced by ``ProcessingModule.add``
- ``ProcessingModule.get_container`` and ``ProcessingModule.get_data_interface`` are replaced by ``ProcessingModule.get``
- ``ScratchData.notes`` is deprecated. Use ``ScratchData.description`` instead.
- ``NWBFile.ic_electrodes`` is deprecated. Use ``NWBFile.icephys_electrodes`` instead.
- ``NWBFile.ec_electrodes`` is deprecated. Use ``NWBFile.electrodes`` instead.
- ``NWBFile.icephys_filtering`` is deprecated. Use ``IntracellularElectrode.filtering`` instead.
- ``NWBFile.modules`` is deprecated. Use ``NWBFile.processing`` instead.
- ``ImageSeries.format`` is fixed to 'external' if an external file is provided.
- ``ImageSeries.bits_per_pixel`` is deprecated.
- ``ImagingPlane.manifold``, ``ImagingPlane.conversion`` and ``ImagingPlane.unit`` are deprecated. Use ``ImagingPlane.origin_coords`` and ``ImagingPlane.grid_spacing`` instead.
- ``IndexSeries.unit`` is fixed to "N\A".
- ``IndexSeries.indexed_timeseries`` is deprecated. Use ``IndexSeries.indexed_images`` instead.
- The following deprecated methods have been removed:
- ``NWBFile.add_ic_electrode`` is removed. Use ``NWBFile.add_icephys_electrode`` instead.
- ``NWBFile.create_ic_electrode`` is removed. Use ``NWBFile.create_icephys_electrode`` instead.
- ``NWBFile.get_ic_electrode`` is removed. Use ``NWBFile.get_icephys_electrode`` instead.
- ``pynwb._get_resources`` is removed.

### Enhancements and minor changes
- Added support for NWB schema 2.8.0. @rly [#2001](https://github.com/NeurodataWithoutBorders/pynwb/pull/2001)
- Removed `SpatialSeries.bounds` field that was not functional. This will be fixed in a future release. @rly [#1907](https://github.com/NeurodataWithoutBorders/pynwb/pull/1907), [#1996](https://github.com/NeurodataWithoutBorders/pynwb/pull/1996)
Expand Down
239 changes: 0 additions & 239 deletions docs/gallery/domain/icephys.py

This file was deleted.

2 changes: 1 addition & 1 deletion docs/gallery/general/scratch.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
# Now lets do an analysis for which we do not have a specification, but we would like to store
# the results for.

filt_ts = nwb_scratch.modules["filtering_module"]["filtered_timeseries"]
filt_ts = nwb_scratch.processing["filtering_module"]["filtered_timeseries"]

fft = np.fft.fft(filt_ts.data)

Expand Down
4 changes: 2 additions & 2 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ def __call__(self, filename):
'nwbwidgets': ("https://nwb-widgets.readthedocs.io/en/latest/", None),
'nwb-overview': ("https://nwb-overview.readthedocs.io/en/latest/", None),
'zarr': ("https://zarr.readthedocs.io/en/stable/", None),
'hdmf-zarr': ("https://hdmf-zarr.readthedocs.io/en/latest/", None),
'hdmf-zarr': ("https://hdmf-zarr.readthedocs.io/en/dev/", None),
stephprince marked this conversation as resolved.
Show resolved Hide resolved
'numcodecs': ("https://numcodecs.readthedocs.io/en/latest/", None),
}

Expand All @@ -161,7 +161,7 @@ def __call__(self, filename):
'hdmf-docs': ('https://hdmf.readthedocs.io/en/stable/%s', '%s'),
'dandi': ('https://www.dandiarchive.org/%s', '%s'),
"nwbinspector": ("https://nwbinspector.readthedocs.io/en/dev/%s", "%s"),
'hdmf-zarr': ('https://hdmf-zarr.readthedocs.io/en/latest/%s', '%s'),
'hdmf-zarr': ('https://hdmf-zarr.readthedocs.io/en/dev/%s', '%s'),
stephprince marked this conversation as resolved.
Show resolved Hide resolved
}

nitpicky = True
Expand Down
6 changes: 0 additions & 6 deletions src/pynwb/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,6 @@ def __get_resources() -> dict:
return ret


def _get_resources():
# LEGACY: Needed to support legacy implementation.
# TODO: Remove this in PyNWB 3.0.
warn("The function '_get_resources' is deprecated and will be removed in a future release.", DeprecationWarning)
return __get_resources()


# a global type map
global __TYPE_MAP
Expand Down
9 changes: 4 additions & 5 deletions src/pynwb/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,25 @@ def add_container(self, **kwargs):
'''
Add an NWBContainer to this ProcessingModule
'''
warn(PendingDeprecationWarning('add_container will be replaced by add'))
warn("add_container is deprecated and will be removed in PyNWB 4.0. Use add instead.", DeprecationWarning)
self.add(kwargs['container'])

@docval({'name': 'container_name', 'type': str, 'doc': 'the name of the NWBContainer to retrieve'})
def get_container(self, **kwargs):
'''
Retrieve an NWBContainer from this ProcessingModule
'''
warn(PendingDeprecationWarning('get_container will be replaced by get'))
warn('get_container is deprecated and will be removed in PyNWB 4.0. Use get instead.', DeprecationWarning)
return self.get(kwargs['container_name'])

@docval({'name': 'NWBDataInterface', 'type': (NWBDataInterface, DynamicTable),
'doc': 'the NWBDataInterface to add to this Module'})
def add_data_interface(self, **kwargs):
warn(PendingDeprecationWarning('add_data_interface will be replaced by add'))
self.add(kwargs['NWBDataInterface'])
warn('add_data_interface is deprecated and will be removed in PyNWB 4.0. Use add instead.', DeprecationWarning)

@docval({'name': 'data_interface_name', 'type': str, 'doc': 'the name of the NWBContainer to retrieve'})
def get_data_interface(self, **kwargs):
warn(PendingDeprecationWarning('get_data_interface will be replaced by get'))
warn('get_data_interface is deprecated and will be removed in PyNWB 4.0. Use get instead.', DeprecationWarning)
return self.get(kwargs['data_interface_name'])


Expand Down
35 changes: 25 additions & 10 deletions src/pynwb/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@
raise ValueError(error_msg)
warn(error_msg)

def _error_on_new_pass_on_construct(self, error_msg: str):
stephprince marked this conversation as resolved.
Show resolved Hide resolved
"""
Raise an error when a check is violated on instance creation.
When reading from a file, do nothing, ensuring that files with
invalid data or deprecated neurodata types can be read.
If error_msg is set to None the function will simply return
without further action.
"""
if error_msg is None:
return

Check warning on line 59 in src/pynwb/core.py

View check run for this annotation

Codecov / codecov/patch

src/pynwb/core.py#L59

Added line #L59 was not covered by tests
stephprince marked this conversation as resolved.
Show resolved Hide resolved
if not self._in_construct_mode:
raise ValueError(error_msg)

def _get_type_map(self):
return get_type_map()

Expand Down Expand Up @@ -128,27 +141,29 @@
notes, description = popargs('notes', 'description', kwargs)
super().__init__(**kwargs)
if notes != '':
warn('The `notes` argument of ScratchData.__init__ will be deprecated. Use description instead.',
PendingDeprecationWarning)
if notes != '' and description != '':
self._error_on_new_pass_on_construct(
error_msg=("The `notes` argument of ScratchData.__init__ has been deprecated and "
"will be removed in PyNWB 4.0. Use description instead.")
)
if notes != '' and description is not None:
stephprince marked this conversation as resolved.
Show resolved Hide resolved
raise ValueError('Cannot provide both notes and description to ScratchData.__init__. The description '
'argument is recommended.')
description = notes
if not description:
warn('ScratchData.description will be required in a future major release of PyNWB.',
PendingDeprecationWarning)
self._error_on_new_pass_on_construct(error_msg='ScratchData.description is required.')
self.description = description

@property
def notes(self):
warn('Use of ScratchData.notes will be deprecated. Use ScratchData.description instead.',
PendingDeprecationWarning)
warn(("Use of ScratchData.notes has been deprecated and will be removed in PyNWB 4.0. "
"Use ScratchData.description instead."), DeprecationWarning)
return self.description

@notes.setter
def notes(self, value):
warn('Use of ScratchData.notes will be deprecated. Use ScratchData.description instead.',
PendingDeprecationWarning)
self._error_on_new_pass_on_construct(
error_msg=("Use of ScratchData.notes has been deprecated and will be removed in PyNWB 4.0. "
"Use ScratchData.description instead."))
self.description = value


Expand Down
Loading
Loading