o
    ½e¦iu  ã                   @   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                   @   s8   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   © r   r   úX/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/huggingface_hub/_space_api.pyr      s    r   c                   @   sX   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   s(    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).
    ÚsmallÚmediumÚlargeN)r   r   r   r   ÚSMALLÚMEDIUMÚLARGEr   r   r   r   r3   U   s
    r3   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=   ÚreplicaStatuses)r=   r>   r?   )Úselfr@   r   r   r   Ú__init__l   s   


zSpaceHotReloading.__init__)
r   r   r   r   Ú__annotations__ÚlistÚtupleÚstrÚdictrD   r   r   r   r   r:   f   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@   rA   Nc                 C   st   |d | _ | di ¡ d¡| _| di ¡ d¡| _| d¡| _| d¡| _| d¡ }d ur2t|ƒnd | _|| _d S )NrK   rL   ÚcurrentÚ	requestedÚ	gcTimeoutrO   ÚhotReloading)	rK   ÚgetrL   rM   rN   rO   r:   rP   r?   )rC   r@   Úraw_hrr   r   r   rD   ’   s   
 
zSpaceRuntime.__init__)r   r   r   r   r   rE   r   r   Úintr3   r:   rI   rD   r   r   r   r   rJ   r   s   
 rJ   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ÚvaluesrA   Nc                 C   sF   || _ |d | _| d¡| _| d¡}|d urt|ƒ| _d S d | _d S )NrZ   r[   Ú	updatedAt)rY   rZ   rU   r[   r   r\   )rC   rY   r]   r\   r   r   r   rD   ±   s
   

 zSpaceVariable.__init__)
r   r   r   r   rH   rE   r   r   rI   rD   r   r   r   r   rX   œ   s   
 rX   N)Údataclassesr   r   Úenumr   Útypingr   r   Úhuggingface_hub.utilsr   rH   r   r   r3   r:   rJ   rX   r   r   r   r   Ú<module>   s   %)