| """Runtime compatibility shims for vendored 2023-era code (SadTalker stack). | |
| Import this BEFORE anything that imports basicsr/gfpgan: torchvision 0.17+ | |
| removed transforms.functional_tensor, which basicsr still imports. On Spaces | |
| we can't sed site-packages, so we plant a module alias instead. | |
| """ | |
| import sys | |
| def install() -> None: | |
| try: | |
| import torchvision.transforms.functional as F | |
| sys.modules.setdefault("torchvision.transforms.functional_tensor", F) | |
| except ImportError: | |
| pass # torchvision not installed (local dev) — nothing to shim | |
| # numpy >=1.24 removed the deprecated builtin aliases SadTalker still uses | |
| try: | |
| import numpy as np | |
| for name, typ in {"float": float, "int": int, "bool": bool, | |
| "object": object, "complex": complex, "str": str}.items(): | |
| if not hasattr(np, name): | |
| setattr(np, name, typ) | |
| except ImportError: | |
| pass | |