Spaces:
Sleeping
Sleeping
| """ | |
| SciPy compatibility patches. | |
| This module patches SciPy to fix compatibility issues with librosa | |
| when using newer versions of SciPy where signal functions were moved | |
| to the windows submodule. | |
| """ | |
| import importlib | |
| import warnings | |
| import os | |
| _DEBUG = (os.getenv('FLASK_ENV') == 'development' or str(os.getenv('DEBUG', 'false')).lower() == 'true') | |
| _PATCH_LOGGED = False | |
| def apply_scipy_patches(): | |
| """ | |
| Apply patches to make librosa work with newer versions of scipy. | |
| Specifically, this patches the scipy.signal module to provide | |
| backward compatibility for functions that were moved to scipy.signal.windows. | |
| """ | |
| global _PATCH_LOGGED | |
| try: | |
| import scipy.signal | |
| import librosa.beat | |
| # Check if scipy.signal.hann exists | |
| if not hasattr(scipy.signal, 'hann') and hasattr(scipy.signal.windows, 'hann'): | |
| if _DEBUG and not _PATCH_LOGGED: | |
| print("Applying patch: scipy.signal.hann -> scipy.signal.windows.hann") | |
| # Create a reference to the windows.hann function in the signal module | |
| scipy.signal.hann = scipy.signal.windows.hann | |
| # Reload librosa.beat to use the patched scipy.signal | |
| importlib.reload(librosa.beat) | |
| _PATCH_LOGGED = True | |
| return True | |
| except Exception as e: | |
| if _DEBUG: | |
| warnings.warn(f"Failed to apply scipy patch: {e}") | |
| return False |