Closed timoML closed 7 months ago
I looked through the scipy changelogs too quickly... Apparently, scipy.signal is deprecated even since scipy 1.1.0. This would mean that we could change the imports without touching setup.py.
@takuya-ulm Can you check that the changes proposed here work with 'scipy==1.7.1'?
I checked the source and found that we do not have to change the requirement.
Indeed, the windows functions have been moved to signal.windows for a long time. But, the code has been working because similar functions are created under signal at init file of signal.
deprecated_windows = ('boxcar', 'triang', 'parzen', 'bohman', 'blackman',
'nuttall', 'blackmanharris', 'flattop', 'bartlett',
'barthann', 'hamming', 'kaiser', 'gaussian',
'general_gaussian', 'chebwin', 'cosine',
'hann', 'exponential', 'tukey')
# backward compatibility imports for actually deprecated windows not
# in the above list
from .windows import hanning
def deco(name):
f = getattr(windows, name)
# Add deprecation to docstring
def wrapped(*args, **kwargs):
return f(*args, **kwargs)
wrapped.__name__ = name
wrapped.__module__ = 'scipy.signal'
if hasattr(f, '__qualname__'):
wrapped.__qualname__ = f.__qualname__
if f.__doc__:
lines = f.__doc__.splitlines()
for li, line in enumerate(lines):
if line.strip() == 'Parameters':
break
else:
raise RuntimeError('dev error: badly formatted doc')
spacing = ' ' * line.find('P')
lines.insert(li, ('{0}.. warning:: scipy.signal.{1} is deprecated,\n'
'{0} use scipy.signal.windows.{1} '
'instead.\n'.format(spacing, name)))
wrapped.__doc__ = '\n'.join(lines)
return wrapped
for name in deprecated_windows:
locals()[name] = deco(name)
In the recent version, they are removed in the init file. That's the reason why the code at math.py is not working anymore.
The changes at math.py are enough for this problem.
Thanks for checking. Can you approve?
Using the windows functions from scipy.signal has been deprecated since
1.8.0scipy 1.1.0. Changing our imports to the new location will require to change in setup.py the requirements'scipy>=1.7.1' to 'scipy>=1.8.0'
which should probably get some testing.