a
    &ñ»j»%  ã                   @  sx  d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ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mZmZmZmZmZ dd	lmZm Z  d
Z!eddd�Z"dddœdd„Z#d/dddddœdd„Z$dd„ Z%d0dddœdd„Z&G d d!„ d!ƒZ'G d"d#„ d#e'ƒZ(G d$d%„ d%e'ƒZ)G d&d„ 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.dS )1é    )ÚannotationsN)ÚBufferedReaderÚBytesIOÚTextIOWrapper©Ú
guess_type)
ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚMappingÚOptionalÚTupleÚTypeVarÚcast)Ú	urlencodeé   )ÚBufferTypesÚ	ByteOrStrÚRequestDataÚRequestFilesÚRequestFileValueÚRequestJson)Úto_bytesÚto_str)ÚJsonEncoderÚUrlencodedEncoderÚMultipartEncoderÚStreamEncoderÚTÚBaseEncoder)ÚboundÚstr)ÚfpÚreturnc                 C  s   t | ƒ\}}|pdS )Núapplication/octet-streamr   )r$   Úcontent_typeÚ_© r)   úBE:\soccer\ml_env\Lib\site-packages\tls_requests/models/encoders.pyÚguess_content_type   s    r+   Úasciir   Úbytes)ÚnameÚvalueÚencodingr%   c                 C  s8   t |tƒr| d¡}| ddddœ¡}d| |f  |¡S )Núutf-8z%0Az%0Dz%22)é
   é   é"   z%s="%s")Ú
isinstancer-   ÚdecodeÚ	translateÚencode)r.   r/   r0   r)   r)   r*   Úformat_header   s    

r9   c                   C  s   t  t d¡¡S )Né   )ÚbinasciiÚhexlifyÚosÚurandomr)   r)   r)   r*   Úget_boundary$   s    r?   é   r   Úint)ÚbufferÚ
chunk_sizec                 c  s$   |   d¡ |  |¡ }r |V  q
d S )Nr   )ÚseekÚread)rB   rC   Úchunkr)   r)   r*   Úiter_buffer(   s    
rG   c                   @  sv   e Zd Zdddœdd„Zedd„ ƒZdd	œd
d„Zdd	œdd„Zddddœdd„Zddddœdd„Z	dd	œdd„Z
dS )Ú	BaseFieldr#   r   ©r.   r/   c                 C  s   || _ i | _d S ©N)Ú_nameÚ_headers©Úselfr.   r/   r)   r)   r*   Ú__init__/   s    zBaseField.__init__c                 C  s   |   ¡ S rJ   )Úrender_headers©rN   r)   r)   r*   Úheaders3   s    zBaseField.headersr-   ©r%   c                 C  s:   dt d| jƒg}t| dd ƒ}|r0| t d|ƒ¡ d |¡S )Ns	   form-datar.   Úfilenames   ; )r9   rK   ÚgetattrÚappendÚjoin)rN   ÚpartsrT   r)   r)   r*   Úrender_parts7   s    
þzBaseField.render_partsc                 C  s$   |   ¡ }d dd„ | ¡ D ƒ¡d S )Nó   
c                 s  s   | ]\}}d ||f V  qdS )s   %s: %sNr)   )Ú.0ÚkÚvr)   r)   r*   Ú	<genexpr>D   ó    z+BaseField.render_headers.<locals>.<genexpr>s   

)Úget_headersrW   Úitems)rN   rR   r)   r)   r*   rP   B   s    zBaseField.render_headersr@   rA   úIterator[bytes]©rC   r%   c                 c  s
   dV  d S )Nr_   r)   ©rN   rC   r)   r)   r*   Úrender_dataF   s    zBaseField.render_datac                 c  s   |   ¡ V  |  |¡E d H  d S rJ   )rP   re   rd   r)   r)   r*   ÚrenderI   s    
zBaseField.renderzDict[bytes, bytes]c                 C  sB   |   ¡ | jd< t| dd ƒ}|r<t|tƒr2| d¡n|| jd< | jS )Ns   Content-Dispositionr'   r,   ó   Content-Type)rY   rL   rU   r5   r#   r8   )rN   r'   r)   r)   r*   r`   M   s    ÿzBaseField.get_headersN)r@   )r@   )Ú__name__Ú
__module__Ú__qualname__rO   ÚpropertyrR   rY   rP   re   rf   r`   r)   r)   r)   r*   rH   .   s   
rH   c                      s8   e Zd Zddddœ‡ fdd„Zddd	d
œdd„Z‡  ZS )Ú	DataFieldr#   r   ÚNone)r.   r/   r%   c                   s    t t| ƒ ||¡ t|ƒ| _d S rJ   )Úsuperrl   rO   r   r/   rM   ©Ú	__class__r)   r*   rO   X   s    zDataField.__init__r@   rA   rb   rc   c                 c  s   | j  d¡V  d S )Nr1   )r/   r8   rd   r)   r)   r*   re   \   s    zDataField.render_data)r@   )rh   ri   rj   rO   re   Ú__classcell__r)   r)   ro   r*   rl   W   s   rl   c                      sF   e Zd Zdddœ‡ fdd„Zdddœdd	„Zddddœdd„Z‡  ZS )Ú	FileFieldr#   r   rI   c                   s,   t t| ƒ ||¡ |  |¡\| _| _| _d S rJ   )rn   rr   rO   ÚunpackrT   Ú_bufferr'   rM   ro   r)   r*   rO   a   s    zFileField.__init__zTuple[str, BufferTypes, str])r/   r%   c                 C  sö   d\}}t |tƒr@t|ƒdkr6|^}}}|r>|d }qZ|d }nt |tƒrV| d¡}n|}t |ttfƒr´|s‚tj 	t|j
ƒ¡\}}|s”tt|j
ƒƒ}|jdkrÖ| ¡  t|j
dƒ}n"t |tƒrÈt|ƒ}nt|dƒsÖt‚t|pÞdƒtt|ƒt|pðdƒfS )	N)NNé   r   r1   ÚrbrE   Úuploadr&   )r5   ÚtupleÚlenr#   r8   r   r   r=   ÚpathÚsplitr.   r+   ÚmodeÚcloseÚopenr-   r   ÚhasattrÚ
ValueErrorr   r   )rN   r/   rT   r'   rB   Úargsr(   r)   r)   r*   rs   e   s.    








zFileField.unpackr@   rA   rb   rc   c                 c  s   t | j|ƒE d H  d S rJ   )rG   rt   rd   r)   r)   r*   re   †   s    zFileField.render_data)r@   )rh   ri   rj   rO   rs   re   rq   r)   r)   ro   r*   rr   `   s   !rr   c                   @  sŒ   e Zd ZdZeddœdd„ƒZedd„ ƒZddœdd	„Zd
dœdd„Zddœdd„Z	d
dœdd„Z
ddœdd„Zdddœdd„Zdd„ ZdS )r!   r@   ÚdictrS   c                 C  s   |   ¡ S rJ   )r`   rQ   r)   r)   r*   rR   �   s    zBaseEncoder.headersc                 C  s   t t| ddƒƒS )NÚ
_is_closedF)ÚboolrU   rQ   r)   r)   r*   Úclosed‘   s    zBaseEncoder.closedc                 C  s   i S rJ   r)   rQ   r)   r)   r*   r`   •   s    zBaseEncoder.get_headersrb   c                 c  s,   t | dd ƒ}|r"t|| jƒE d H  dV  d S )Nrt   r_   )rU   rG   Ú_chunk_size©rN   rB   r)   r)   r*   rf   ˜   s    zBaseEncoder.renderrm   c                 C  s6   | j s2t| ddƒ t| dd ƒ}|r2| ¡  | ¡  d S )Nrƒ   Trt   )r…   ÚsetattrrU   Úflushr}   r‡   r)   r)   r*   r}   ž   s    zBaseEncoder.closec                 c  s   |   ¡ D ]
}|V  qd S rJ   ©rf   ©rN   rF   r)   r)   r*   Ú__iter__¦   s    zBaseEncoder.__iter__zAsyncIterator[bytes]c                 C s   |   ¡ D ]
}|V  qd S rJ   rŠ   r‹   r)   r)   r*   Ú	__aiter__ª   s    zBaseEncoder.__aiter__r    )rN   r%   c                 C  s   | S rJ   r)   rQ   r)   r)   r*   Ú	__enter__®   s    zBaseEncoder.__enter__c                 O  s   |   ¡  d S rJ   ©r}   ©rN   r�   Úkwargsr)   r)   r*   Ú__exit__±   s    zBaseEncoder.__exit__N)rh   ri   rj   r†   rk   rR   r…   r`   rf   r}   rŒ   r�   rŽ   r’   r)   r)   r)   r*   r!   Š   s   
c                   @  sb   e Zd Zdddœdddddd	œd
d„Zeddœdd„ƒZdd„ Zddœdd„Zdddœdd„ZdS )r   Nr@   ©rC   úOptional[RequestData]úOptional[RequestFiles]zOptional[bytes]rA   rm   )ÚdataÚfilesÚboundaryrC   r%   c                K  s8   || _ d| _|  ||¡| _|r,t|tƒr,|ntƒ | _d S ©NF)r†   rƒ   Ú_prepare_fieldsÚfieldsr5   r-   r?   r˜   )rN   r–   r—   r˜   rC   r‘   r)   r)   r*   rO   ¶   s    	zMultipartEncoder.__init__r‚   rS   c                 C  s   | j r|  ¡ S i S rJ   )r›   r`   rQ   r)   r)   r*   rR   Ä   s    zMultipartEncoder.headersc                 C  s   dd| j  iS )Nrg   s    multipart/form-data; boundary=%s)r˜   rQ   r)   r)   r*   r`   Ê   s    zMultipartEncoder.get_headersrb   c                 c  sN   | j rD| j D ]*}d| j V  d | | j¡¡V  dV  qd| j V  dV  d S )Ns   --%s
r_   rZ   s   --%s--
)r›   r˜   rW   rf   r†   )rN   Úfieldr)   r)   r*   rf   Í   s    
zMultipartEncoder.render)r–   r—   c           	      C  s¢   g }t |tƒrl| ¡ D ]T\}}t |tttttfƒrJ| t	t
|ƒ|d�¡ q|D ]}| t	t
|ƒ|d�¡ qNqt |tƒrž| ¡ D ]\}}| tt
|ƒ|d�¡ q~|S )NrI   )r5   r   ra   r-   r#   rA   Úfloatr„   rV   rl   r   rr   )	rN   r–   r—   r›   r.   r/   ÚitemÚ	file_nameZ
file_valuer)   r)   r*   rš   Ö   s    

z MultipartEncoder._prepare_fields)NNN)	rh   ri   rj   rO   rk   rR   r`   rf   rš   r)   r)   r)   r*   r   µ   s      üú	r   c                   @  s8   e Zd Zddœdddœdd„Zdd	„ Zdd
œdd„ZdS )r   r@   r“   r”   rA   ©r–   rC   c                K  s   |   |¡| _|| _d| _d S r™   ©rš   rt   r†   rƒ   ©rN   r–   rC   r‘   r)   r)   r*   rO   ç   s    zJsonEncoder.__init__c                 C  s   ddiS )Nrg   s   application/jsonr)   rQ   r)   r)   r*   r`   ì   s    zJsonEncoder.get_headers©r–   c                 C  s   |d urt t|ƒƒS d S rJ   )r   r   )rN   r–   r)   r)   r*   rš   ï   s    zJsonEncoder._prepare_fieldsN©rh   ri   rj   rO   r`   rš   r)   r)   r)   r*   r   æ   s   r   c                   @  s8   e Zd Zddœdddœdd„Zdd	„ Zdd
œdd„ZdS )r   r@   r“   r”   rA   r    c                K  s   |   |¡| _|| _d| _d S r™   r¡   r¢   r)   r)   r*   rO   ö   s    zUrlencodedEncoder.__init__c                 C  s   ddiS )Nrg   s!   application/x-www-form-urlencodedr)   rQ   r)   r)   r*   r`   û   s    zUrlencodedEncoder.get_headersr£   c                 C  s~   g }t |tƒrz| ¡ D ]L\}}t |tttttfƒrF| |t	|ƒf¡ q|D ]}| |t	|ƒf¡ qJqt
t|dd� d¡ƒS d S )NT)Údoseqr1   )r5   r   ra   r-   r#   rA   r�   r„   rV   r   r   r   r8   )rN   r–   r›   r.   r/   rž   r)   r)   r*   rš   þ   s    
z!UrlencodedEncoder._prepare_fieldsNr¤   r)   r)   r)   r*   r   õ   s   r   c                      sx   e Zd Zdddœdddddœd	d
„Zddœdd„Zddœdd„Zeddœddddœdd„ƒZ‡ fdd„Zdd„ Z	‡  Z
S )r   Nr@   r“   r”   r•   zOptional[RequestJson]zOptional[int])r–   r—   ÚjsonrC   c                K  sd   t |tƒr|nd| _d| _|d ur0t||ƒ| _n0|d urDt|ƒ| _n|d urXt|ƒ| _ntƒ | _d S )Nr@   F)	r5   rA   r†   rƒ   r   Ú_streamr   r   r!   )rN   r–   r—   r¦   rC   r‘   r)   r)   r*   rO     s    	zStreamEncoder.__init__rb   rS   c                 c  s   | j E d H  d| _d S )NT)r§   rƒ   rQ   r)   r)   r*   rf   !  s    zStreamEncoder.renderr‚   c                 C  s
   | j  ¡ S rJ   )r§   r`   rQ   r)   r)   r*   r`   %  s    zStreamEncoder.get_headersr-   z'StreamEncoder')ÚrawrC   r%   c                C  s    | |d�}t |jdt|ƒƒ |S )Nr“   rt   )rˆ   r§   r   )Úclsr¨   rC   Úretr)   r)   r*   Ú
from_bytes(  s    
zStreamEncoder.from_bytesc                   s   t ƒ  ¡  | j ¡  d S rJ   )rn   r}   r§   rQ   ro   r)   r*   r}   .  s    
zStreamEncoder.closec                 O  s   |   ¡  d S rJ   r�   r�   r)   r)   r*   r’   2  s    zStreamEncoder.__exit__)NNN)rh   ri   rj   rO   rf   r`   Úclassmethodr«   r}   r’   rq   r)   r)   ro   r*   r     s      üúr   )r,   )r@   )/Ú
__future__r   r;   r=   Úior   r   r   Ú	mimetypesr   Útypingr   r	   r
   r   r   r   r   r   r   r   Úurllib.parser   Útypesr   r   r   r   r   r   Úutilsr   r   Ú__all__r    r+   r9   r?   rG   rH   rl   rr   r!   r   r   r   r   r)   r)   r)   r*   Ú<module>   s,   0 )	*+1