Source code for pyexpressionatlas.exceptions

"""Custom exceptions for Expression Atlas client."""

from __future__ import annotations


[docs] class ExpressionAtlasError(Exception): """Base exception for Expression Atlas errors."""
[docs] class InvalidAccessionError(ExpressionAtlasError): """Raised when an experiment accession is invalid."""
[docs] def __init__(self, accession: str) -> None: self.accession = accession super().__init__( f'"{accession}" does not look like an ArrayExpress/BioStudies ' "experiment accession. Expected format: E-XXXX-#### (e.g., E-MTAB-1624)" )
[docs] class DownloadError(ExpressionAtlasError): """Raised when experiment download fails."""
[docs] def __init__(self, accession: str, reason: str) -> None: self.accession = accession self.reason = reason super().__init__( f"Error downloading experiment {accession}: {reason}. " f"Check https://www.ebi.ac.uk/gxa/experiments/{accession} or " "contact https://www.ebi.ac.uk/about/contact/support/gxa" )
[docs] class APIError(ExpressionAtlasError): """Raised when BioStudies API request fails."""
[docs] def __init__(self, status_code: int, message: str | None = None) -> None: self.status_code = status_code self.message = message msg = f"BioStudies API error (HTTP {status_code})" if message: msg += f": {message}" msg += ". Please try again later or contact https://www.ebi.ac.uk/about/contact/support/gxa" super().__init__(msg)