← back to Atmos Game

assets/gen/.venv/lib/python3.12/site-packages/httpx/__pycache__/_multipart.cpython-312.pyc

67 lines

�

c�bjs&�
��ddlmZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
mZmZddlmZmZmZddd	�Zej+ed
�D�cic] }|dk7s�	e|�dj1|���"c}�ej2d
j5ej7�D�cgc]}ej9|���c}��Zdd�Zdd�Z				dd�Z Gd�d�Z!Gd�d�Z"Gd�dee
�Z#ycc}wcc}w)�)�annotationsN)�Path�)�AsyncByteStream�FileContent�	FileTypes�RequestData�RequestFiles�SyncByteStream)�peek_filelike_length�primitive_value_to_str�to_bytesz%22z\\)�"�\� �z%{:02X}�|c�b�dd�}tj||�}|�d|�d�j�S)z;
    Encode a name/value pair within a multipart form.
    c�2�t|jd�S)Nr)�!_HTML5_FORM_ENCODING_REPLACEMENTS�group)�matchs �g/Users/macstudio3/Projects/atmos-game/assets/gen/.venv/lib/python3.12/site-packages/httpx/_multipart.py�replacerz$_format_form_param.<locals>.replacer&s��0����Q��@�@�z="r)rztyping.Match[str]�return�str)�_HTML5_FORM_ENCODING_RE�sub�encode)�name�valuers   r�_format_form_paramr#!s8��
A�
$�'�'��%�8�E��V�2�e�W�A��%�%�'�'rc�@�|rtj|�dxsdSy)z�
    Guesses the mimetype based on a filename. Defaults to `application/octet-stream`.

    Returns `None` if `filename` is `None` or empty.
    rzapplication/octet-streamN)�	mimetypes�
guess_type)�filenames r�_guess_content_typer(-s&����#�#�H�-�a�0�N�4N�N�rc��|r|jd�syd|vrp|jd�D]\}|j�j�jd�s�1|j�t	d�djd�cSy)Nsmultipart/form-data�;s	boundary=�")�
startswith�split�strip�lower�len)�content_type�sections  r�(get_multipart_boundary_from_content_typer38s}���|�6�6�7M�N���|��#�)�)�$�/�G��}�}��$�$�&�1�1�,�?��}�}��s�<�'8�':�;�A�A�$�G�G�0�rc�8�eZdZdZdd�Zd	d�Zd	d�Zd
d�Zdd�Zy)�	DataFieldzB
    A single form field item, within a multipart form field.
    c�.�t|t�stdt|��d|����|�:t|ttt
tf�stdt|��d|����||_t|t�r||_	yt|�|_	y)Nz)Invalid type for name. Expected str, got �: z5Invalid type for value. Expected primitive type, got )
�
isinstancer�	TypeError�type�bytes�int�floatr!r
r")�selfr!r"s   r�__init__zDataField.__init__Ks����$��$��;�D��J�<�r�$��R��
���Z���U�C��7O�%P����U��}�B�u�i�1��
���	���u�-�E�	
�
�3I�%�3P�	
�
rc��t|d�s/td|j�}djd|dg�|_|jS)N�_headersr!r� Content-Disposition: form-data; �

)�hasattrr#r!�joinrA)r>r!s  r�render_headerszDataField.render_headersZsB���t�Z�(�%�f�d�i�i�8�D��H�H�4�d�K�H��D�M��}�}�rc�f�t|d�st|j�|_|jS)N�_data)rDrr"rH�r>s r�render_datazDataField.render_datacs&���t�W�%�!�$�*�*�-�D�J��z�z�rc�p�|j�}|j�}t|�t|�zS�N)rFrJr0)r>�headers�datas   r�
get_lengthzDataField.get_lengthis1���%�%�'�����!���7�|�c�$�i�'�'rc#�TK�|j���|j���y�wrL�rFrJrIs r�renderzDataField.renderns$�����!�!�#�#���� � �s�&(N)r!rr"z str | bytes | int | float | Noner�None�rr;)rr<�rztyping.Iterator[bytes])	�__name__�
__module__�__qualname__�__doc__r?rFrJrOrR�rrr5r5Fs ���

���(�
!rr5c�<�eZdZdZdZd	d�Zd
d�Zdd�Zdd�Zdd�Z	y)
�	FileFieldzB
    A single file field item, within a multipart form field.
    ic	��||_i}d}t|t�r1t|�dk(r|\}}nHt|�dk(r|\}}}n3|\}}}}n+t	tt
|dd���j}|}|�t|�}td�|D��}|�|s||d<t|tj�rtd��t|tj�rtd��||_
||_||_y)	N��r!�uploadc3�@K�|]}d|j�v���y�w)zcontent-typeN)r/)�.0�keys  r�	<genexpr>z%FileField.__init__.<locals>.<genexpr>�s����%W�w��n��	�	��&C�w����Content-Typez?Multipart file uploads require 'io.BytesIO', not 'io.StringIO'.zDMultipart file uploads must be opened in binary mode, not text mode.)r!r8�tupler0rr�getattrr(�any�io�StringIOr9�
TextIOBaser'�filerM)r>r!r"rMr1r'�fileobj�has_content_type_headers        rr?zFileField.__init__zs����	�#%��#'���e�U�#��5�z�Q��%*�!��'��U��q��27�/��'�<�<A�8��'�<���C���v�x� @�A�B�G�G�H��G���.�x�8�L�"%�%W�w�%W�"W���#�,C�'3�G�N�#��g�r�{�{�+��Q��
��g�r�}�}�-��V��
�!��
���	���rc��|j�}t|jttf�r*t|�tt
|j��zSt|j�}|�yt|�|zSrL)rFr8rmrr;r0rr)r>rM�file_lengths   rrOzFileField.get_length�sg���%�%�'���d�i�i�#�u��.��w�<�#�h�t�y�y�&9�":�:�:�*�4�9�9�5������7�|�k�)�)rc���t|d�s�dtd|j�g}|jr)td|j�}|j	d|g�|j
j
�D]<\}}d|�d�j�|j�}}|j	||g��>|jd�d	j|�|_
|jS)
NrArBr!r's; z
r7rCr)rDr#r!r'�extendrM�itemsr �appendrErA)r>�partsr'�header_name�header_valuerc�vals       rrFzFileField.render_headers�s����t�Z�(�3�"�6�4�9�9�5��E��}�}�-�j�$�-�-�H�����e�X�.�/�-1�\�\�-?�-?�-A�)��\�!�+��b�1�8�8�:�L�<O�<O�<Q�S�����c�3�Z�(�.B�
�L�L��%��H�H�U�O�D�M��}�}�rc#��K�t|jttf�rt	|j���yt|jd�r	|jj
d�|jj|j�}|r6t	|���|jj|j�}|r�5yy#tj$rY�swxYw�w)N�seekr)r8rmrr;rrDr{rj�UnsupportedOperation�read�
CHUNK_SIZE�r>�chunks  rrJzFileField.render_data�s������d�i�i�#�u��.��4�9�9�%�%���4�9�9�f�%�
��	�	���q�!��	�	���t���/����5�/�!��I�I�N�N�4�?�?�3�E���	�*�*�
��
�s1�AC$�C�-AC$�	C$�C!�C$� C!�!C$c#�dK�|j���|j�Ed{���y7��wrLrQrIs rrRzFileField.render�s'�����!�!�#�#��#�#�%�%�%�s�&0�.�0N)r!rr"rrrS�rz
int | NonerTrU)
rVrWrXrYr~r?rOrFrJrRrZrrr\r\ss(����J�/�b
*��"4� &rr\c�f�eZdZdZ	d
							dd�Z						dd�Zd
d�Zdd�Zdd�Zd
d�Z	dd	�Z
y)�MultipartStreamzC
    Request content as streaming multipart encoded form data.
    Nc���|�2tjd�j�jd�}||_d|jd�z|_t|j||��|_	y)N��asciiz multipart/form-data; boundary=%s)
�os�urandom�hexr �boundary�decoder1�list�_iter_fields�fields)r>rN�filesr�s    rr?zMultipartStream.__init__�si�����z�z�"�~�)�)�+�2�2�7�;�H� ��
�>�����B
�
����4�,�,�T�5�9�:��rc#�>K�|j�D]A\}}t|ttf�r|D]}t	||������3t	||�����Ct|t
j�r|j�n|}|D]\}}t||�����y�w)N)r!r")rtr8rgr�r5�typing�Mappingr\)r>rNr�r!r"�item�
file_itemss       rr�zMultipartStream._iter_fields�s����� �:�:�<�K�D�%��%�%���/�!�D�#��T�:�:�"� �T��7�7�(�'1�����&G�U�[�[�]�U�
�%�K�D�%���U�3�3�&�s�BBc#�K�|jD]/}d|jz��|j�Ed{���d���1d|jz��y7��w)Ns--%s
s
s--%s--
)r�r�rR)r>�fields  r�iter_chunkszMultipartStream.iter_chunkssM�����[�[�E���
�
�-�-��|�|�~�%�%��M�!��d�m�m�+�+�
&�s�4A�A�Ac��t|j�}d}|jD]+}|j�}|�y|d|zdzz
}||z
}|dz
}�-|d|zdzz
}|S)z�
        Return the length of the multipart encoded content, or `None` if
        any of the files have a length that cannot be determined upfront.
        rNr^�)r0r�r�rO)r>�boundary_length�lengthr��field_lengths     r�get_content_lengthz"MultipartStream.get_content_length	s~��
�d�m�m�,�����[�[�E� �+�+�-�L��#���a�/�)�A�-�-�F��l�"�F��a�K�F�!�	�!�o�%��)�)���
rc�d�|j�}|j}|�d|d�St|�|d�S)N�chunked)zTransfer-Encodingrf)zContent-Lengthrf)r�r1r)r>�content_lengthr1s   r�get_headerszMultipartStream.get_headerss<���0�0�2���(�(���!�)2�L�Q�Q�"%�n�"5�|�T�Trc#�>K�|j�D]}|���y�wrL�r�rs  r�__iter__zMultipartStream.__iter__&s�����%�%�'�E��K�(�s�c�@K�|j�D]}|����	y�wrLr�rs  r�	__aiter__zMultipartStream.__aiter__*s�����%�%�'�E��K�(�rerL)rNr	r�r
r��bytes | NonerrS)rNr	r�r
rz&typing.Iterator[FileField | DataField]rUr�)rzdict[str, str])rztyping.AsyncIterator[bytes])rVrWrXrYr?r�r�r�r�r�r�rZrrr�r��sn���"&�	
;��
;��
;��	
;�

�
;�4��4�(4�4�	/�4�,��,U��rr�)r!rr"rrr;)r'�
str | Nonerr�)r1r�rr�)$�
__future__rrjr%r��rer��pathlibr�_typesrrrr	r
r�_utilsrr
rr�update�range�chr�format�compilerE�keys�escaperr#r(r3r5r\r�)�cs0r�<module>r�s��"�	��	�	�
������+0�v�$>�!�!�(�(�*/��/�G�/�Q�Q�$�Y�S��V�Y�
�
�a�
 � �/�G��%�"�*�*��I�I�%F�%K�%K�%M�N�%M��r�y�y��|�%M�N�O���
	(�������*!�*!�Zj&�j&�ZL�n�o�L��MH��Os�
C>� C>�*D