o
    n~b
                     @   s   d Z ddlmZmZ ddlmZ d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 )z"Low-level http related exceptions.    )OptionalUnion   )_CIMultiDict)HttpProcessingErrorc                	   @   sd   e Zd ZdZdZdZdZdddddee de	dee
 d	dfd
dZd	e	fddZd	e	fddZdS )r   zHTTP error.

    Shortcut for raising HTTP errors with custom code, message and headers.

    code: HTTP Error code.
    message: (optional) Error message.
    headers: (optional) Headers to be sent in response, a list of pairs
    r    N)codemessageheadersr   r	   r
   returnc                C   s   |d ur|| _ || _|| _d S )N)r   r
   r	   )selfr   r	   r
    r   B/usr/local/lib/python3.10/dist-packages/aiohttp/http_exceptions.py__init__   s   
zHttpProcessingError.__init__c                 C   s   | j  d| jS )Nz
, message=)r   r	   r   r   r   r   __str__%   s   zHttpProcessingError.__str__c                 C   s   d| j j d|  dS )N<z: >)	__class____name__r   r   r   r   __repr__(   s   zHttpProcessingError.__repr__)r   
__module____qualname____doc__r   r	   r
   r   intstrr   r   r   r   r   r   r   r   r      s&    	
r   c                       s<   e Zd ZdZdZdddedee ddf fdd	Z  Z	S )
BadHttpMessage  Bad RequestN)r
   r	   r
   r   c                   s   t  j||d |f| _d S )N)r	   r
   superr   args)r   r	   r
   r   r   r   r   1   s   zBadHttpMessage.__init__)
r   r   r   r   r	   r   r   r   r   __classcell__r   r   r"   r   r   ,   s    ,r   c                   @   s   e Zd ZdZdZdS )HttpBadRequestr   r   N)r   r   r   r   r	   r   r   r   r   r$   6   s    r$   c                   @      e Zd ZdZdS )PayloadEncodingErrorzBase class for payload errorsNr   r   r   r   r   r   r   r   r&   <       r&   c                   @   r%   )ContentEncodingErrorzContent encoding error.Nr'   r   r   r   r   r)   @   r(   r)   c                   @   r%   )TransferEncodingErrorztransfer encoding error.Nr'   r   r   r   r   r*   D   r(   r*   c                   @   r%   )ContentLengthErrorz2Not enough data for satisfy content length header.Nr'   r   r   r   r   r+   H   r(   r+   c                	       s2   e Zd Z	d	dedededdf fddZ  ZS )
LineTooLongUnknownlinelimitactual_sizer   Nc              	      s0   t  d| d| d| d |||f| _d S )NzGot more than z bytes (z) when reading .r   )r   r.   r/   r0   r"   r   r   r   M   s   zLineTooLong.__init__)r-   r-   r   r   r   r   r   r#   r   r   r"   r   r,   L   s    r,   c                       s.   e Zd Zdeeef ddf fddZ  ZS )InvalidHeaderhdrr   Nc                    s:   t |tr|dd}t d|  || _|f| _d S )Nzutf-8surrogateescapezInvalid HTTP Header: )
isinstancebytesdecoder    r   r4   r!   )r   r4   r"   r   r   r   W   s
   
zInvalidHeader.__init__)r   r   r   r   r7   r   r   r#   r   r   r"   r   r3   V   s    &r3   c                       s(   e Zd Zddeddf fddZ  ZS )BadStatusLiner   r.   r   Nc                    s6   t |ts	t|}t d| |f| _|| _d S )NzBad status line )r6   r   reprr    r   r!   r.   )r   r.   r"   r   r   r   `   s
   

zBadStatusLine.__init__)r   r2   r   r   r"   r   r9   _   s     r9   c                   @   s   e Zd ZdS )InvalidURLErrorN)r   r   r   r   r   r   r   r;   h   s    r;   N)r   typingr   r   Ztypedefsr   __all__	Exceptionr   r   r$   r&   r)   r*   r+   r,   r3   r9   r;   r   r   r   r   <module>   s    !

		