rescored / backend /madmom_patch.py
calebhan's picture
madmom integration with cleanup
ac5c764
"""Runtime patch for madmom Python 3.10+ and numpy compatibility.
Madmom has two compatibility issues:
1. Imports MutableSequence from collections instead of collections.abc (Python 3.10+)
2. Uses deprecated np.float, np.int which were removed in numpy 1.24+
This module patches both issues before madmom is imported.
"""
import collections
import collections.abc
import numpy as np
def patch_madmom():
"""Patch collections and numpy for madmom compatibility.
Fixes:
1. collections.MutableSequence for Python 3.10+
2. np.float, np.int for numpy 1.24+
This is safe because:
- Only modifies if attributes don't exist
- Applied before madmom import, so no side effects
- Uses proper numpy types as replacements
Call this before importing madmom to ensure compatibility.
"""
# Fix collections.MutableSequence for Python 3.10+
if not hasattr(collections, 'MutableSequence'):
collections.MutableSequence = collections.abc.MutableSequence
# Fix numpy.float, numpy.int for numpy 1.24+
if not hasattr(np, 'float'):
np.float = np.float64
if not hasattr(np, 'int'):
np.int = np.int_