
    -:jz0                     T   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m	Z	m
Z
  G d dee      Zej                  ej                  ej                  ej                   fZej$                  ej&                  ej(                  ej*                  ej,                  ej.                  ej0                  ej2                  f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"y)    )	dataclass)datetime)Enum)Literal)HfMountHfUriparse_datetimec                   @    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y)
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        \/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/huggingface_hub/_space_api.pyr   r      sG    	  K!LHKG)#MHGF!L1r   r   c                   T    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y)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	zero-a10gzt4-smallz	t4-mediuml4x1l4x4l40sx1l40sx4l40sx8z
a10g-smallz
a10g-largeza10g-largex2za10g-largex4z
a100-largea100x4a100x8N)r   r   r   r   	CPU_BASICCPU_UPGRADE	ZERO_A10GT4_SMALL	T4_MEDIUML4X1L4X4L40SX1L40SX4L40SX8
A10G_SMALL
A10G_LARGEA10G_LARGEX2A10G_LARGEX4
A100_LARGEA100X4A100X8r   r   r   r    r    D   sb    	 IK I HIDDFFFJJ!L!LJFFr   r    c                       e Zd ZdZdZdZdZy)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   r:   r:   h   s    	 EFEr   r:   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y)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                 2   |j                  dd      | _        |d   | _        |j                  d      }||n|d   | _        |j                  d      | _        |j                  d      }||n|j                  d      | _        |j                  d	      | _        y )
NrG   rD   rH   	mountPathrI   rJ   readOnlyrK   rL   )getrG   rH   rI   rJ   rK   rL   )selfkwargsrI   rK   s       r   __init__zVolume.__init__   s    JJvw/	X&ZZ,
(2(>*F<DX

:.JJz*	&/&;KAX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.)rG   rH   rO   rJ   rP   rL   )rG   rH   rI   rJ   rK   rL   rR   datas     r   to_dictzVolume.to_dict   sn     IIkk

 ==$#}}D>>%#~~D99 99DLr   c           	          t        t        | j                  | j                  | j                  | j
                  xs d      | j                  | j                        j                         S )zGReturn the volume as an HF mount URI in the format expected by the CLI. )rG   idrJ   path_in_repo)rH   rI   rK   )	r   r   rG   rH   rJ   rL   rI   rK   to_uri)rR   s    r   r]   zVolume.to_uri   sM    diiDKK$--^b^g^g^mkmnnn
 &(		r   )rM   N)r   r   r   r   r   __annotations__strrJ   rK   boolrL   rT   dictrX   r]   r   r   r   rB   rB   y   sf    $ 7
88KOHcDj!Itd{!D#*'  r   rB   c                   X    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	y)	SpaceHotReloading)createdcanceledstatusNreplica_statusesrawrW   rM   c                 :    |d   | _         |d   | _        || _        y )Nrf   replicaStatuses)rf   rg   rh   rV   s     r   rT   zSpaceHotReloading.__init__   s"    8n $%6 7r   )
r   r   r   r   r^   listtupler_   ra   rT   r   r   r   rc   rc      s>    )**5cDj122	IT d r   rc   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	ed<   e
dz  ed	<   ee   dz  ed
<   eed<   deddfdZy)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dev_modehot_reloadingvolumesrh   rW   rM   c                    |d   | _         |j                  di       j                  d      | _        |j                  di       j                  d      | _        |j                  d      | _        |j                  d      | _        |j                  dd      | _        |j                  d	      x}t        |      nd | _        |j                  d
      }||D cg c]  }t        di | c}nd | _
        || _        y c c}w )Nro   rp   current	requested	gcTimeoutrs   devModeFhotReloadingrv   r   )ro   rQ   rp   rq   rr   rs   rt   rc   ru   rB   rv   rh   )rR   rW   raw_hrraw_volumesvs        r   rT   zSpaceRuntime.__init__   s    ']
R044Y?"&((:r":">">{"K((;/xx	*E2EIXXnE];]6:j.v6pthhy)=H=T[99Z^ :s   C:)r   r   r   r   r   r^   r    intr:   r`   rc   rk   rB   ra   rT   r   r   r   rn   rn      sq    2 d""%,,d
D  N$t++&\D  	I
T 
d 
r   rn   c                   P    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y)	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valuesrM   c                     || _         |j                  d      | _        |j                  d      }|t        |      | _        y d | _        y )Nr   	updatedAt)r   rQ   r   r	   r   rR   r   r   r   s       r   rT   zSpaceSecret.__init__	  s@    !::m4ZZ,
8B8N.4TXr   	r   r   r   r   r_   r^   r   ra   rT   r   r   r   r   r      s@     
Ht4YC Y Y$ Yr   r   c                   Z    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y)
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   rM   c                     || _         |d   | _        |j                  d      | _        |j                  d      }|t	        |      | _        y d | _        y )Nr   r   r   )r   r   rQ   r   r	   r   r   s       r   rT   zSpaceVariable.__init__%  sK    G_
!::m4ZZ,
8B8N.4TXr   r   r   r   r   r   r     sE     
HJt4YC 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y)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.
    r[   authortitleNemojisdklikesprivatetagsruntimeai_short_descriptionai_categorysemantic_relevancy_scoretrending_scorerW   rM   c                 N   |j                  d      }|d   | _        |j                  dd      | _        |j                  dd      | _        |j                  d      | _        |j                  d      | _        |j                  dd	      | _        |j                  d
d      | _        |j                  d      | _        |rt        |      nd | _
        |j                  d      | _        |j                  d      | _        |j                  d      | _        |j                  d      | _        y )Nr   r[   r   rZ   r   r   r   r   r   r   Fr   r   r   semanticRelevancyScoretrendingScore)rQ   r[   r   r   r   r   r   r   r   rn   r   r   r   r   r   )rR   rW   r   s      r   rT   zSpaceSearchResult.__init__^  s    ((9%t*hhx,XXgr*
XXg&
88E?XXgq)
xx	51HHV$	07|G,T$(HH-C$D!88M2(,1I(J%"hh7r   )r   r   r   r   r_   r^   r   r`   rk   rn   floatra   rT   r   r   r   r   r   -  s    B 	GKJ:	tOJM
s)d
D  *$t#dl*$J8T 8d 8r   r   N)#dataclassesr   r   enumr   typingr   huggingface_hub.utilsr   r   r	   r_   r   r   r   r   r   INTERMEDIATE_SPACE_STAGESr   r   r   r   r   r   r   r   TERMINAL_SPACE_STAGESr    r:   rB   rc   rn   r   r   r   r   r   r   <module>r      sb   "    @ @2d 28 ##	  	 !C !H3 " 9 9 9x    . . .b Y Y Y6 Y Y Y8 >8 >8 >8r   