← back to Atmos Game

assets/gen/.venv/lib/python3.12/site-packages/gradio_client/__pycache__/utils.cpython-312.pyc

385 lines

�

c�bji����ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlmZddlmZmZddlmZmZddlmZddlmZddlmZdd	lm Z dd
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*ddl+Z,ddl-Z-ddl.Z.ddl.m/Z/e"rddl0m1Z1d
Z2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBe/j�e/j�e/j�e/j�e/j�gZHej�d�ZJGd�de&d��ZKdkd �ZLeL�ZMGd!�d"eN�ZOGd#�d$eN�ZPGd%�d&eN�ZQGd'�d(eN�ZRGd)�d*eSe�ZTGd+�d,e�ZUeGd-�d.��ZVeGd/�d0��ZWeGd1�d2��ZXe%d3eWeXz�ZYd4�ZZeGd5�d6��Z[eGd7�d8��Z\dld9�Z]dmd:�Z^dmd;�Z_																						dnd<�Z`																		dod=�Za								dpd>�Zb																		dqd?�Zc										drd@�ZddA�ZedsdtdB�Zf	du							dvdC�ZgdwdD�ZhdxdE�ZidydF�ZjdzdG�Zkd{dH�Zld|dI�Zmdsd{dJ�Znd}dK�Zod~ddL�Zpd�dM�Zq			d�							d�dN�Zrdsd�dO�Zsd�dP�Zt		d�					d�dQ�Zud�dR�ZvGdS�dTew�Zxd�dU�ZygdV�ZzezdWZ{d�dX�Z|d�dY�Z}d�dZ�Z~d�d[�Zd�d\�Z�								d�d]�Z�d�d^�Z�d�d_�Z�dsd�d`�Z�d�da�Z�dldb�Z�dldc�Z�dldd�Z�dlde�Z�hdf�Z�d�dg�Z�d�dh�Z�								d�di�Z�d�dj�Z�y)��)�annotationsN)�deque)�Callable�	Coroutine)�	dataclass�field)�datetime)�Enum)�Path)�Lock)	�
TYPE_CHECKING�Any�Literal�NewType�	TypedDict�Union�get_args�
get_origin�get_type_hints)�
SpaceStage)�
ParameterInfozapi/predict/z
queue/joinz
queue/data�upload�login�configzinfo?all_endpoints=Truezinfo?serialize=Falsez0https://gradio-space-api-fetcher-v2.hf.space/api�resetzhttps://hf.space/{}zheartbeat/{session_hash}�cancel�statez[<>:"/\\|?*\x00-\x1f\x7f`$!{}]c�r�eZdZUded<ded<ded<ded<ded	<ded
<ded<d
ed<ded<ded<y)�Message�str�msg�dict[str, Any]�output�event_id�int�rank�float�rank_eta�
queue_size�bool�success�
list[dict]�
progress_data�log�levelN)�__name__�
__module__�__qualname__�__annotations__���j/Users/macstudio3/Projects/atmos-game/assets/gen/.venv/lib/python3.12/site-packages/gradio_client/utils.pyrrOs6��	�H����M�

�I��O��O�
�M���	�H��Jr5rF)�totalc���	tjtd�jd�j	�}tj|�}|jdd�}|S#t$rYywxYw)Nzpackage.json�utf-8�version�)	�pkgutil�get_datar0�decode�strip�json�loads�get�	Exception)�package_json_data�package_datar:s   r6�get_package_versionrF\sj������X�~�6�=�=�g�F�L�L�N�	��z�z�"3�4���"�"�9�b�1���������s�AA"�"	A.�-A.c��eZdZdZy)�TooManyRequestsErrorz.Raised when the API returns a 429 status code.N�r0r1r2�__doc__r4r5r6rHrHks��8�r5rHc��eZdZdZy)�
QueueErrorzMRaised when the queue is full or there is an issue adding a job to the queue.NrIr4r5r6rLrLqs��W�r5rLc��eZdZdZy)�InvalidAPIEndpointErrorz(Raised when the API endpoint is invalid.NrIr4r5r6rNrNws��2�r5rNc��eZdZdZy)�SpaceDuplicationErrorz:Raised when something goes wrong with a Space Duplication.NrIr4r5r6rPrP}s��D�r5rPc�D�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZy)�
ServerMessage�	send_hash�
queue_full�
estimation�	send_data�process_starts�process_generating�process_completedr.�progress�	heartbeatzServer stopped unexpectedly.�unexpected_error�close_stream�process_streamingN)r0r1r2rSrTrUrVrWrXrYr.rZr[�server_stoppedr\r]r^r4r5r6rRrR�sL���I��J��J��I�%�N�-��+��
�C��H��I�3�N�)��!�L�+�r5rRc�h�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZedd
��Zdd�Zedd��Zy)�Statusz'Status codes presented to client users.�STARTING�
JOINING_QUEUE�
QUEUE_FULL�IN_QUEUE�SENDING_DATA�
PROCESSING�	ITERATING�PROGRESS�FINISHED�	CANCELLED�LOGc
�T�tjtjtjtjtj
tjtjtjtjtjg
}|j|�S)z'Order of messages. Helpful for testing.)rarbrcrdrerfrgrirhrjrk�index)�status�orders  r6�orderingzStatus.ordering�sn��
�O�O�� � �����O�O��������O�O�����O�O����
���{�{�6�"�"r5c�H�|j|�|j|�kS�N)rq)�self�others  r6�__lt__z
Status.__lt__�s���}�}�T�"�T�]�]�5�%9�9�9r5c�d�tjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tji
|S)zKMap the raw message from the backend to the status code presented to users.)rRrSrarcrTrdrUrerVrfrWrgrXrhrYrjrZrir.rlr_)r!s r6�
msg_to_statuszStatus.msg_to_status�s���
�#�#�V�%9�%9��$�$�f�&7�&7��$�$�f�o�o��#�#�V�%8�%8��(�(�&�*;�*;��,�,�f�.>�.>��+�+�V�_�_��"�"�F�O�O����v�z�z��(�(�&�/�/�
���	r5N)rora�returnr%)rura)r!r ryra)r0r1r2rJrbrcrdrerfrgrhrirjrkrl�staticmethodrqrvrxr4r5r6rara�sg��1��H�#�M��J��H�!�L��J��I��H��H��I�
�C��#��#� :��
��
r5rac�R�eZdZUded<ded<ded<ded<ded<edd	��Zy
)�ProgressUnit�
int | Nonern�length�
str | None�unit�float | NonerZ�descc���|D�cgc]Z}||jd�|jd�|jd�|jd�|jd�����\c}Scc}w)Nrnr~r�rZr�)rnr~r�rZr��rB)�cls�data�ds   r6�from_msgzProgressUnit.from_msg�sj���	
���
��e�e�G�n��u�u�X���U�U�6�]����z�*��U�U�6�]�
��	
�		
��	
s�AA'N)r�r,ryzlist[ProgressUnit])r0r1r2r3�classmethodr�r4r5r6r|r|�s2������
����
���

��

r5r|c�t�eZdZUdZded<ded<ded<ded<d	ed
<ded<d
ed<dZded<dZded<y)�StatusUpdate�IUpdate message sent from the worker thread to the Job on the main thread.ra�coder}r&r)r��etazbool | Noner+zdatetime | None�timezlist[ProgressUnit] | Noner-Nztuple[str, str] | Noner.rozLiteral['status', 'output']�type)r0r1r2rJr3r.r�r4r5r6r�r��sD��S�
�L�
����	��
��
��,�,�"&�C�	�&�(0�D�
%�0r5r�c�B�eZdZUdZded<ded<dZded<d	Zded
<y)�OutputUpdater��	list[Any]�outputsr*r+r#zLiteral['output']r�F�finalN)r0r1r2rJr3r�r�r4r5r6r�r��s%��S�
��
�M�&�D�
�&��E�4�r5r��Updatec	�f�ttjddddtj�d��S)N)r�r&r)r�r+r�r-)r�rarbr	�nowr4r5r6�create_initial_status_updater��s.���
�_�_�
����
�\�\�^���r5c�J�eZdZUdZee��Zded<ee��Z	ded<y)�	JobStatuszpThe job status.

    Keeps track of the latest status update and intermediate outputs (not yet implements).
    ��default_factoryr��
latest_statusr�r�N)
r0r1r2rJrr�r�r3�listr�r4r5r6r�r�s(���
#(�8T�"U�M�<�U��t�4�G�Y�4r5r�c��eZdZUdZded<ded<ded<ded	<d
Zded<d
Zded<d
Zded<d
Zded<e	e
j��Zded<y
)�CommunicatorzKHelper class to help communicate between the worker thread and main thread.r�lockr��jobzCallable[..., tuple]�prediction_processorr �	reset_urlFr*�
should_cancelNrr$�thread_complete�dict[str, str] | None�request_headersr�zasyncio.Queue[Update]�updates)
r0r1r2rJr3r�r$r�r�r�asyncio�Queuer�r4r5r6r�r�sW��U�
�J�	�N�.�.��N��M�4���H�j��!�O�T�!�-1�O�*�1�%*�7�=�=�%I�G�
"�Ir5r�c�F�t|t�sy|jd�S)zN
    Check if the given value is a string that looks like an HTTP(S) URL.
    F)zhttp://zhttps://)�
isinstancer �
startswith��possible_urls r6�is_http_url_liker�%s#���l�C�(���"�"�#:�;�;r5c�.�ddi}	tj�5}tj||��}|jdk(r&|j	||��j
cddd�S|j
cddd�S#1swYyxYw#t$rYywxYw)zb
    Probe the given URL to see if it responds with a 200 status code (to HEAD, then to GET).
    z
User-Agentz8gradio (https://gradio.app/; gradio-team@huggingface.co)��headersi�NF)�httpx�Client�head�status_coderB�
is_successrC)r�r��client�head_requests    r6�	probe_urlr�.s����W�X�G��
�\�\�^�v� �:�:�l�G�D�L��'�'�3�.��z�z�,��z�@�K�K��^� �*�*�	�^�^��
����s;�B�AA<�	B�'A<�2	B�<B�B�B�	B�Bc�\�tjd�t|�xrt|�S)z3
    Check if the given string is a valid URL.
    z^is_valid_url should not be used. Use is_http_url_like() and probe_url(), as suitable, instead.)�warnings�warnr�r�r�s r6�is_valid_urlr�=s-��
�M�M�	H���L�)�E�i��.E�Er5c
��d|_|	jt||||�}
|	jt||||||||�	}tj
j
|
|gtj
j��\}}
d|_t|�dk7rtdt|��d���|D]}|j�cSy�NF)�return_whenT�zDid not expect z tasks to be done.)r��submit�check_for_cancel�
stream_sse_v0�
concurrent�futures�wait�FIRST_COMPLETED�len�
ValueError�result)r�r��	hash_data�helper�sse_url�sse_data_urlr��cookies�
ssl_verify�executor�
future_cancel�
future_sse�done�_�futures               r6�get_pred_from_sse_v0r�Hs���#�F���O�O��&�'�7�J��M�������������
�J�� � �%�%�	�
�#��&�&�6�6�&��G�D�!�"�F��
�4�y�A�~��?�3�t�9�+�5G�H�I�I����}�}���r5c��d|_|jt||||�}|jt||||�}	tj
j
||	gtj
j��\}
}d|_t|
�dk7rtdt|
��d���|
D]'}|j�}
|
r|
�|j�cSyr�)r�r�r��stream_sse_v1plusr�r�r�r�r�r��	exceptionr�)r�r�r��pending_messages_per_eventr$�protocolr�r�r�r�r�r�r�r�s              r6�get_pred_from_sse_v1plusr�os���#�F���O�O��&�'�7�J��M�����6�#=�x���J�� � �%�%�	�
�#��&�&�6�6�&��G�D�!�"�F��
�4�y�A�~��?�3�t�9�+�5G�H�I�I����$�$�&�	���O��}�}���	r5c��	tjd�|j5|jr
	ddd�n4|jrt
jj��	ddd��l|jr0tj|jd|ji|||��t
jj��#1swY�dxYw)N皙�����?r$)r@r�r��verify)r��sleepr�r�r�r�r��CancelledErrorr$r��postr�)r�r�r�r�s    r6r�r��s�����
�
�4��
�[�[��#�#���[��%�%� �(�(�7�7�9�9�&������
�
�
�����f�o�o�.����	
��
�
�
+�
+�
-�-��[�s�C�*C�Cc���	|jd||||��5}|j�D�]H}	|	jd�}	t|	�dk(r�$|	j	d��rtj|	dd�}
|
dtjtjfvr�t|j5d|
v}ttj|
d�|
jd	�|
jd
d�|
jd�tj �|
jd�|rt"j%|
d�nd�
�}|
jdi�jdg�}
|
rR|j&tj(k7r5	|j*|
�}|j.j0j3|�||j._ddd�|j6rt8j:j=��|
ddk(rt?d��|
ddk(r9|
d}||_ |jC|d|i|�|�||��}|jE���#|
ddk(s��-|
dccddd�StGd|	����	ddd�tGd��#t,$r}|g}Yd}~��d}~wwxYw#1swY��xYw#1swYtGd��xYw#t8j:j<$r�wxYw)N�GET)�paramsr�r��
r�data:�r!r-r)r&r+r()r�r)r&r+r�r�r-r#r�rTz Queue is full! Please try again.rVr$)r@r�r�rYzUnexpected message: z*Did not receive process_completed message.)$�stream�
iter_lines�rstripr�r�r@rArRr.r[r�r�rarxrBr	r�r|r�r�rjr�rCr�r��appendr�r�r�r�r�rLr$r��raise_for_statusr�)r�r�r�r�r�r�r�r��response�line�resp�has_progress�
status_updater#r��er$�reqs                  r6r�r��s���9�
�]�]�������
�� �+�+�-���{�{�4�(���t�9��>���?�?�7�+��:�:�d�1�2�h�/�D��E�{�}�'8�'8�-�:Q�:Q�&R�R� ����'6�$�'>��(4�!'�!5�!5�d�5�k�!B�'+�x�x��'=�!%���&�$�!7�$(�H�H�Y�$7�!)���� $���� 4�+�+7�*?�*?��_�@U�*V�!%�
)�
�"&���(�B�!7�!;�!;�F�B�!G��!�m�&8�&8�F�O�O�&K�-�)D��)D�)D�f�)M��#�J�J�.�.�5�5�f�=�3@��
�
�0�)%�*�-�-�(�0�0�?�?�A�A��E�{�l�2�(�)K�L�L��e���3�#'�
�#3��*2���$�k�k�(�",�h�!L�$�!L�)�!L�$+�$+�	*����,�,�.��e��(;�;�#�H�~�-�g
�
�j%�';�D�6�%B�C�C�].�
�l�E�F�F��-$-�-�*+����-��#%���
�l�E�F�F�����,�,��
��sy�K�BJ/�)CJ#�J	�6J#�BJ/�J/�	K�&J/�6K�		J 	�J	�J#�J 	� J#�#J,�(J/�/K�4K�K$c
���	||}d}	t|�dkDr|j�}ntjd��6|�|jrt
jj��|j5d}|dtjk(r*|jd�}|jd�}	|r|	r||	f}ttj|d�|jd�|jdd�|jd	�tj �|jd
�d|vrt"j%|d�nd|��}
|jd
i�jdg�}|dtj&k(r@|dvr<|�t)|�}n.t+|�D] \}}
||}t-||
�}|||<|||<�"|r�|
j.tj0k7rk	|j2|�}|j6j8j;|�|j<j?tA||jd	d����|
|j6_!|j<j?|
�ddd�|dtjDk(rs||=|jd	d�stG|d
jI��}n|d
}|j<j?tA|d|jd	d����|d
S|dtjJk(rtMd����&#t4$r}|g}Yd}~��Md}~wwxYw#1swY��xYw#t
jj$r�wxYw)NTrr�r!r.r/r)r&r+r(r-)r�r)r&r+r�r�r-r.r#r�)�sse_v2zsse_v2.1�sse_v3)r�r+)r�r�r+zServer stopped.)'r��popleftr�r�r�r�r�r�r�rRr.rBr�rarxr	r�r|r�rXr��	enumerate�
apply_diffr�rjr�rCr�r�r�r��
put_nowaitr�r�rY�dict�itemsr_r�)r�r�r$r��pending_messages�pending_responses_for_diffsr!�log_messager.r/r�r#�i�value�prev_output�
new_outputr�r�s                  r6r�r��s;��O�5�h�?��&*�#���#�$�q�(�&�.�.�0���
�
�4� ���{�f�4�4� �(�(�7�7�9�9����"���u�:��!2�!2�2��'�'�%�.�C��G�G�G�,�E��u�'*�E�l�� ,��-�-�c�%�j�9�"�w�w�|�4������.��G�G�I�.�!�������
�+�&�#�-�#/�"7�"7��O�8L�"M��#�!�
�����2�.�2�2�6�2�>���u�:��!A�!A�A�h�S�G�
3�:�6:�6�l�3�(1�&�(9�H�A�u�*E�a�*H�K�)3�K��)G�J�=G�7��:�(2�F�1�I�	):��m�0�0�F�O�O�C�%�!<��!<�!<�f�!E���J�J�&�&�-�-�f�5��N�N�-�-�$�V�S�W�W�Y�PT�=U�V��,9��
�
�(����)�)�-�8�Y�Z�5�z�]�<�<�<�.�x�8��w�w�y�$�/�"�#�h�-�"5�"5�"7�8�F� ��]�F����)�)� � &�"� #���	�4� 8����8�}�$��U��}�;�;�;� �!2�3�3�Q��^%�%�"#����%��K���@���,�,��
��sW�A5M�7E.M
�&L0�5BM
�<BM�
#M�0	M�9M�<M
�M�M
�
M�M�M5c�b�tj|�}d�}|D]\}}}|||||�}�|S)Nc���t|�dk(r|dk(r|S|dk(r||zStd|����|}tt|�dz
�D]
}|||}�|d}|dk(r|||<|S|dk(r||xx|z
cc<|S|dk(r4t|t�r|jt
|�|�|S|||<|S|dk(r#t|t�r|t
|�=|S||=|Std	|����)
Nr�replacer�zUnsupported action: r�������add�deletezUnknown action: )r�r��ranger�r��insertr%)�target�path�actionr�currentr�	last_paths       r6�
apply_editzapply_diff.<locals>.apply_editHs:���t�9��>���"����8�#���~�%� �#7��x�!@�A�A����s�4�y�1�}�%�A��d�1�g�&�G�&���H�	��Y��!&�G�I�� �
��x�
��I��%�'���
��u�_��'�4�(����s�9�~�u�5��
�&+��	�"��
��x�
��'�4�(��C�	�N�+��
�	�I�&��
��/��x�8�9�9r5)�copy�deepcopy)�obj�diffrrrrs      r6rrEs@��
�-�-��
�C��B $����e���d�F�E�2�� $��Jr5c�$�t|xstj��tjd�z}|jdd��|t|�jz}tj||�t|j��S)N�T��exist_ok�parents)r�tempfile�
gettempdir�secrets�	token_hex�mkdir�name�shutil�copy2r �resolve)�	file_path�dir�	directory�dests    r6�create_tmp_copy_of_filer/tsm���S�1�H�/�/�1�2�W�5F�5F�r�5J�J�I�
�O�O�T�4�O�0��t�I��+�+�+�D�
�L�L��D�!��t�|�|�~��r5c�L�|�tj|d��|rdd|zini}t|xstj��tjd�z}|jdd��|t|�jz}tjd||d�	�5}|j�t|d
�5}|j�D]}|j|��	ddd�ddd�t|j!��S#1swY�*xYw#1swY�.xYw)z0Kept for backwards compatibility for 3.x spaces.NT�r �
Authorization�Bearer rrr�)r��follow_redirects�wb)�os�makedirsrr"r#r$r%r&r'r�r�r��open�iter_raw�writer r*)	�url_path�tokenr,r�r-r+r��f�chunks	         r6�download_tmp_copy_of_filer?|s�����
���C�$�'�6;��	�E� 1�2��G��S�1�H�/�/�1�2�W�5F�5F�r�5J�J�I�
�O�O�T�4�O�0��D��N�/�/�/�I�	���
�x��4�
�	��!�!�#�
�)�T�
"�a�!�*�*�,�������-�#�	
��y� � �"�#�#�#�
"��	
�
�s$� D�='D�%D�D	�D�D#c���|j�}|jd�ry|jd�rytj|�d}|�"|j	dd�j	dd	�}|S)
Nz.vttztext/vttz.webpz
image/webprzx-wav�wavzx-flac�flac)�lower�endswith�	mimetypes�
guess_typer
)�filename�filename_lower�mimetypes   r6�get_mimetyperJ�so���^�^�%�N����v�&�����w�'���#�#�H�-�a�0�H����#�#�G�U�3�;�;�H�f�M���Or5c���|jdd�}tj|�d}|dk(ry|�ytj|�}|�|j	d�r|dd}|S)Nz	audio/wavzaudio/x-wavrz
audio/flacrB�.r�)r
rErF�guess_extensionr�)�encodingr��	extensions   r6�
get_extensionrP�sp������]�;�H�����)�!�,�D��|���	
����)�)�$�/�I����!5�!5�c�!:��a�b�M�	��r5c�<�t|�}|D]�}|dk(ry|jd�rY|jd�j�}t	|�j
jd�j�}||k(s�ry|��w|j|�d��s��yy)N�fileTrL�/F)rJr��lstriprCr�suffix)r+�
file_types�	mime_type�	file_type�file_exts     r6�
is_valid_filerZ�s����Y�'�I��	���������$�!�(�(��-�3�3�5�I��I��-�-�4�4�S�9�?�?�A�H��H�$��
�
"�y�';�';�y�k��O�'L�� �r5c���t|d�5}tj|j��}t	|d�}tt	|��}d|�|ndzdz|z	cddd�S#1swYyxYw)N�rbr9r�r;�;base64,)r8�base64�	b64encode�readr rJ)r=rR�encoded_string�
base64_strrIs     r6�encode_file_to_base64rc�sp��	
�a���$��)�)�$�)�)�+�6�����1�
���A��'���#�/�x�R�
9��
��
�	
�	
���s�AA*�*A3c���tj|�}|j�tj|j
�}t
|d�}t|�}d|�|ndzdz|zS)Nr9r�r;r])r�rBr�r^r_�contentr rJ)�urlr�rarbrIs     r6�encode_url_to_base64rg�sc���9�9�S�>�D������%�%�d�l�l�3�N��^�W�-�J��C� �H��x�3�8��<�z�I�J�V�r5c�Z�t|�}t|�rt|�St|�Srs)r r�rgrc)rs r6�encode_url_or_file_to_base64ri�s)���t�9�D����#�D�)�)� ��&�&r5c#��K�t�}|rdd|zini}tjd||��5}|j�D]}||z
}|���
	ddd�|��y#1swY�xYw�w)Nr2r3r�r�)�	bytearrayr�r��
iter_bytes)rfr<�arrr��rr�s      r6�download_byte_streamro�sd����
�+�C�6;��	�E� 1�2��G�	���e�S�'�	2�a��L�L�N�D��4�K�C��J�#�
3��I�	
3�	2�s�.A)�A�
A)�A&�"A)c�p�t|�}|jdd�d}tj|�|fS)N�,r�r)rP�rsplitr^�	b64decode)rNrOr�s   r6�decode_base64_to_binaryrt�s7���h�'�I��?�?�3��"�2�&�D����D�!�9�,�,r5c��tjj|�\}}tj	d|�}|rdtj	d|dd�z}|s|rd}||z}t|j
��}||kDr?||kDr:t|�dk(r	|S|dd}||z}t|j
��}||kDr�:|S)a�
    Strips invalid characters from a filename and ensures it does not exceed the maximum byte length.
    Only removes characters that are truly dangerous for file systems: path separators,
    null bytes, control characters, and shell-dangerous characters. Preserves all other
    characters including parentheses, brackets, unicode characters, etc.
    The filename may include an extension (in which case it is preserved exactly as is),
    or could be just a name without an extension.
    r;rLr�NrRrr)r6r�splitext�
_FORBIDDEN_RE�subr��encode)rG�	max_bytesr'�ext�filename_lens     r6�!strip_invalid_filename_charactersr}�s������ � ��*�I�D�#����R��&�D�
��M�%�%�b�#�a�b�'�2�2���C����c�z�H��x���(�)�L��i���Y�&��4�y�A�~���O����9�D��c�z�H��x���0�1�L��Y�&��Or5c��dj|D�cgc]}|j�s|dvs�|��c}�jdd�j�Scc}w)zECleans up a Python parameter name to make the API info more readable.r;z _� r�)�join�isalnumr
rC)�
original_name�chars  r6�sanitize_parameter_namesr�sH��	���-�R�-�$�4�<�<�>�T�T�\��-�R�S�	���c�	�	�����Rs
�A�Ac��t|xstj��tjd�z}|jdd��t
|�\}}|�H|�Ft|�j}|}d|vr+|d|jd�}||jd�dzd}|�t|�}|�tjd||��}ntjd|d|z|�	�}|j|�|j�|S)
NrTrrLrr�F)r�prefixr,)rr�rUr,)
rr"r#r$r%r&rtr'rnr}�NamedTemporaryFiler:�flush)	rNr+r,r�r-r�rOrG�file_objs	         r6�decode_base64_to_filer�s���S�1�H�/�/�1�2�W�5F�5F�r�5J�J�I�
�O�O�T�4�O�0�-�h�7�O�D�)������	�?�'�'�����(�?��a�(�.�.��"5�6�F� �����!4�q�!8�!:�;�I�
��2�6�:�����.�.���Y�
���.�.�����?��	
��
�N�N�4���N�N���Or5c��|�tj|d��tjdd|d��}t	|t
�rt
j|�}t
j||�|j�|S)NTr1Fz.jsonzw+)rrUr,�mode)
r6r7r"r�r�r r@rA�dumpr�)�jsnr,r�s   r6�dict_or_str_to_json_filer�3sd��
��
���C�$�'��*�*��W�#�D��H��#�s���j�j��o���I�I�c�8���N�N���Or5c�n�t|�5}tj|�cddd�S#1swYyxYwrs)r8r@�load)r+r=s  r6�file_to_jsonr�As ��	
�i��A��y�y��|�
���s�+�4c�
�tjj|dt��}	t	j
d|�d�d|i|��y#tj$r(}tdtj|��d��|�d}~wwxYw)	N�
gradio_client)r<�library_name�library_versionz"https://huggingface.co/api/spaces/z
/sleeptime�seconds)r@r�z>Could not set sleep timeout on duplicated Space. Please visit z5 to set a timeout manually to reduce billing charges.)
�huggingface_hub�utils�build_hf_headers�__version__r�r��HTTPStatusErrorrP�	SPACE_URL�format)�space_idr<�timeout_in_secondsr�r�s     r6�set_space_timeoutr�Is���
�#�#�4�4��$�#�5��G�

�
�
�
�0��
�*�E��/�0��	
��
� � ��#�L�Y�M]�M]�^f�Mg�Lh�iC�
C�
��	���s�A�B�#A=�=Bc��tjjtjj�|g|��i|��S)a
    Runs async functions in sync scopes. Can be used in any scope.

    Example:
        if inspect.iscoroutinefunction(block_fn.fn):
            predictions = utils.synchronize_async(block_fn.fn, *processed_input)

    Args:
        func:
        *args:
        **kwargs:
    )�fsspec�asyn�sync�get_loop)�func�args�kwargss   r6�synchronize_asyncr�es2���;�;���F�K�K�0�0�2�D�J�4�J�6�J�Jr5c��eZdZy)�APIInfoParseErrorN)r0r1r2r4r5r6r�r�us��r5r�c���d|vryd|vryd|vr|dS|jd�ry|jd�ry|jd�ry|jd�ryd|vriStd|����)	N�const�enumr��$ref�oneOf�anyOf�allOfzCannot parse type for )rBr�)�schemas r6�get_typer�ys����&���
����	�6�	��f�~��	���F�	��	���G�	��	���G�	��	���G�	��	�v�	��	��"8��� A�B�Br5)a-Dict(path: str | None (Path to a local file), url: str | None (Publicly available url or base64 encoded image), size: int | None (Size of image in bytes), orig_name: str | None (Original filename), mime_type: str | None (mime type of image), is_stream: bool (Can always be set to False), meta: Dict())a-dict(path: str | None (Path to a local file), url: str | None (Publicly available url or base64 encoded image), size: int | None (Size of image in bytes), orig_name: str | None (Original filename), mime_type: str | None (mime type of image), is_stream: bool (Can always be set to False), meta: dict())z`Dict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None)zqDict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool)zDict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool, meta: Dict())zdict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool, meta: dict())z�dict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool, meta: dict(_type: Literal[gradio.FileData]))rc�d�t||jd��}|jtd�S)N�$defs�filepath)�_json_schema_to_python_typerBr
�CURRENT_FILE_DATA_FORMAT)r��type_s  r6�json_schema_to_python_typer��s)��'���
�
�7�0C�D�E��=�=�1�:�>�>r5c
���|ik(ryt|�}|ik(rd|jdi�vryy|dk(r$t�|djd�d��S|dk(ry	|d
k(r	d|d
�d�S|d
k(r7ddj	|d
D�cgc]}dt|�zdz��c}�zdzS|dk(ry|dk(ry|dk(ry|dk(ry|dk(r�|jdg�}d|vr2dj	|dD�cgc]}t|����c}�}d|�d�Sd|vr2dj	|dD�cgc]}t|����c}�}d|�d�St|��}d|�d�S|dk(r�|jdi�}t
|�xsi�ryd �}|j�D�	�cgc]#\}	}|	d!k7r|	�d"t|���||�����%}
}	}d#|vr1|d#}t|t�r	|r|
d$gz
}
n|
d%t|����gz
}
dj	|
�}
d&|
�d'�S|d(vr.d)j	||D�cgc]}t|����c}�}|S|d*k(r%dj	�fd+�||D��}
d,|
�d�}|Std-|����cc}wcc}wcc}wcc}}	wcc}w).z/Convert the json schema into a python type hintrr@�descriptionz str | float | bool | list | dictr�rSr�null�Noner�zLiteral[�]r�z, �'�integerr%�stringr �booleanr*�numberr'�arrayr�prefixItemsztuple[zlist[�object�
propertiesr�c�R�|jd�rd|jd��d�SdS)Nr�z (�)r;r�)�vs r6�get_descz-_json_schema_to_python_type.<locals>.get_desc�s+��34�5�5��3G�R����m�,�-�Q�/�O�R�Or5r��: �additionalPropertieszstr, Anyzstr, zdict(r�)r�r�z | r�c3�6�K�|]}t|�����y�wrs)r�)�.0r�defss  �r6�	<genexpr>z._json_schema_to_python_type.<locals>.<genexpr>�s�����U�}�!�4�Q��=�}���zAll[zCannot parse schema )r�rBr��splitr�r �_is_file_schemarr�r*r�)r�r�r�r�rr�elements�propsr��n�des�additional_propertiesr�r�s `            r6r�r��sH���
��|���V��E���{��V�Z�Z�
�r�2�2�5��	�&��*�4��v��0D�0D�S�0I�"�0M�+N�PT�U�U�	�&���	�'�	��&��/�*�!�,�,�	�&�������v��#O��1�C�#�a�&�L�3�$6��#O�P�P�SV�V�	
�
�)�	��	�(�	��	�)�	��	�(�	��	�'�	��
�
�7�B�'���E�!��y�y�?D�]�?S�T�?S�!�,�Q��5�?S�T��H��H�:�Q�'�'�
�f�
$��y�y�?E�m�?T�U�?T�!�,�Q��5�?T�U��H��H�:�Q�'�'�2�5�$�?�H��8�*�A�&�&�	�(�	��
�
�<��,���6�4�:�2�.��	P�
���
�
�%���1��G�|��c��/��4�8�9�(�1�+��G�%�	�
�"�V�+�$*�+A�$B�!��/��6�;P��
�|�#����7�8M�t�T�U�V�����i�i��n���s�e�1�~��	�$�	$��z�z��PU��W��A�6�q�$�?��W�X����	�'�	��y�y�U�v�e�}�U�U���d�V�1�~�����"6�v�h� ?�@�@��s$P��U��
V��
��"Xs�I3
�,I8�"I=�(J�Jc�<�	t|�S#t$ricYSwxYwrs)�_python_type_to_json_schemarC)�	type_hints r6�python_type_to_json_schemar��s&���*�9�5�5�����	��s�

��c�@�|td�urddiS|turiS|turddiS|turddiS|turddiS|t
urddiS|turdid	�S|turd
id�S|turdd
iS|tus|turd
dd
�S|tus|turddd�St|�}|tur-t|�}t!|�dk(rd|diSdt|�iS|t"us)t%|d�r|j&dk(st|�dk(rft|�}t!|�dk(r2td�|vr%t)d�|D��}t+|�}dddi|giSd|D�cgc]
}t+|���c}iS|tur%t|�}|sd
id�S|d}d
t+|�d�S|turgt|�}|sdd
iSt!|�dk(r|ddurd
t+|d�d�Sd
|D�cgc]
}t+|���c}t!|�t!|�d�S|tus|tur&t|�}|sd
dd
�S|d}d
dt+|�d�S|tur:t|�}|sdid	�S|\}	}
|	turt-d��dt+|
�d	�}|St/j0|�r-t3|t4�r|D�cgc]}|j6��}}d|iSt/j0|�r�t%|d�r�i}
g}t9|�}|j;�D]u\}}t+|�|
|<t%|d �r|j<s�-|j?|��?t%|d!�r|j@|jBr�e|j?|��wd|
d"�}|r||d#<|SiScc}wcc}wcc}w)$z,Convert a Python type hint to a JSON schema.Nr�r�r�r�r�r�r�)r�r�r�)r�rT)r��uniqueItems�byte)r�r�r�r�rr�r0�	UnionType�|�c3�<K�|]}|td�us�|���y�wrs)r�)r��ts  r6r�z._python_type_to_json_schema.<locals>.<genexpr>s����F��A�!�4��:�2E�a��s��r�r�.)r�r��minItems�maxItems)r�r�rz0JSON Schema only supports string keys in objectsr3�	__total__�__dataclass_fields__)r�r��required)"r�rr r%r'r*rr��tuple�set�	frozenset�bytesrkrrrr�r�hasattrr0�nextr�r��inspect�isclass�
issubclassr
rrrr�r�r��default)r��origin�literal_values�types�
other_typer�r�r��	item_type�key_type�
value_type�item�enum_valuesr�r��hints�
field_name�
field_types                  r6r�r��s���D��J�������C���	��C����!�!��C���	�"�"��E����!�!��D���	�"�"��D�� �"�=�=��D���"�-�-��E���� � ��C��9�	�1���5�5��E��Y�)�3� �F�3�3�
�	�
"�F�
���!�)�,���~��!�#��^�A�.�/�/���^�,�-�-�	�%���F�J�'�F�O�O�{�,J��v�;�#����#���u�:��?�t�D�z�U�2��F��F�F�J�0��<�F��v�v�.��7�8�8��%�H�%�Q�5�a�8�%�H�I�I�
��~��	�"���#�b�1�1���G�	��*E�i�*P�Q�Q�
�����#����G�$�$��u�:��?�u�Q�x�3��#�.I�%�PQ�(�.S�T�T��DI�J�E�q�7��:�E�J��E�
��E�
�	
�	
���}��)�+��	�"���#�D�9�9���G�	���0��;�
�	
���~��	�"���$�b�A�A�#���*��3���O�P�P��$?�
�$K�
���
����y�!�j��D�&A�.7�8�i�d�t�z�z�i��8���$�$����y�!�g�i�9J�&K��
����y�)��&+�k�k�m�"�J�
�%@��%L�J�z�"��y�+�.��&�&��O�O�J�/��I�'=�>� �5�5�j�A�I�I����
�+�'4�#�*�=���!)�F�:���
�
�I��KI�� K��:9s�N�$N�0Nc��||�r||�St|t�r,i}|j�D]\}}t|||�||<�|St|tt
f�r'g}|D]}|j
t|||��� |S|S)zk
    Traverse a JSON object and apply a function to each element that satisfies the is_root condition.
    )r�rr�traverser�r�r���json_objr��is_root�new_obj�keyrr�s       r6rrhs����x���H�~��	�H�d�	#���"�.�.�*�J�C��#�E�4��9�G�C�L�+���	�H�t�U�m�	,����D��N�N�8�D�$��8�9�����r5c��\K�||�r||��d{���St|t�r4i}|j�D]\}}t|||��d{���||<�|St|tt
f�r/g}|D]&}|j
t|||��d{�����(|S|S7��7�T7��w)zq
    Traverse a JSON object and apply a async function to each element that satisfies the is_root condition.
    N)r�rr�async_traverser�r�r�rs       r6rr|s������x���(�^�#�#�	�H�d�	#���"�.�.�*�J�C��!/��t�W�!E�E�G�C�L�+���	�H�t�U�m�	,����D��N�N���d�G�!D�D�E������$��F��
E�s4�B,�B&�<B,�B(�AB,�B*
�B,�(B,�*B,c�:�t||jdi��S)Nr�)�_schema_contains_filerB)�api_infos r6�
value_is_filer�s�� ��8�<�<���+D�E�Er5c�N�d|vr |djd�d}||vr||S|S)z!Resolve a $ref to its definition.r�rSr)r��r�r��ref_names   r6�_resolve_refr�s:��
����&�>�'�'��,�R�0���t����>�!��Mr5c�J�|�|jdi�}|jdi�}d|vsd|vryt|d|�}|jdi�}d|vr|d}|jd�dk(S|jd	i�}t|t�r|jd�dk(Sy)
zYCheck if a schema directly represents a file type (has path + meta with gradio.FileData).r�r�r�metaF�_typer��gradio.FileDatar�)rBrr�r)r�r�r�r�
meta_props�type_schema�meta_defaults       r6r�r��s����|��z�z�'�2�&���J�J�|�R�(�E�
�U��f�E�1����f�
�t�,�D����,��+�J��*�� ��)�����w�'�+<�<�<��8�8�I�r�*�L��,��%�����(�,=�=�=�r5c�*��t|t�s%t|t�rt�fd�|D��Syd|vr+|dj	d�d}|�vrt�|��Syt
|��ryt�fd�|j�D��S)zARecursively check if a JSON schema contains a file type anywhere.c3�6�K�|]}t|�����y�wrs)r)r�r�r�s  �r6r�z(_schema_contains_file.<locals>.<genexpr>�s�����L�V�T�,�T�4�8�V�r�Fr�rSrTc3�r�K�|].\}}|dk7r$t|ttf�rt|�����0y�w)r�N)r�rr�r)r��kr�r�s   �r6r�z(_schema_contains_file.<locals>.<genexpr>�s8������"�D�A�q���<�J�q�4��,�7�	�a��&�"�s�47)r�rr��anyr�rr�rrs ` r6rr�s�����f�d�#��f�d�#��L�V�L�L�L��
����&�>�'�'��,�R�0���t��(��h���>�>���v�t�$�����L�L�N���r5c��t|ttf�xr4t|�j�xrt|�j	�S)zp
    Check if the given value is a valid str or Path filepath on the local filesystem, e.g. "path/to/file".
    )r�r r�exists�is_file)�ss r6�is_filepathr%�s5���a�#�t��%�P�$�q�'�.�.�*:�P�t�A�w���?P�Pr5c�X�t|t�xrd|vxrt|dt�S)z�
    Check if the given value is a valid FileData object dictionary in versions of Gradio<=4.20, e.g.
    {
        "path": "path/to/file",
    }
    r)r�rr �r�s r6�is_file_objr(�s*���a���M�6�Q�;�M�:�a��i��3M�Mr5c��t|t�xr9d|vxr3t|dt�xrd|vxr|djdd�dk(S)z�
    Check if the given value is a valid FileData object dictionary in newer versions of Gradio
    where the file objects include a specific "meta" key, e.g.
    {
        "path": "path/to/file",
        "meta": {"_type: "gradio.FileData"}
    }
    rrrr;r)r�rr rBr's r6�is_file_obj_with_metar*�s_��	�1�d��	<��a�K�	<��q��y�#�&�	<�
�a�K�	<�
�f�I�M�M�'�2�&�*;�;�r5c�N�t|�xrd|vxrt|dt�S)a>
    Check if the given value is a valid FileData object dictionary in newer versions of Gradio
    where the file objects include a specific "meta" key, and ALSO include a "url" key, e.g.
    {
        "path": "path/to/file",
        "url": "/file=path/to/file",
        "meta": {"_type: "gradio.FileData"}
    }
    rf)r*r�r r's r6�is_file_obj_with_urlr,�s(��!��#�P���
�P�z�!�E�(�C�7P�Pr5>
�box�row�tab�form�tabs�groupr�column�dataset�sidebar�tabitem�	accordion�interpretationc���t|�}|ddid�}t|�ri|�|jdd��d|d��St|�j	�ri|�d	t|�j
i�St
d
|�d���)Nrr)rrrSr�)�maxsplitr)�	orig_namerfr;zFile z; does not exist on local filesystem and is not a valid URL.)r r�rrrr"r'r�)�filepath_or_urlr$r�s   r6�handle_filer=s����O��A���):�;�<�D����M�$�M�Q�X�X�c�A�X�%>�r�%B�1�M�M�	
�a����	�2�$�2��T�!�W�\�\�2�2���A�3�Q�R�
�	
r5c�B�tjd�t|�S)NzXfile() is deprecated and will be removed in a future version. Use handle_file() instead.)r�r�r=)r<s r6rRrRs���M�M�b����'�'r5c���Gd�dt�}t|�}|�|rtd��|St|�}||jgt|�|z
zz}i}g}t|�D]t\}}	d|	vr|||	d<|j
|	d�n|j
d|���|	jdd�s�N|||jk(s�a|	jd�||<�v|j�D]7\}
}|
|vr ||
|krtd	|
�d
���||||
<�*td	|
�d���|j|vr*td||j|j�����|S)
Nc��eZdZdZy)�!construct_args.<locals>._Keywords�NO_VALUEN)r0r1r2rBr4r5r6�	_KeywordsrAs���r5rCzzThis endpoint does not support key-word arguments Please click on 'view API' in the footer of the Gradio app to see usage.�parameter_namez	argument �parameter_has_defaultF�parameter_defaultzParameter `zs` is already set as a positional argument. Please click on 'view API' in the footer of the Gradio app to see usage.zl` is not a valid key-word argument. Please click on 'view API' in the footer of the Gradio app to see usage.z)No value provided for required argument: )r
r�r�r�rBr�r�rBr�	TypeErrorrn)�parameters_infor�r�rC�_args�num_args�kwarg_arg_mapping�kwarg_namesrn�
param_infor
rs            r6�construct_argsrNs����D��
��J�E�����M��
����4�y�H��Y�'�'�(�C��,@�8�,K�L�L�E����K�&��7���z��z�)�>C��j�)9�:�;����z�*:�;�<�����5�'�2�3��N�N�2�E�:��e��	� 2� 2�2�%�>�>�*=�>�E�%�L�8��l�l�n�
��U��#�#� ��%��0��!�#��'Z�[���16��'��,�-���c�U�#O�P��
�%����U�"��7��E�K�K�PY�Pb�Pb�Dc�8d�7e�f�
�	
��Lr5c
��|jdk(r�|j�jdg�}g}t|�D]k\}}|jdd�dk(s�|jd�dus�0|jdd	|���}|j	d
|�d|jdd�����m|jd
t
|��d��|rdj|�Syy)z�
    If the request is a 422 error and the detail contains a validation error message, return the message. Otherwise, return None.
    i��detail�__type__r;�validate�is_validFrD�
parameter_z- r��messagerz  parameter(s) failed validation:r�N)r�r@rBr�r�rr�r�)r�rP�validation_messagesrn�
error_info�
param_names      r6�extract_validation_messagerYOs������#���������"�-�� ��!*�6�!2��E�:����z�2�.�*�<��N�N�:�.�%�7�'�^�^�,<�
�5�'�>R�S�
�#�*�*����B�z�~�~�i��'D�&E�F��
"3�	�"�"�
�#�)�*�+�+K�L�	
���9�9�0�1�1��r5)ryr )ryr*)r�r ryr*)r��httpx.Clientr�rr�rr�r�r�r r�r r��dict[str, str]r�r�r�r*r��%concurrent.futures.ThreadPoolExecutorry�dict[str, Any] | None)r�r�r�r[r�r�r�� dict[str, deque[Message | None]]r$r r�z'Literal['sse_v1', 'sse_v2', 'sse_v2.1']r�r*r�r\ryr])r�r�r�r[r�r�r�r*)r�rZr�rr�rr�r�r�r r�r r�r[r�r�ryr")
r�r�r�r^r$r r�z1Literal['sse_v1', 'sse_v2', 'sse_v2.1', 'sse_v3']ryr"rs)r+r r,rryr )NN)r;r r<rr,rryr )rGr ryr)rNr ryr)r+r rVz	list[str]ryr*)r=�
str | Path)rfr )rr_)rNr ryztuple[bytes, str | None])��)rGr rzr%ryr )r�r ryr )NNN)rNr r+rr,�str | Path | Noner�r)r�zstr | dict | listr,ra)r+r_ryzdict | list)Ni,)r�r r<rr�r%)r�rryr)r�r)r�rryr )r�rryr)rrr�rr�Callable[..., bool]ryr)rrr�z'Callable[..., Coroutine[Any, Any, Any]]rrbryr)rrryr*)r�rr�rryr)r�rr�zdict | Noneryr*)r�rryr*)r<r_)rHzlist[ParameterInfo] | Noner�r�r�rryr�)r�zhttpx.Responseryr)��
__future__rr�r^�concurrent.futuresr�rr�r@rEr6r<�rer$r(r"r�r��collectionsr�collections.abcrr�dataclassesrrr	r�r
�pathlibr�	threadingr�typingr
rrrrrrrr�fsspec.asynr�r�r�r�gradio_client.data_classesr�API_URL�
SSE_URL_V0�SSE_DATA_URL_V0�SSE_URL�SSE_DATA_URL�WS_URL�
UPLOAD_URL�	LOGIN_URL�
CONFIG_URL�API_INFO_URL�RAW_API_INFO_URL�SPACE_FETCHER_URL�	RESET_URLr��
HEARTBEAT_URL�
CANCEL_URL�STATE_COMPONENT�NO_APP_FILE�CONFIG_ERROR�BUILD_ERROR�
RUNTIME_ERROR�PAUSED�INVALID_RUNTIME�compilerwrrFr�rCrHrLrNrPr rRrar|r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr/r?rJrPrZrcrgrirortr}r�r�r�r�r�r�r�r�r��FILE_DATA_FORMATSr�r�r�r�r�rrrrr�rr%r(r*r,�SKIP_COMPONENTSr=rRrNrYr4r5r6�<module>r�s]��"��
������	��	��
�����/�(�����
�
�
����&��8�
��
�
���
����	��
�
��	�
�
�(��)��F���	�!�	�*�
�
�
����������������������
�
�<�=�
�
�i�u�
�	�"�#��	�9�	�	��	�	�i�	�	�I�	�,�C��,�"1�T�1�h�
�
��
�*�1�1��1������
��<�,�6�	7��	��5�5��5��J�J��J�&<��F�$��$�
�$��$�
�	$�
�$��
$��$�#�$��$�4�$��$�N���
��#��!A�	�
��6�
���4����@.��.�
�.�#�.��	.�0C��C�
�C��C�
�	C�
�C��
C��C�#�C��C�LU��U� @�U��U�@�	U�
�U�p'�^�@D�$��$�$�$�2<�$��$�*	�
��

��'��-��>�!�!��	 �� �� �
� �
�	 �F���!��������8
K� 	�
�	�C�*��-�R�0��?�
KA�\�p�f�(���
1��!��	�	�0F���$�(Q�N��$
Q���"

�(�0�/�0�7<�0�FJ�0�	�0�f2r5