| import sys | |
| from typing import Callable, List, Optional, Any | |
| logging: bool = False | |
| version_check: bool = True | |
| version: Optional[str] = None | |
| log_handler: Callable[..., None] = print | |
| logs: List[str] = [] | |
| def enable_logging(handler: Callable[..., None] = print) -> None: | |
| """Enable debug logging with optional handler.""" | |
| global logging, log_handler | |
| logging = True | |
| log_handler = handler | |
| def disable_logging() -> None: | |
| """Disable debug logging.""" | |
| global logging | |
| logging = False | |
| def log(*text: Any, file: Optional[Any] = None) -> None: | |
| """Log a message if logging is enabled.""" | |
| if logging: | |
| message = " ".join(map(str, text)) | |
| logs.append(message) | |
| log_handler(*text, file=file) | |
| def error(*error_args: Any, name: Optional[str] = None) -> None: | |
| """Log an error message to stderr.""" | |
| formatted_errors = [ | |
| e if isinstance(e, str) else f"{name or type(e).__name__}: {e}" | |
| for e in error_args | |
| ] | |
| log(*formatted_errors, file=sys.stderr) |