U
    ·ÜŸj¾  ã                
   @  s|  d dl mZ d dlmZmZmZmZ d dlmZ d dl	Z	ddl
mZ ddlmZ er`ddlmZ d	d
ddddddddg
ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d d
„ d
eƒZG d!d„ deƒZG d"d„ deƒZG d#d„ deƒZG d$d„ deƒZG d%d„ deƒZG d&d„ deƒZG d'd„ deƒZ G d(d„ deƒZ!dS ))é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚOptionalÚcast)ÚLiteralNé   )Úis_dict)Úconstruct_type)ÚChatCompletionÚBadRequestErrorÚAuthenticationErrorÚPermissionDeniedErrorÚNotFoundErrorÚConflictErrorÚUnprocessableEntityErrorÚRateLimitErrorÚInternalServerErrorÚLengthFinishReasonErrorÚContentFilterFinishReasonErrorc                   @  s   e Zd ZdS )ÚOpenAIErrorN©Ú__name__Ú
__module__Ú__qualname__© r   r   ú6/tmp/pip-unpacked-wheel-2qj3ofc_/openai/_exceptions.pyr      s   r   c                      sb   e Zd ZU ded< ded< ded< dZded	< dZded
< ded< dddddœ‡ fdd„Z‡  ZS )ÚAPIErrorÚstrÚmessageúhttpx.RequestÚrequestúobject | NoneÚbodyNzOptional[str]ÚcodeÚparamÚtypeÚNone)r   r!   r#   Úreturnc                  s”   t ƒ  |¡ || _|| _|| _t|ƒr~tttt	t
 | d¡d�ƒ| _tttt	t
 | d¡d�ƒ| _tttt
| d¡d�ƒ| _nd | _d | _d | _d S )Nr$   )Útype_Úvaluer%   r&   )ÚsuperÚ__init__r!   r   r#   r	   r   r   r
   r   r   Úgetr$   r%   r&   )Úselfr   r!   r#   ©Ú	__class__r   r   r,   5   s    zAPIError.__init__)r   r   r   Ú__annotations__r$   r%   r,   Ú__classcell__r   r   r/   r   r   "   s   
r   c                      s@   e Zd ZU ded< ded< ddœdddd	d
œ‡ fdd„Z‡  ZS )ÚAPIResponseValidationErrorúhttpx.ResponseÚresponseÚintÚstatus_codeN©r   r"   ú
str | Noner'   )r5   r#   r   r(   c                  s*   t ƒ j|pd|j|d� || _|j| _d S )Nz1Data returned by API invalid for expected schema.©r#   )r+   r,   r!   r5   r7   )r.   r5   r#   r   r/   r   r   r,   I   s    z#APIResponseValidationError.__init__©r   r   r   r1   r,   r2   r   r   r/   r   r3   E   s   
r3   c                      sF   e Zd ZU dZded< ded< ded< ddd	d
dœ‡ fdd„Z‡  ZS )ÚAPIStatusErrorz<Raised when an API response has a status code of 4xx or 5xx.r4   r5   r6   r7   r9   Ú
request_idr   r"   r'   )r   r5   r#   r(   c                  s4   t ƒ j||j|d� || _|j| _|j d¡| _d S )Nr:   zx-request-id)r+   r,   r!   r5   r7   Úheadersr-   r=   )r.   r   r5   r#   r/   r   r   r,   V   s    zAPIStatusError.__init__)r   r   r   Ú__doc__r1   r,   r2   r   r   r/   r   r<   O   s
   
r<   c                      s,   e Zd Zddœddddœ‡ fdd„Z‡  ZS )	ÚAPIConnectionErrorzConnection error.r8   r   r    r'   )r   r!   r(   c                  s   t ƒ j||d d� d S )Nr:   ©r+   r,   )r.   r   r!   r/   r   r   r,   ^   s    zAPIConnectionError.__init__©r   r   r   r,   r2   r   r   r/   r   r@   ]   s   r@   c                      s$   e Zd Zdddœ‡ fdd„Z‡  ZS )ÚAPITimeoutErrorr    r'   )r!   r(   c                   s   t ƒ jd|d� d S )NzRequest timed out.)r   r!   rA   )r.   r!   r/   r   r   r,   c   s    zAPITimeoutError.__init__rB   r   r   r/   r   rC   b   s   rC   c                   @  s   e Zd ZU dZded< dS )r   i�  zLiteral[400]r7   N©r   r   r   r7   r1   r   r   r   r   r   g   s   
c                   @  s   e Zd ZU dZded< dS )r   i‘  zLiteral[401]r7   NrD   r   r   r   r   r   k   s   
c                   @  s   e Zd ZU dZded< dS )r   i“  zLiteral[403]r7   NrD   r   r   r   r   r   o   s   
c                   @  s   e Zd ZU dZded< dS )r   i”  zLiteral[404]r7   NrD   r   r   r   r   r   s   s   
c                   @  s   e Zd ZU dZded< dS )r   i™  zLiteral[409]r7   NrD   r   r   r   r   r   w   s   
c                   @  s   e Zd ZU dZded< dS )r   i¦  zLiteral[422]r7   NrD   r   r   r   r   r   {   s   
c                   @  s   e Zd ZU dZded< dS )r   i­  zLiteral[429]r7   NrD   r   r   r   r   r      s   
c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   ƒ   s   c                      s.   e Zd ZU ded< dddœ‡ fdd„Z‡  ZS )r   r   Ú
completionr'   )rE   r(   c                  s0   d}|j r|d|j › �7 }tƒ  |¡ || _d S )Nz@Could not parse response content as the length limit was reachedz - )Úusager+   r,   rE   )r.   rE   Úmsgr/   r   r   r,   �   s
    z LengthFinishReasonError.__init__r;   r   r   r/   r   r   ‡   s   
c                      s"   e Zd Zddœ‡ fdd„Z‡  ZS )r   r'   )r(   c                   s   t ƒ  d¡ d S )NzRCould not parse response content as the request was rejected by the content filterrA   )r.   r/   r   r   r,   ™   s    ÿz'ContentFilterFinishReasonError.__init__rB   r   r   r/   r   r   ˜   s   )"Ú
__future__r   Útypingr   r   r   r   Útyping_extensionsr   ZhttpxÚ_utilsr	   Z_modelsr
   Z
types.chatr   Ú__all__Ú	Exceptionr   r   r3   r<   r@   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú<module>   sD   ö#
