class GamError(Exception):
class FormulaError(GamError):
class SchemaMismatchError(GamError):
class PredictionError(GamError):
def map_exception(exc: BaseException) -> BaseException:
from ._binding import RustExtensionUnavailableError
if isinstance(exc, RustExtensionUnavailableError):
return exc
message = str(exc)
lower = message.lower()
if "formula" in lower or "parse" in lower:
return FormulaError(message)
if "schema" in lower or "missing required column" in lower or "unknown column" in lower:
return SchemaMismatchError(message)
if "prediction" in lower or "predict" in lower:
return PredictionError(message)
return GamError(message)