
    Ziu                        d dl mZ d dlmZ d dlmZ d dlmZ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dS )    )	dataclass)datetime)Enum)LiteralOptional)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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PAUSEDN)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r        U/root/projects/butler/venv/lib/python3.11/site-packages/huggingface_hub/_space_api.pyr
   r
      sM        	 	  K!LHKG)#MHGFFFr   r
   c                   Z    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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-xlz	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CPU_XL	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   0   sx        	 	 IKF I HIDDFFFJJ!L!LJ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   r8   r8   U   s)        	 	 EFEEEr   r8   c                   f    e Zd ZU ed         ed<   eeeef                  ed<   eed<   deddfdZ	dS )	SpaceHotReloading)createdcanceledstatusreplica_statusesrawdatareturnNc                 H    |d         | _         |d         | _        || _        d S )NrC   replicaStatuses)rC   rD   rE   )selfrF   s     r   __init__zSpaceHotReloading.__init__l   s&    8n $%6 7r   )
r   r   r   r   __annotations__listtuplestrdictrK   r   r   r   r@   r@   f   sl         )****5c?++++	IIIT d      r   r@   c                       e Zd ZU dZeed<   ee         ed<   ee         ed<   ee         ed<   ee	         ed<   ee
         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.
        raw (`dict`):
            Raw response from the server. Contains more information about the Space
            runtime like number of replicas, number of cpu, memory size,...
    stagehardwarerequested_hardware
sleep_timestoragehot_reloadingrE   rF   rG   Nc                    |d         | _         |                    di                               d          | _        |                    di                               d          | _        |                    d          | _        |                    d          | _        |                    d          x}t          |          nd | _        || _        d S )NrS   rT   current	requested	gcTimeoutrW   hotReloading)	rS   getrT   rU   rV   rW   r@   rX   rE   )rJ   rF   raw_hrs      r   rK   zSpaceRuntime.__init__   s    ']
R0044Y??"&((:r":":">">{"K"K((;//xx	**EIXXnE]E];]6:j.v666ptr   )r   r   r   r   r
   rL   r   r   intr8   r@   rP   rK   r   r   r   rR   rR   r   s          , }%%%% ////l####-....	IIIT d      r   rR   c                   h    e Zd ZU dZeed<   eed<   ee         ed<   ee         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).
    keyvaluedescription
updated_atvaluesrG   Nc                     || _         |d         | _        |                    d          | _        |                    d          }|t	          |          nd | _        d S )Nrd   re   	updatedAt)rc   rd   r^   re   r   rf   )rJ   rc   rg   rf   s       r   rK   zSpaceVariable.__init__   sW    G_
!::m44ZZ,,
8B8N.444TXr   )
r   r   r   r   rO   rL   r   r   rP   rK   r   r   r   rb   rb      s           
HHHJJJ#""""YC Y Y$ Y Y Y Y Y Yr   rb   N)dataclassesr   r   enumr   typingr   r   huggingface_hub.utilsr   rO   r
   r   r8   r@   rR   rb   r   r   r   <module>rn      s   " ! ! ! ! !             $ $ $ $ $ $ $ $ 0 0 0 0 0 0    d   2" " " " "C " " "J    3   "         & & & & & & & &R Y Y Y Y Y Y Y Y Y Yr   