
    rh                         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        l/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/huggingface_hub/_jobs_api.pyr   r      s"    	 IHEGGr   r   c                   (    e Zd ZU eed<   ee   ed<   y)	JobStatusstagemessageN)r   r   r   r   __annotations__r	   strr   r   r   r   r   -   s    Oc]r   r   c                   ,    e Zd ZU eed<   eed<   eed<   y)JobOwneridnametypeN)r   r   r   r    r   r   r   r   r"   r"   3   s    G
I
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d<   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", 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urlNc                    |d   | _         |j                  d      xs |j                  d      }|rt        |      nd | _        |j                  d      xs |j                  d      | _        |j                  d      xs |j                  d      | _        |j                  di       }t        |d   |d	   |d
         | _        |j                  d      | _        |j                  d      | _	        |j                  d      | _
        |j                  d      | _        |j                  d      | _        |j                  di       }t        |d   |j                  d            | _        |j                  dt        j                         | _        | j"                   d| j                  j$                   d| j                    | _        y )Nr#   	createdAtr(   dockerImager)   spaceIdr*   r1   r$   r%   )r#   r$   r%   r+   r,   r-   r.   r/   r0   r   r   )r   r   r2   z/jobs//)r#   getr   r(   r)   r*   r"   r1   r+   r,   r-   r.   r/   r   r0   r
   ENDPOINTr2   r$   r3   )selfkwargsr(   r1   r0   s        r   __init__zJobInfo.__init__~   sa   ,ZZ,H

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

9-GJ1G

7B't5=uV}U
zz),K0!::m4zz),jj*Hb)fWovzz)?TU 

:y/A/ABmm_F4::??*;1TWWIFr   )returnN)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%%]##O 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>rE      s~    "   , , % 4 :sD (   
    UG UG UGr   