o
    㥵i                     @  s   d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ G dd deZed	ed
ZG dd dee ejZdS )    )annotationsN)	AnyCallableDictGenericListMappingTypeTypeVarUnion)HTTPException)ValidationError)Literalc                   @  s>   e Zd ZdddZdd
dZdddddZedddZdS )RequestValidationErrorvalidation_errorr   in_4Literal['path', 'query', 'header', 'cookie', 'body']returnNonec                 C  s   || _ || _d S N)r   r   )selfr   r    r   B/home/ubuntu/.local/lib/python3.10/site-packages/kui/exceptions.py__init__   s   
zRequestValidationError.__init__List[Dict[str, Any]]c                 C  s"   | j  }|D ]}| j|d< q|S )Nin)r   errorsr   )r   r   errorr   r   r   r      s   
zRequestValidationError.errors   indentr    Union[None, int]strc                C  s   | j j|dS )Nr   )r   json)r   r    r   r   r   r#      s   zRequestValidationError.jsonDict[str, Any]c                
   C  sT   dddddddiddd	dd
dddd
dddd
ddg dddg dddS )NarrayobjectLocationzerror fieldtypestring)titledescriptionr(   itemsr	   z
error type)r*   r+   r(   Messagezerror messageContextzerror contextIn)pathqueryheadercookiebody)r*   r(   enum)locr(   msgctxr   )r6   r(   r7   )r(   
propertiesrequired)r(   r,   r   r   r   r   r   schema   s6   zRequestValidationError.schemaN)r   r   r   r   r   r   )r   r   )r    r!   r   r"   )r   r$   )__name__
__module____qualname__r   r   r#   staticmethodr;   r   r   r   r   r      s    

r   ErrorHandlerType)boundc                   @  sH   e Zd Zi fdddZejdddZdddZdddZdddZ	dS )ExceptionMiddlewareBasehandlers:Mapping[Union[int, Type[BaseException]], ErrorHandlerType]r   r   c                 C  s6   i | _ i | _|   | D ]
\}}| || qd S r   )_status_handlers_exception_handlers_init_internal_handlersr,   add_exception_handler)r   rC   keyvaluer   r   r   r   H   s   z ExceptionMiddlewareBase.__init__c                 C  s   t r   )NotImplementedError)r   r   r   r   rG   R   s   z/ExceptionMiddlewareBase._init_internal_handlersexc_class_or_status_codeUnion[int, Type[BaseException]]handlerr@   c                 C  s&   t |tr|| j|< d S || j|< d S r   )
isinstanceintrE   rF   )r   rL   rN   r   r   r   rH   V   s   
z-ExceptionMiddlewareBase.add_exception_handlerexcBaseExceptionErrorHandlerType | Nonec                 C  s6   d }t |tr| j|j}|d u r| t|}|S r   )rO   r   rE   getstatus_code_lookup_exception_handlerr(   )r   rQ   rN   r   r   r   lookup_handler`   s   
z&ExceptionMiddlewareBase.lookup_handlerexc_typeType[BaseException]c                 C  s(   |j D ]}|| jv r| j|   S qd S r   )__mro__rF   )r   rX   clsr   r   r   rV   h   s
   

z1ExceptionMiddlewareBase._lookup_exception_handlerN)rC   rD   r   r   )r   r   )rL   rM   rN   r@   r   r   )rQ   rR   r   rS   )rX   rY   r   rS   )
r<   r=   r>   r   abcabstractmethodrG   rH   rW   rV   r   r   r   r   rB   G   s    



rB   )
__future__r   r\   typingr   r   r   r   r   r   r	   r
   r   baize.exceptionsr   pydanticr   typing_extensionsr   	Exceptionr   r@   ABCrB   r   r   r   r   <module>   s    ,9