o
    0i}                     @   s   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 de
eZG dd	 d	e
eZG d
d de
eZeG dd dZeG dd dZeG dd dZdS )    )	dataclass)datetime)Enum)LiteralOptional)parse_datetimec                   @   s@   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    r   r   T/home/kim/smarthome/.venv/lib/python3.10/site-packages/huggingface_hub/_space_api.pyr      s    r   c                   @   st   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-xlZsprx8z	zero-a10gzt4-smallz	t4-mediumZl4x1Zl4x4Zl40sx1Zl40sx4Zl40sx8z
a10g-smallz
a10g-largeza10g-largex2za10g-largex4z
a100-largeZa100x4Za100x8Zh200Zh200x2Zh200x4Zh200x8Zinf2x6N)r   r   r   r   Z	CPU_BASICZCPU_UPGRADEZCPU_PERFORMANCEZCPU_XLZSPRX8Z	ZERO_A10GZT4_SMALLZ	T4_MEDIUMZL4X1ZL4X4ZL40SX1ZL40SX4ZL40SX8Z
A10G_SMALLZ
A10G_LARGEZA10G_LARGEX2ZA10G_LARGEX4Z
A100_LARGEZA100X4ZA100X8ZH200ZH200X2ZH200X4ZH200X8ZINF2X6r   r   r   r   r   2   s6    r   c                   @   s   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).
    ZsmallZmediumZlargeN)r   r   r   r   ZSMALLZMEDIUMZLARGEr   r   r   r   r   `   s
    r   c                   @   sH   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d	Z	dS )
SpaceHotReloading)createdcanceledstatusreplica_statusesrawdatareturnNc                 C   s   |d | _ |d | _|| _d S )Nr    ZreplicaStatuses)r    r!   r"   )selfr#   r   r   r   __init__w   s   


zSpaceHotReloading.__init__)
r   r   r   r   __annotations__listtuplestrdictr&   r   r   r   r   r   q   s
   
 r   c                   @   sp   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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_reloadingr"   r#   r$   Nc                 C   st   |d | _ |di d| _|di d| _|d| _|d| _|d }d ur2t|nd | _|| _d S )Nr-   r.   current	requestedZ	gcTimeoutr1   ZhotReloading)	r-   getr.   r/   r0   r1   r   r2   r"   )r%   r#   Zraw_hrr   r   r   r&      s   
 
zSpaceRuntime.__init__)r   r   r   r   r   r'   r   r   intr   r   r+   r&   r   r   r   r   r,   }   s   
 r,   c                   @   sP   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	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valuesr$   Nc                 C   sF   || _ |d | _|d| _|d}|d urt|| _d S d | _d S )Nr9   r:   Z	updatedAt)r8   r9   r5   r:   r   r;   )r%   r8   r<   r;   r   r   r   r&      s
   

 zSpaceVariable.__init__)
r   r   r   r   r*   r'   r   r   r+   r&   r   r   r   r   r7      s   
 r7   N)dataclassesr   r   enumr   typingr   r   Zhuggingface_hub.utilsr   r*   r   r   r   r   r,   r7   r   r   r   r   <module>   s   .)