o
    h                     @  sT  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 dg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_str
ByteStreamc                   @  s*   e Zd ZdddZddd	ZdddZdS )r   streambytesreturnNonec                 C  s
   || _ d S N_streamselfr    r!   b/var/www/html/construction_image-detection-poc/venv/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    

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&   2   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#   F   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)   K   s   z!AsyncIteratorByteStream.__aiter__N)r   rB   r   r   r+   )r,   r-   r.   r<   r#   r)   r!   r!   r!   r"   rA   C   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&   c   s   zUnattachedStream.__iter__r(   c                 C s   t  r   rF   r%   r!   r!   r"   r)   f   s   zUnattachedStream.__aiter__Nr*   r+   )r,   r-   r.   __doc__r&   r)   r!   r!   r!   r"   rE   \   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headerscontent_length_or_noner!   r!   r"   encode_contentk   s   

rY   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   )rZ   
plain_datavaluerU   rV   content_typerW   r!   r^   r"   encode_urlencoded_data   s   
rk   filesr   boundarybytes | None&tuple[dict[str, str], MultipartStream]c                 C  s   t | ||d}| }||fS )N)rZ   rl   rm   )r   get_headers)rZ   rl   rm   	multipartrW   r!   r!   r"   encode_multipart_data   s   rr   textrO   c                 C  0   |  d}tt|}d}||d}|t|fS )NrK   ztext/plain; charset=utf-8rb   rP   rO   rQ   r   )rs   rU   rV   rj   rW   r!   r!   r"   encode_text   
   

rv   htmlc                 C  rt   )NrK   ztext/html; charset=utf-8rb   ru   )rx   rU   rV   rj   rW   r!   r!   r"   encode_html   rw   ry   jsonr   c                 C  s<   t | ddddd}tt|}d}||d}|t|fS )NF),:)ensure_ascii
separators	allow_nanrK   zapplication/jsonrb   )
json_dumpsrP   rO   rQ   r   )rz   rU   rV   rj   rW   r!   r!   r"   encode_json   s   
r   RequestContent | NoneRequestData | NoneRequestFiles | None
Any | Nonec                 C  sz   |durt |tsd}tj|tdd t|S | durt| S |r)t|p%i ||S |r/t|S |dur7t|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.   )
stacklevel    )
rN   r	   warningswarnDeprecationWarningrY   rr   rk   r   r   )rH   rZ   rl   rz   rm   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   )rY   rv   ry   r   r   )rH   rs   rx   rz   r!   r!   r"   encode_response   s   
r   )rH   rI   r   rJ   )rZ   r   r   r[   )rZ   r   rl   r   rm   rn   r   ro   )rs   rO   r   r[   )rx   rO   r   r[   )rz   r   r   r[   )NNNNN)rH   r   rZ   r   rl   r   rz   r   rm   rn   r   rJ   )NNNN)
rH   r   rs   r   rx   r   rz   r   r   rJ   ),
__future__r   r6   r   rz   r   r   typingr   r   r   r   r   r	   urllib.parser
   _exceptionsr   r   
_multipartr   _typesr   r   r   r   r   r   _utilsr   r   __all__r   r0   rA   rE   rY   rk   rr   rv   ry   r   r   r   r!   r!   r!   r"   <module>   s@      





$