a
    h                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZ d dlm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)AnyDictListOptional)	constants)SpaceHardware)parse_datetimec                   @   s$   e Zd ZdZdZdZdZdZdZdS )JobStagea  
    Enumeration of possible stage of a Job on the Hub.

    Value can be compared to a string:
    ```py
    assert JobStage.COMPLETED == "COMPLETED"
    ```

    Taken from https://github.com/huggingface/moon-landing/blob/main/server/job_types/JobInfo.ts#L61 (private url).
    	COMPLETEDCANCELEDERRORDELETEDRUNNINGN)	__name__
__module____qualname____doc__r   r   r   r   r    r   r   U/var/www/html/assistant/venv/lib/python3.9/site-packages/huggingface_hub/_jobs_api.pyr      s   r   c                   @   s"   e Zd ZU eed< ee ed< dS )	JobStatusstagemessageN)r   r   r   r   __annotations__r   strr   r   r   r   r   -   s   
r   c                   @   s&   e Zd ZU eed< eed< eed< dS )JobOwneridnametypeN)r   r   r   r   r   r   r   r   r   r   3   s   
r   c                   @   s   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  ed< eee  ed< ee	ee
f  ed< ee	ee
f  ed	< ee ed
< eed< eed< eed< eed< ddddZdS )JobInfoa'	  
    Contains information about a Job.

    Args:
        id (`str`):
            Job ID.
        created_at (`datetime` or `None`):
            When the Job was created.
        docker_image (`str` or `None`):
            The Docker image from Docker Hub used for the Job.
            Can be None if space_id is present instead.
        space_id (`str` or `None`):
            The Docker image from Hugging Face Spaces used for the Job.
            Can be None if docker_image is present instead.
        command (`List[str]` or `None`):
            Command of the Job, e.g. `["python", "-c", "print('hello world')"]`
        arguments (`List[str]` or `None`):
            Arguments passed to the command
        environment (`Dict[str]` or `None`):
            Environment variables of the Job as a dictionary.
        secrets (`Dict[str]` or `None`):
            Secret environment variables of the Job (encrypted).
        flavor (`str` or `None`):
            Flavor for the hardware, as in Hugging Face Spaces. See [`SpaceHardware`] for possible values.
            E.g. `"cpu-basic"`.
        status: (`JobStatus` or `None`):
            Status of the Job, e.g. `JobStatus(stage="RUNNING", message=None)`
            See [`JobStage`] for possible stage values.
        status: (`JobOwner` or `None`):
            Owner of the Job, e.g. `JobOwner(id="5e9ecfc04957053f60648a3e", name="lhoestq", type="user")`

    Example:

    ```python
    >>> from huggingface_hub import run_job
    >>> job = run_job(
    ...     image="python:3.12",
    ...     command=["python", "-c", "print('Hello from the cloud!')"]
    ... )
    >>> job
    JobInfo(id='687fb701029421ae5549d998', created_at=datetime.datetime(2025, 7, 22, 16, 6, 25, 79000, tzinfo=datetime.timezone.utc), docker_image='python:3.12', space_id=None, command=['python', '-c', "print('Hello from the cloud!')"], arguments=[], environment={}, secrets={}, flavor='cpu-basic', status=JobStatus(stage='RUNNING', message=None), owner=JobOwner(id='5e9ecfc04957053f60648a3e', name='lhoestq', type='user'), endpoint='https://huggingface.co', url='https://huggingface.co/jobs/lhoestq/687fb701029421ae5549d998')
    >>> job.id
    '687fb701029421ae5549d998'
    >>> job.url
    'https://huggingface.co/jobs/lhoestq/687fb701029421ae5549d998'
    >>> job.status.stage
    'RUNNING'
    ```
    r   
created_atdocker_imagespace_idcommand	argumentsenvironmentsecretsflavorstatusownerendpointurlN)returnc                 K   s  |d | _ |dp|d}|r*t|nd | _|dpB|d| _|dpX|d| _|di }t|d |d	 |d
 d| _|d| _|d| _	|d| _
|d| _|d| _|di }t|d |dd| _|dtj| _| j d| jj d| j  | _d S )Nr   Z	createdAtr"   ZdockerImager#   ZspaceIdr$   r+   r   r    )r   r   r    r%   r&   r'   r(   r)   r*   r   r   )r   r   r,   z/jobs//)r   getr   r"   r#   r$   r   r+   r%   r&   r'   r(   r)   r   r*   r	   ZENDPOINTr,   r   r-   )selfkwargsr"   r+   r*   r   r   r   __init__~   s     
zJobInfo.__init__)r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r3   r   r   r   r   r!   :   s   
2r!   N)dataclassesr   r   enumr   typingr   r   r   r   Zhuggingface_hubr	   Zhuggingface_hub._space_apir
   Zhuggingface_hub.utils._datetimer   r   r   r   r   r!   r   r   r   r   <module>   s   