from typing import List __all__ = [ "Pysubs2Error", "UnknownFPSError", "UnknownFileExtensionError", "UnknownFormatIdentifierError", "FormatAutodetectionError", ] class Pysubs2Error(Exception): """Base class for pysubs2 exceptions.""" class UnknownFPSError(Pysubs2Error): """Framerate was not specified and couldn't be inferred otherwise.""" class UnknownFileExtensionError(Pysubs2Error): """ File extension does not pertain to any known subtitle format. This exception is raised by `SSAFile.save()` when the ``format_`` parameter is not specified. It will try to guess the desired format from output filename and raise this exception when it fails. Attributes: ext (str): File extension """ def __init__(self, ext: str) -> None: self.ext = ext msg = f"File extension {ext!r} does not match any supported subtitle format" super().__init__(msg) class UnknownFormatIdentifierError(Pysubs2Error): """ Unknown subtitle format identifier (ie. string like ``"srt"``). This exception is used when interpreting ``format_`` parameter fails, eg. in `SSAFile.save()`. Attributes: format_ (str): Format identifier """ def __init__(self, format_: str) -> None: self.format_ = format_ msg = f"Format identifier {format_!r} does not match any supported subtitle format" super().__init__(msg) class FormatAutodetectionError(Pysubs2Error): """ Subtitle format is ambiguous or unknown based on analysis of file fragment This exception is raised by `SSAFile.load()` and related methods when the ``format_`` parameter is not specified. It will try to guess the input format based on reading first few kilobytes of the input file and raise this exception if the format cannot be uniquely determined. Attributes: content (str): Analyzed subtitle file content formats (list[str]): Format identifiers for detected formats """ def __init__(self, content: str, formats: List[str]) -> None: self.content = content self.formats = formats if not formats: msg = "No suitable formats" else: msg = f"Multiple suitable formats ({formats!r})" super().__init__(msg)