
    h                         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	ee      Ze G d
 d             Ze G d d             Ze G d d             Zy)    )	dataclass)datetime)Enum)AnyDictListOptional)	constants)SpaceHardware)parse_datetimec                   $    e Zd ZdZdZdZdZdZdZy)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        U/var/www/Befach/backend/env/lib/python3.12/site-packages/huggingface_hub/_jobs_api.pyr   r      s"    	 IHEGGr   r   c                   0    e Zd ZU eed<   ee   ed<   ddZy)	JobStatusstagemessageNc                 D    |d   | _         |j                  d      | _        y )Nr   r   )r   getr   )selfkwargss     r   __init__zJobStatus.__init__2   s    G_
zz),r   returnN)r   r   r   r   __annotations__r	   strr#   r   r   r   r   r   -   s    Oc]-r   r   c                   "    e Zd ZU eed<   eed<   y)JobOwneridnameN)r   r   r   r'   r&   r   r   r   r)   r)   7   s    G
Ir   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      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   ed<   ee   ed<   eed<   eed<   ddZy)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")`

    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'), 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urlNc           	         |d   | _         |j                  d      xs |j                  d      }|rt        |      nd | _        |j                  d      xs |j                  d      | _        |j                  d      xs |j                  d      | _        t        di t        |j                  d      t              r|d   ni | _	        |j                  d	      | _
        |j                  d
      | _        |j                  d      | _        |j                  d      | _        |j                  d      | _        t        di t        |j                  d      t              r|d   ni | _        |j                  dt"        j$                        | _        | j&                   d| j                  j(                   d| j                    | _        y )Nr*   	createdAtr.   dockerImager/   spaceIdr0   r7   r1   r2   r3   r4   r5   r6   r8   z/jobs//r   )r*   r    r   r.   r/   r0   r)   
isinstancedictr7   r1   r2   r3   r4   r5   r   r6   r
   ENDPOINTr8   r+   r9   )r!   r"   r.   s      r   r#   zJobInfo.__init__   s]   ,ZZ,H

<0H
8B.4"JJ}5SN9S

9-GJ1GcJvzz'?RTX4Y_ac
zz),K0!::m4zz),jj*gz&**XBVX\7]6(#3ceg 

:y/A/ABmm_F4::??*;1TWWIFr   r$   )r   r   r   r   r'   r&   r	   r   r   r   r   r   r   r)   r#   r   r   r   r-   r-   =   s    0d 	G""3-smd3i  S	""$sCx.))d38n%%]##YH M	HGr   r-   N)dataclassesr   r   enumr   typingr   r   r   r	   huggingface_hubr
   huggingface_hub._space_apir   huggingface_hub.utils._datetimer   r'   r   r   r)   r-   r   r   r   <module>rH      s~    "   , , % 4 :sD ( - - -   
 SG SG SGr   