
    $j                     R    d Z ddlmZmZ  G d de          Z G d de          ZdS )z%Abstract base class for file parsers.    )ABCabstractmethodc                       e Zd ZdZdS )UnsupportedFileTypeErrorz@Raised by a parser when it does not support the given file type.N)__name__
__module____qualname____doc__     i/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/hindsight_api/engine/parsers/base.pyr   r      s        JJDr   r   c                   n    e Zd ZdZedededefd            Zd
dededz  defdZ	edefd	            Z
dS )
FileParserz+Abstract base for file to markdown parsers.	file_datafilenamereturnc                 
   K   dS )a  
        Parse file to markdown.

        Args:
            file_data: Raw file bytes
            filename: Original filename (used for format detection)

        Returns:
            Markdown content as string

        Raises:
            UnsupportedFileTypeError: If the file type is not supported by this parser
            RuntimeError: If parsing fails for another reason
        Nr   )selfr   r   s      r   convertzFileParser.convert   s        	r   Ncontent_typec                     dS )a  
        Check if parser supports this file type.

        Override this for local/static extension-based filtering.
        Parsers that delegate to a remote service should leave this as True
        and raise UnsupportedFileTypeError from convert() instead.

        Args:
            filename: File name (used for extension check)
            content_type: MIME type (optional)

        Returns:
            True if this parser can handle the file (default: True)
        Tr   )r   r   r   s      r   supportszFileParser.supports!   s	     tr   c                     dS )za
        Get parser name.

        Returns:
            Parser name (e.g., "markitdown")
        Nr   )r   s    r   namezFileParser.name2   s	     	r   )N)r   r   r	   r
   r   bytesstrr   boolr   r   r   r   r   r   r      s        55u      ^"  C$J $    " c    ^  r   r   N)r
   abcr   r   	Exceptionr   r   r   r   r   <module>r       s    + + # # # # # # # #	 	 	 	 	y 	 	 	. . . . . . . . . .r   