
    i/                        d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ  G d de	e          Z
 G d d	e	e          Z G d
 de	e          Ze G d d                      Ze G d d                      Ze G d d                      Ze G d d                      Ze G d d                      Ze G d d                      ZdS )    )	dataclass)datetime)Enum)Literal)parse_datetimec                   B    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdS )
SpaceStagea  
    Enumeration of possible stage of a Space on the Hub.

    Value can be compared to a string:
    ```py
    assert SpaceStage.BUILDING == "BUILDING"
    ```

    Taken from https://github.com/huggingface/moon-landing/blob/main/server/repo_types/SpaceInfo.ts#L61 (private url).
    NO_APP_FILECONFIG_ERRORBUILDINGBUILD_ERRORRUNNINGRUNNING_BUILDINGRUNTIME_ERRORDELETINGSTOPPEDPAUSEDAPP_STARTINGRUNNING_APP_STARTINGN)__name__
__module____qualname____doc__r
   r   r   r   r   r   r   r   r   r   r   r        [/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/huggingface_hub/_space_api.pyr	   r	      sZ        	 	  K!LHKG)#MHGF!L1r   r	   c                   v    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS )SpaceHardwarea=  
    Enumeration of hardwares available to run your Space on the Hub.

    Value can be compared to a string:
    ```py
    assert SpaceHardware.CPU_BASIC == "cpu-basic"
    ```

    Taken from https://github.com/huggingface-internal/moon-landing/blob/main/server/repo_types/SpaceHardwareFlavor.ts (private url).
    z	cpu-basiczcpu-upgradezcpu-performancezcpu-xlsprx8z	zero-a10gzt4-smallz	t4-mediuml4x1l4x4l40sx1l40sx4l40sx8z
a10g-smallz
a10g-largeza10g-largex2za10g-largex4z
a100-largea100x4a100x8h200h200x2h200x4h200x8inf2x6N)r   r   r   r   	CPU_BASICCPU_UPGRADECPU_PERFORMANCECPU_XLSPRX8	ZERO_A10GT4_SMALL	T4_MEDIUML4X1L4X4L40SX1L40SX4L40SX8
A10G_SMALL
A10G_LARGEA10G_LARGEX2A10G_LARGEX4
A100_LARGEA100X4A100X8H200H200X2H200X4H200X8INF2X6r   r   r   r   r   1   s        	 	 IK'OFE I HIDDFFFJJ!L!LJFFDFFF FFFr   r   c                       e Zd ZdZdZdZdZdS )SpaceStoragea5  
    Enumeration of persistent storage available for your Space on the Hub.

    Value can be compared to a string:
    ```py
    assert SpaceStorage.SMALL == "small"
    ```

    Taken from https://github.com/huggingface/moon-landing/blob/main/server/repo_types/SpaceHardwareFlavor.ts#L24 (private url).
    smallmediumlargeN)r   r   r   r   SMALLMEDIUMLARGEr   r   r   rF   rF   _   s)        	 	 EFEEEr   rF   c                       e Zd ZU dZed         ed<   eed<   eed<   dZedz  ed<   dZe	dz  ed<   dZ
edz  ed	<   ddZd
efdZd
efdZdS )Volumea  
    Describes a volume to mount in a Space or Job container.

    Args:
        type (`str`):
            Type of volume: `"bucket"`, `"model"`, `"dataset"`, or `"space"`.
        source (`str`):
            Source identifier, e.g. `"username/my-bucket"` or `"username/my-model"`.
        mount_path (`str`):
            Mount path inside the container, e.g. `"/data"`. Must start with `/`.
        revision (`str` or `None`):
            Git revision (only for repos, defaults to `"main"`).
        read_only (`bool` or `None`):
            Read-only mount. Forced `True` for repos, defaults to `False` for buckets.
        path (`str` or `None`):
            Subfolder prefix inside the bucket/repo to mount, e.g. `"path/to/dir"`.
    )bucketmodeldatasetspacetypesource
mount_pathNrevision	read_onlypathreturnc                 p   |                     dd          | _        |d         | _        |                     d          }||n|d         | _        |                     d          | _        |                     d          }||n|                     d          | _        |                     d	          | _        d S )
NrS   rP   rT   	mountPathrU   rV   readOnlyrW   rX   )getrS   rT   rU   rV   rW   rX   )selfkwargsrU   rW   s       r   __init__zVolume.__init__   s    JJvw//	X&ZZ,,
(2(>**F<DX

:..JJz**	&/&;KAXAXJJv&&			r   c                     | j         | j        | j        d}| j        
| j        |d<   | j        
| j        |d<   | j        
| j        |d<   |S )z6Serialize to the JSON payload expected by the Hub API.)rS   rT   r[   NrV   r\   rX   )rS   rT   rU   rV   rW   rX   r^   datas     r   to_dictzVolume.to_dict   sa     Ik
 

 =$#}D>%#~D9 9DLr   c           	          | j         r
d| j          nd}| j        r
d| j         nd}dddd                    | j        d          }d| j         d| j         | | d	| j         | 	S )
zDReturn the volume as an HF handle in the format expected by the CLI./ @z:roz:rw)TFNzhf://zs/:)rX   rV   r]   rW   rS   rT   rU   )r^   rX   rV   ros       r   to_hf_handlezVolume.to_hf_handle   s    "&)349*.-?&t}&&&R%r2266t~rJJWtyWWDKWW4WW$/WSUWWWr   )rY   N)r   r   r   r   r   __annotations__strrV   rW   boolrX   r`   dictrd   rk   r   r   r   rN   rN   p   s          $ 7
8888KKKOOOHcDj!Itd{!!!D#*' ' ' '    Xc X X X X X Xr   rN   c                   l    e Zd ZU ed         ed<   eeeedz  f                  ed<   eed<   deddfdZ	dS )	SpaceHotReloading)createdcanceledstatusNreplica_statusesrawrc   rY   c                 H    |d         | _         |d         | _        || _        d S )Nrt   replicaStatuses)rt   ru   rv   rb   s     r   r`   zSpaceHotReloading.__init__   s&    8n $%6 7r   )
r   r   r   r   rl   listtuplerm   ro   r`   r   r   r   rq   rq      sq         )****5cDj12222	IIIT d      r   rq   c                       e Zd ZU dZeed<   edz  ed<   edz  ed<   edz  ed<   edz  ed<   e	dz  ed<   e
e         dz  ed	<   eed
<   deddfdZdS )SpaceRuntimea  
    Contains information about the current runtime of a Space.

    Args:
        stage (`str`):
            Current stage of the space. Example: RUNNING.
        hardware (`str` or `None`):
            Current hardware of the space. Example: "cpu-basic". Can be `None` if Space
            is `BUILDING` for the first time.
        requested_hardware (`str` or `None`):
            Requested hardware. Can be different from `hardware` especially if the request
            has just been made. Example: "t4-medium". Can be `None` if no hardware has
            been requested yet.
        sleep_time (`int` or `None`):
            Number of seconds the Space will be kept alive after the last request. By default (if value is `None`), the
            Space will never go to sleep if it's running on an upgraded hardware, while it will go to sleep after 48
            hours on a free 'cpu-basic' hardware. For more details, see https://huggingface.co/docs/hub/spaces-gpus#sleep-time.
        volumes (`list[Volume]` or `None`):
            List of volumes mounted in the Space. Each volume is a [`Volume`] object describing its type, source,
            mount path, and optional settings. `None` if no volumes are attached.
        raw (`dict`):
            Raw response from the server. Contains more information about the Space
            runtime like number of replicas, number of cpu, memory size,...
    stageNhardwarerequested_hardware
sleep_timestoragehot_reloadingvolumesrv   rc   rY   c                    |d         | _         |                    di                               d          | _        |                    di                               d          | _        |                    d          | _        |                    d          | _        |                    d          x}t          |          nd | _        |                    d          }|d	 |D             nd | _        || _	        d S )
Nr}   r~   current	requested	gcTimeoutr   hotReloadingr   c                 &    g | ]}t          d i |S )r   )rN   ).0vs     r   
<listcomp>z)SpaceRuntime.__init__.<locals>.<listcomp>   s"    999999r   )
r}   r]   r~   r   r   r   rq   r   r   rv   )r^   rc   raw_hrraw_volumess       r   r`   zSpaceRuntime.__init__   s    ']
R0044Y??"&((:r":":">">{"K"K((;//xx	**EIXXnE]E];]6:j.v666pthhy))=H=T99[9999Z^r   )r   r   r   r   r	   rl   r   intrF   rq   ry   rN   ro   r`   r   r   r   r|   r|      s          2 d""""%,,,,d
D    $t++++&\D    	III	T 	d 	 	 	 	 	 	r   r|   c                   R    e Zd ZU dZeed<   edz  ed<   edz  ed<   dededdfdZdS )	SpaceSecreta&  
    Contains information about a secret of a Space.

    Secret values are write-only and cannot be read back. Only the key, description,
    and last update time are returned by the API.

    Args:
        key (`str`):
            Secret key. Example: `"GITHUB_API_KEY"`
        description (`str` or None):
            Description of the secret. Example: `"Github API key to access the Github API"`.
        updated_at (`datetime` or None):
            datetime of the last update of the secret (if the secret has been updated at least once).
    keyNdescription
updated_atvaluesrY   c                     || _         |                    d          | _        |                    d          }|t          |          nd | _        d S )Nr   	updatedAt)r   r]   r   r   r   r^   r   r   r   s       r   r`   zSpaceSecret.__init__   sL    !::m44ZZ,,
8B8N.444TXr   	r   r   r   r   rm   rl   r   ro   r`   r   r   r   r   r      s}           
HHHt4YC Y Y$ Y Y Y Y Y Yr   r   c                   \    e Zd ZU dZeed<   eed<   edz  ed<   edz  ed<   dededdfd	ZdS )
SpaceVariablea  
    Contains information about the current variables of a Space.

    Args:
        key (`str`):
            Variable key. Example: `"MODEL_REPO_ID"`
        value (`str`):
            Variable value. Example: `"the_model_repo_id"`.
        description (`str` or None):
            Description of the variable. Example: `"Model Repo ID of the implemented model"`.
        updatedAt (`datetime` or None):
            datetime of the last update of the variable (if the variable has been updated at least once).
    r   valueNr   r   r   rY   c                     || _         |d         | _        |                    d          | _        |                    d          }|t	          |          nd | _        d S )Nr   r   r   )r   r   r]   r   r   r   r   s       r   r`   zSpaceVariable.__init__  sW    G_
!::m44ZZ,,
8B8N.444TXr   r   r   r   r   r   r     s           
HHHJJJt4YC Y Y$ Y Y Y Y Y Yr   r   c                       e Zd ZU dZeed<   eed<   eed<   edz  ed<   edz  ed<   eed<   eed	<   ee         dz  ed
<   e	dz  ed<   edz  ed<   edz  ed<   e
dz  ed<   edz  ed<   deddfdZdS )SpaceSearchResulta  A single result from the Spaces semantic search API.

    Returned by [`HfApi.search_spaces`].

    Attributes:
        id (`str`):
            ID of the Space (e.g. `"username/repo-name"`).
        author (`str`):
            Author of the Space.
        title (`str`):
            Display title of the Space.
        emoji (`str` or `None`):
            Emoji icon of the Space.
        sdk (`str` or `None`):
            SDK used by the Space (e.g. `"gradio"`, `"docker"`, `"static"`).
        likes (`int`):
            Number of likes.
        private (`bool`):
            Whether the Space is private.
        tags (`list[str]` or `None`):
            List of tags.
        runtime ([`SpaceRuntime`] or `None`):
            Runtime information (stage, hardware, etc.).
        ai_short_description (`str` or `None`):
            AI-generated short description.
        ai_category (`str` or `None`):
            AI-generated category (e.g. `"Image Generation"`).
        semantic_relevancy_score (`float` or `None`):
            Semantic relevancy score (0-1) relative to the search query.
        trending_score (`int` or `None`):
            Trending score.
    idauthortitleNemojisdklikesprivatetagsruntimeai_short_descriptionai_categorysemantic_relevancy_scoretrending_scorerc   rY   c                    |                     d          }|d         | _        |                     dd          | _        |                     dd          | _        |                     d          | _        |                     d          | _        |                     dd	          | _        |                     d
d          | _        |                     d          | _        |rt          |          nd | _
        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        d S )Nr   r   r   rg   r   r   r   r   r   r   Fr   r   r   semanticRelevancyScoretrendingScore)r]   r   r   r   r   r   r   r   r   r|   r   r   r   r   r   )r^   rc   r   s      r   r`   zSpaceSearchResult.__init__R  s   ((9%%t*hhx,,XXgr**
XXg&&
88E??XXgq))
xx	511HHV$$	07A|G,,,T$(HH-C$D$D!88M22(,1I(J(J%"hh77r   )r   r   r   r   rm   rl   r   rn   ry   r|   floatro   r`   r   r   r   r   r   !  s          B 	GGGKKKJJJ:	tOOOJJJMMM
s)d
D    *$$$t#dl***$J8T 8d 8 8 8 8 8 8r   r   N)dataclassesr   r   enumr   typingr   huggingface_hub.utilsr   rm   r	   r   rF   rN   rq   r|   r   r   r   r   r   r   <module>r      sB   " ! ! ! ! !                   0 0 0 0 0 02 2 2 2 2d 2 2 26+ + + + +C + + +\    3   " 8X 8X 8X 8X 8X 8X 8X 8Xv         , , , , , , , ,^ Y Y Y Y Y Y Y Y6 Y Y Y Y Y Y Y Y8 >8 >8 >8 >8 >8 >8 >8 >8 >8 >8r   