| """Diffulex strategy package that imports built-in strategies to trigger registration.""" | |
| from __future__ import annotations | |
| import importlib | |
| from pathlib import Path | |
| # Import built-in strategies so their registrations run at import time. | |
| # Automatically import all subdirectory packages in the current directory | |
| _excluded_dirs = {"__pycache__", "__init__"} | |
| _strategy_modules = [] | |
| _current_dir = Path(__file__).parent | |
| for item in _current_dir.iterdir(): | |
| if item.is_dir() and not item.name.startswith("_") and item.name not in _excluded_dirs: | |
| # Check if it's a Python package (has __init__.py) | |
| init_file = item / "__init__.py" | |
| if init_file.exists(): | |
| try: | |
| importlib.import_module(f".{item.name}", __name__) | |
| _strategy_modules.append(item.name) | |
| except Exception as e: | |
| # Skip packages that fail to import | |
| import warnings | |
| warnings.warn(f"Failed to import strategy {item.name}: {e}", ImportWarning) | |
| __all__ = _strategy_modules.copy() | |
| DECODING_STRATEGY = None | |
| def fetch_decoding_strategy() -> str | None: | |
| return DECODING_STRATEGY | |
| def set_decoding_strategy(strategy: str) -> None: | |
| global DECODING_STRATEGY | |
| DECODING_STRATEGY = strategy | |
| def reset_decoding_strategy() -> None: | |
| global DECODING_STRATEGY | |
| DECODING_STRATEGY = None | |