o
    Zho                     @  sN  d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZ dd
lmZmZ G dd deeZG dd deZ G dd deZ!G dd deeZ"d:ddZ#d;ddZ$d<d#d$Z%d=d'd(Z&d>d*d+Z'd?d.d/Z(					d@dAd4d5Z)				dBdCd8d9Z*dS )D    )annotationsN)dumps)AnyAsyncIterableAsyncIteratorIterableIteratorMapping)	urlencode   )StreamClosedStreamConsumed)MultipartStream)AsyncByteStreamRequestContentRequestDataRequestFilesResponseContentSyncByteStream)peek_filelike_lengthprimitive_value_to_strc                   @  s*   e Zd ZdddZddd	ZdddZdS )
ByteStreamstreambytesreturnNonec                 C  s
   || _ d S N_streamselfr    r!   E/var/www/html/lang_env/lib/python3.10/site-packages/httpx/_content.py__init__   s   
zByteStream.__init__Iterator[bytes]c                 c  s    | j V  d S r   r   r    r!   r!   r"   __iter__!      zByteStream.__iter__AsyncIterator[bytes]c                 C s   | j V  d S r   r   r%   r!   r!   r"   	__aiter__$   r'   zByteStream.__aiter__N)r   r   r   r   r   r$   r   r(   )__name__
__module____qualname__r#   r&   r)   r!   r!   r!   r"   r      s    

r   c                   @  $   e Zd ZdZdddZdd	d
ZdS )IteratorByteStream   r   Iterable[bytes]r   r   c                 C     || _ d| _t|| _d S NF)r   _is_stream_consumedinspectisgenerator_is_generatorr   r!   r!   r"   r#   +      zIteratorByteStream.__init__r$   c                 c  sn    | j r
| jr
t d| _ t| jdr,| j| j}|r*|V  | j| j}|sd S d S | jD ]}|V  q/d S )NTread)r5   r8   r   hasattrr   r:   
CHUNK_SIZEr    chunkpartr!   r!   r"   r&   0   s   
zIteratorByteStream.__iter__N)r   r2   r   r   r*   )r,   r-   r.   r<   r#   r&   r!   r!   r!   r"   r0   (       
r0   c                   @  r/   )AsyncIteratorByteStreamr1   r   AsyncIterable[bytes]r   r   c                 C  r3   r4   )r   r5   r6   
isasyncgenr8   r   r!   r!   r"   r#   D   r9   z AsyncIteratorByteStream.__init__r(   c                 C s   | j r
| jr
t d| _ t| jdr2| j| jI d H }|r0|V  | j| jI d H }|sd S d S | j2 z	3 d H W }|V  q56 d S )NTaread)r5   r8   r   r;   r   rD   r<   r=   r!   r!   r"   r)   I   s   z!AsyncIteratorByteStream.__aiter__N)r   rB   r   r   r+   )r,   r-   r.   r<   r#   r)   r!   r!   r!   r"   rA   A   r@   rA   c                   @  s$   e Zd ZdZd
ddZdddZd	S )UnattachedStreamz
    If a request or response is serialized using pickle, then it is no longer
    attached to a stream for I/O purposes. Any stream operations should result
    in `httpx.StreamClosed`.
    r   r$   c                 C  s   t  r   r   r%   r!   r!   r"   r&   a   s   zUnattachedStream.__iter__r(   c                 C s   t  r   rF   r%   r!   r!   r"   r)   d   s   zUnattachedStream.__aiter__Nr*   r+   )r,   r-   r.   __doc__r&   r)   r!   r!   r!   r"   rE   Z   s    
rE   content4str | bytes | Iterable[bytes] | AsyncIterable[bytes]r   7tuple[dict[str, str], SyncByteStream | AsyncByteStream]c                 C  s   t | ttfr't | tr| dn| }t|}|rdt|ini }|t|fS t | trJt | tsJt| }|d u r>ddi}ndt|i}|t	| fS t | t
rYddi}|t| fS tdt| )Nutf-8Content-LengthzTransfer-EncodingchunkedzUnexpected type for 'content', )
isinstancer   strencodelenr   r   dictr   r0   r   rA   	TypeErrortype)rH   bodycontent_lengthheadersZcontent_length_or_noner!   r!   r"   encode_contenti   s   

rX   datar   !tuple[dict[str, str], ByteStream]c                   s   g }|   D ]!\ }t|ttfr| fdd|D  q| t|f qt|ddd}t	t
|}d}||d}|t|fS )Nc                   s   g | ]} t |fqS r!   )r   ).0itemkeyr!   r"   
<listcomp>   s    z*encode_urlencoded_data.<locals>.<listcomp>T)doseqrK   z!application/x-www-form-urlencodedrL   zContent-Type)itemsrN   listtupleextendappendr   r
   rP   rO   rQ   r   )rY   Z
plain_datavaluerU   rV   content_typerW   r!   r]   r"   encode_urlencoded_data   s   
ri   filesr   boundarybytes | None&tuple[dict[str, str], MultipartStream]c                 C  s   t | ||d}| }||fS )N)rY   rj   rk   )r   Zget_headers)rY   rj   rk   	multipartrW   r!   r!   r"   encode_multipart_data   s   ro   textrO   c                 C  0   |  d}tt|}d}||d}|t|fS )NrK   ztext/plain; charset=utf-8ra   rP   rO   rQ   r   )rp   rU   rV   rh   rW   r!   r!   r"   encode_text   
   

rs   htmlc                 C  rq   )NrK   ztext/html; charset=utf-8ra   rr   )ru   rU   rV   rh   rW   r!   r!   r"   encode_html   rt   rv   jsonr   c                 C  s4   t | d}tt|}d}||d}|t|fS )NrK   zapplication/jsonra   )
json_dumpsrP   rO   rQ   r   )rw   rU   rV   rh   rW   r!   r!   r"   encode_json   s
   
ry   RequestContent | NoneRequestData | NoneRequestFiles | None
Any | Nonec                 C  sv   |durt |tsd}t|t t|S | durt| S |r't|p#i ||S |r-t|S |dur5t|S i t	dfS )z
    Handles encoding the given `content`, `data`, `files`, and `json`,
    returning a two-tuple of (<headers>, <stream>).
    Nz5Use 'content=<...>' to upload raw bytes/text content.    )
rN   r	   warningswarnDeprecationWarningrX   ro   ri   ry   r   )rH   rY   rj   rw   rk   messager!   r!   r"   encode_request   s   r   ResponseContent | None
str | Nonec                 C  sL   | durt | S |durt|S |durt|S |dur t|S i tdfS )zc
    Handles encoding the given `content`, returning a two-tuple of
    (<headers>, <stream>).
    Nr~   )rX   rs   rv   ry   r   )rH   rp   ru   rw   r!   r!   r"   encode_response   s   
r   )rH   rI   r   rJ   )rY   r   r   rZ   )rY   r   rj   r   rk   rl   r   rm   )rp   rO   r   rZ   )ru   rO   r   rZ   )rw   r   r   rZ   )NNNNN)rH   rz   rY   r{   rj   r|   rw   r}   rk   rl   r   rJ   )NNNN)
rH   r   rp   r   ru   r   rw   r}   r   rJ   )+
__future__r   r6   r   rw   r   rx   typingr   r   r   r   r   r	   urllib.parser
   _exceptionsr   r   Z
_multipartr   _typesr   r   r   r   r   r   _utilsr   r   r   r0   rA   rE   rX   ri   ro   rs   rv   ry   r   r   r!   r!   r!   r"   <module>   s>      





	$