
    i                        S r SSKJrJr   " S S\5      r " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r	 " S S\5      r
 " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S \	5      r " S! S"\	5      r " S# S$\5      r " S% S&\5      r " S' S(\5      r " S) S*\5      rg+),z
Custom exceptions for the RAG system.

This module defines all custom exceptions used throughout the RAG system
to provide better error handling and debugging capabilities.
    )AnyOptionalc                   B   ^  \ rS rSrSrSS\S\\   4U 4S jjjrSr	U =r
$ )RAGSystemError   z)Base exception for all RAG system errors.messagedetailsc                 P   > [         TU ]  U5        Xl        U=(       d    0 U l        g N)super__init__r   r	   )selfr   r	   	__class__s      5/home/dmtnaga/Documents/work/airagagent/exceptions.pyr   RAGSystemError.__init__   s     !}"    )r	   r   r   __name__
__module____qualname____firstlineno____doc__strr   dictr   __static_attributes____classcell__r   s   @r   r   r      s"    3% %htn % %r   r   c                       \ rS rSrSrSrg)ConfigurationError   z2Raised when there's a configuration-related error. Nr   r   r   r   r   r   r!   r   r   r   r          <r   r   c                       \ rS rSrSrSrg)
ModelError   z<Raised when there's an error with language model operations.r!   Nr"   r!   r   r   r%   r%      s    Fr   r%   c                       \ rS rSrSrSrg)VectorStoreError   z:Raised when there's an error with vector store operations.r!   Nr"   r!   r   r   r(   r(      s    Dr   r(   c                       \ rS rSrSrSrg)DocumentProcessingError"   z2Raised when there's an error processing documents.r!   Nr"   r!   r   r   r+   r+   "   r#   r   r+   c                       \ rS rSrSrSrg)SearchError'   z6Raised when there's an error during search operations.r!   Nr"   r!   r   r   r.   r.   '   s    @r   r.   c                       \ rS rSrSrSrg)ValidationError,   z#Raised when input validation fails.r!   Nr"   r!   r   r   r1   r1   ,   s    -r   r1   c                       \ rS rSrSrSrg)ResourceError1   zIRaised when there are resource-related errors (memory, disk space, etc.).r!   Nr"   r!   r   r   r4   r4   1   s    Sr   r4   c                       \ rS rSrSrSrg)SecurityError6   z.Raised when there are security-related errors.r!   Nr"   r!   r   r   r7   r7   6   s    8r   r7   c                       \ rS rSrSrSrg)APILimitError;   z)Raised when API rate limits are exceeded.r!   Nr"   r!   r   r   r:   r:   ;   s    3r   r:   c                   B   ^  \ rS rSrSrSS\S\\   4U 4S jjjrSr	U =r
$ )ModelLoadErrorB   z Raised when model loading fails.
model_namer	   c                 .   > SU 3n[         TU ]  X25        g )NzFailed to load model: r   r   )r   r?   r	   r   r   s       r   r   ModelLoadError.__init__D   s    *:,7*r   r!   r   r   r   s   @r   r=   r=   B   s"    *+3 +$ + +r   r=   c                   B   ^  \ rS rSrSrSS\S\\   4U 4S jjjrSr	U =r
$ )EmbeddingErrorI   z'Raised when embedding generation fails.text_previewr	   c                 6   > SUS S  S3n[         TU ]  X25        g )Nz(Failed to generate embeddings for text: d   z...rA   )r   rF   r	   r   r   s       r   r   EmbeddingError.__init__K   s'    <\$3=O<PPST*r   r!   r   r   r   s   @r   rD   rD   I   s"    1+S +8D> + +r   rD   c                   B   ^  \ rS rSrSrSS\S\\   4U 4S jjjrSr	U =r
$ )IndexLoadErrorP   z&Raised when loading FAISS index fails.
index_pathr	   c                 .   > SU 3n[         TU ]  X25        g )Nz!Failed to load FAISS index from: rA   r   rM   r	   r   r   s       r   r   IndexLoadError.__init__R   s    5j\B*r   r!   r   r   r   s   @r   rK   rK   P   s"    0+3 +$ + +r   rK   c                   B   ^  \ rS rSrSrSS\S\\   4U 4S jjjrSr	U =r
$ )IndexSaveErrorW   z%Raised when saving FAISS index fails.rM   r	   c                 .   > SU 3n[         TU ]  X25        g )NzFailed to save FAISS index to: rA   rO   s       r   r   IndexSaveError.__init__Y   s    3J<@*r   r!   r   r   r   s   @r   rR   rR   W   s"    /+3 +$ + +r   rR   c                   B   ^  \ rS rSrSrSS\S\\   4U 4S jjjrSr	U =r
$ )PDFParseError^   zRaised when PDF parsing fails.	file_pathr	   c                 .   > SU 3n[         TU ]  X25        g )NzFailed to parse PDF file: rA   )r   rY   r	   r   r   s       r   r   PDFParseError.__init__`   s    .yk:*r   r!   r   r   r   s   @r   rW   rW   ^   s"    (+# + + +r   rW   c                   >   ^  \ rS rSrSrSS\\   4U 4S jjjrSrU =r	$ )ChunkingErrore   z$Raised when document chunking fails.r	   c                 (   > Sn[         TU ]  X!5        g )NzFailed to chunk documentrA   )r   r	   r   r   s      r   r   ChunkingError.__init__g   s    ,*r   r!   r   )
r   r   r   r   r   r   r   r   r   r   r   s   @r   r]   r]   e   s    .+ + +r   r]   c                   F   ^  \ rS rSrSrSS\S\S\\   4U 4S jjjrSr	U =r
$ )	InvalidQueryErrorl   z#Raised when query validation fails.queryreasonr	   c                 :   > SUS S  SU 3n[         TU ]  XC5        g )NzInvalid query '2   z...': rA   )r   rd   re   r	   r   r   s        r   r   InvalidQueryError.__init__n   s(    #E#2J<vfX>*r   r!   r   r   r   s   @r   rb   rb   l   s)    -+c +3 +$ + +r   rb   c                   F   ^  \ rS rSrSrSS\S\S\\   4U 4S jjjrSr	U =r
$ )	FileUploadErrors   z)Raised when file upload validation fails.filenamere   r	   c                 4   > SU SU 3n[         TU ]  XC5        g )NzFile upload failed for 'z': rA   )r   rl   re   r	   r   r   s        r   r   FileUploadError.__init__u   s"    ,XJc&B*r   r!   r   r   r   s   @r   rj   rj   s   s)    3+ +c +HTN + +r   rj   c                   F   ^  \ rS rSrSrSS\S\S\\   4U 4S jjjrSr	U =r
$ )	MemoryLimitErrorz   z'Raised when memory limits are exceeded.current_usagelimitr	   c                 6   > SU SU S3n[         TU ]  XC5        g )NzMemory limit exceeded: z	MB used, zMB limitrA   )r   rr   rs   r	   r   r   s        r   r   MemoryLimitError.__init__|   s$    +M?)E7(S*r   r!   r   r   r   r   r   r   intr   r   r   r   r   r   s   @r   rp   rp   z   s)    1+c +# + + +r   rp   c                   F   ^  \ rS rSrSrSS\S\S\\   4U 4S jjjrSr	U =r
$ )	DiskSpaceError   z'Raised when disk space is insufficient.required_spaceavailable_spacer	   c                 6   > SU SU S3n[         TU ]  XC5        g )NzInsufficient disk space: zMB required, zMB availablerA   )r   r{   r|   r	   r   r   s        r   r   DiskSpaceError.__init__   s'    -n-=]?J[[gh*r   r!   r   rv   r   s   @r   ry   ry      s*    1+s +S +8TX> + +r   ry   N)r   typingr   r   	Exceptionr   r   r%   r(   r+   r.   r1   r4   r7   r:   r=   rD   rK   rR   rW   r]   rb   rj   rp   ry   r!   r   r   <module>r      s   !%Y %	 	
	 	
	~ 	
	n 	
	. 	
	n 	
	N 	
	N 	
	N 	+Z ++Z ++% ++% +++ +++ ++ ++o ++} ++] +r   