Ë
    Bêñi�8  ã                   ó  — d dl mZ d dlmZ 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	ee«      Ze G d
„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Ze G d„ d«      «       Zdddœdedee   d eeef   dz  d!eeef   dz  d"e
dz  d#eez  ez  dz  d$eeef   dz  d%ee   dz  d&eeef   fd'„Zy)(é    )Ú	dataclass)Údatetime)ÚEnum)ÚAny)Ú	constants)ÚSpaceHardwareÚVolume)Úparse_datetimec                   ó$   — e Zd ZdZdZdZdZdZdZy)ÚJobStageah  
    Enumeration of possible stage of a Job on the Hub.

    Value can be compared to a string:
    ```py
    assert JobStage.COMPLETED == "COMPLETED"
    ```
    Possible values are: `COMPLETED`, `CANCELED`, `ERROR`, `DELETED`, `RUNNING`.
    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   © ó    ú[/var/www/pod-logistic/pod-ai/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dz  ed<   y)Ú	JobStatusÚstageNÚmessage)r   r   r   r   Ú__annotations__Ústrr   r   r   r   r   ,   s   … àƒOØ�4‰ZÔ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    2   s   … àƒGØ
ƒIØ
„Ir   r    c                   ó  — e Zd ZU dZeed<   edz  ed<   edz  ed<   edz  ed<   ee   dz  ed<   ee   dz  ed<   eee	f   dz  ed	<   eee	f   dz  ed
<   e
dz  ed<   eeef   dz  ed<   ee   dz  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"`.
        labels (`dict[str, str]` or `None`):
            Labels to attach to the job (key-value pairs).
        volumes (`list[Volume]` or `None`):
            Volumes mounted in the job container (buckets, models, datasets, spaces).
        status: (`JobStatus` or `None`):
            Status of the Job, e.g. `JobStatus(stage="RUNNING", message=None)`
            See [`JobStage`] for possible stage values.
        owner: (`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', labels=None, 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!   NÚ
created_atÚdocker_imageÚspace_idÚcommandÚ	argumentsÚenvironmentÚsecretsÚflavorÚlabelsÚvolumesÚstatusÚownerÚendpointÚurlc                 ó$  — |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«      | _        |j                  d«      }|r|D �cg c]  }t        di |¤Ž‘Œ c}nd | _        |j                  di «      }t!        |d   |j                  d«      ¬«      | _        |j                  dt$        j&                  «      | _        | j(                  › d| j                  j*                  › d| j                   › �| _        y c c}w )Nr!   Ú	createdAtr&   ÚdockerImager'   ÚspaceIdr(   r1   r"   r#   ©r!   r"   r#   r)   r*   r+   r,   r-   r.   r/   r0   r   r   )r   r   r2   z/jobs/ú/r   )r!   Úgetr
   r&   r'   r(   r    r1   r)   r*   r+   r,   r-   r.   r	   r/   r   r0   r   ÚENDPOINTr2   r"   r3   )ÚselfÚkwargsr&   r1   r/   Úvr0   s          r   Ú__init__zJobInfo.__init__ƒ   s   € Ø˜‘,ˆŒØ—Z‘Z Ó,ÒH°·
±
¸<Ó0Hˆ
Ù8Bœ.¨Ô4ÈˆŒØ"ŸJ™J }Ó5ÒS¸¿¹ÀNÓ9SˆÔØŸ
™
 9Ó-ÒG°·±¸JÓ1GˆŒØ—
‘
˜7 BÓ'ˆÜ  t¡°5¸±=ÀuÈVÁ}ÔUˆŒ
Ø—z‘z )Ó,ˆŒØŸ™ KÓ0ˆŒØ!Ÿ:™: mÓ4ˆÔØ—z‘z )Ó,ˆŒØ—j‘j Ó*ˆŒØ—j‘j Ó*ˆŒØ—*‘*˜YÓ'ˆÙ9@¨WÖ5¨œ™ ›Ó5ÀdˆŒØ—‘˜H bÓ)ˆÜ f¨W¡o¸v¿z¹zÈ)Ó?TÔUˆŒð Ÿ
™
 :¬y×/AÑ/AÓBˆŒØ—m‘m�_ F¨4¯:©:¯?©?Ð*;¸1¸T¿W¹W¸IÐFˆ�ùò 6s   ÅH©ÚreturnN)r   r   r   r   r   r   r   ÚlistÚdictr   r   r	   r   r    r?   r   r   r   r%   r%   9   s»   … ñ4ðl 	ƒGØ˜4‘ÓØ˜‘*ÓØ�D‰jÓØ�#‰Y˜ÑÓØ�C‰y˜4ÑÓØ�c˜3�h‘ $Ñ&Ó&Ø�#�s�(‰^˜dÑ"Ó"Ø˜DÑ Ó Ø��c�‰N˜TÑ!Ó!Ø�&‰\˜DÑ Ó ØÓØƒOð ƒMØ	ƒHôGr   r%   c                   ó  — e Zd ZU edz  ed<   edz  ed<   ee   dz  ed<   ee   dz  ed<   eeef   dz  ed<   eeef   dz  ed<   edz  ed<   e	dz  ed	<   ee   dz  ed
<   edz  ed<   eeef   dz  ed<   ee
   dz  ed<   dd„Zy)ÚJobSpecNr'   r(   r)   r*   r+   r,   r-   ÚtimeoutÚtagsÚarchr.   r/   c                 ó°  — |j                  d«      xs |j                  d«      | _        |j                  d«      xs |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d	«      | _        |j                  d
«      | _        |j                  d«      | _	        |j                  d«      | _
        |j                  d«      | _        |j                  d«      }|r|D �cg c]  }t        di |¤Ž‘Œ c}| _        y d | _        y c c}w )Nr6   r'   r7   r(   r)   r*   r+   r,   r-   rF   rG   rH   r.   r/   r   )r:   r'   r(   r)   r*   r+   r,   r-   rF   rG   rH   r.   r	   r/   )r<   r=   r/   r>   s       r   r?   zJobSpec.__init__ª   s  € Ø"ŸJ™J }Ó5ÒS¸¿¹ÀNÓ9SˆÔØŸ
™
 9Ó-ÒG°·±¸JÓ1GˆŒØ—z‘z )Ó,ˆŒØŸ™ KÓ0ˆŒØ!Ÿ:™: mÓ4ˆÔØ—z‘z )Ó,ˆŒØ—j‘j Ó*ˆŒØ—z‘z )Ó,ˆŒØ—J‘J˜vÓ&ˆŒ	Ø—J‘J˜vÓ&ˆŒ	Ø—j‘j Ó*ˆŒØ—*‘*˜YÓ'ˆÙ9@¨WÖ5¨œ™ ›Ò5ˆ�Àdˆ�ùÒ5s   Ä0Er@   )r   r   r   r   r   rB   rC   r   r   Úintr	   r?   r   r   r   rE   rE   ›   s°   … à˜‘*ÓØ�D‰jÓØ�#‰Y˜ÑÓØ�C‰y˜4ÑÓØ�c˜3�h‘ $Ñ&Ó&Ø�#�s�(‰^˜dÑ"Ó"Ø˜DÑ Ó Ø�4‰ZÓØ
ˆs‰)�dÑ
ÓØ
�‰*ÓØ��c�‰N˜TÑ!Ó!Ø�&‰\˜DÑ Ó ôKr   rE   c                   ó*   — e Zd ZU eed<   eed<   dd„Zy)ÚLastJobInfor!   ÚatNc                 ó>   — |d   | _         t        |d   «      | _        y )Nr!   rM   )r!   r
   rM   ©r<   r=   s     r   r?   zLastJobInfo.__init__¿   s   € Ø˜‘,ˆŒÜ  ¨¡Ó.ˆ�r   r@   )r   r   r   r   r   r   r?   r   r   r   rL   rL   º   s   … àƒGØƒLô/r   rL   c                   ó6   — e Zd ZU edz  ed<   edz  ed<   dd„Zy)ÚScheduledJobStatusNÚlast_jobÚnext_job_run_atc                 ó  — |j                  d«      xs |j                  d«      }|rt        di |¤Žnd | _        |j                  d«      xs |j                  d«      }|rt        t	        |«      «      | _        y d | _        y )NÚlastJobrR   ÚnextJobRunAtrS   r   )r:   rL   rR   r
   r   rS   )r<   r=   rR   rS   s       r   r?   zScheduledJobStatus.__init__É   sj   € Ø—:‘:˜iÓ(ÒB¨F¯J©J°zÓ,BˆÙ3;œÑ/ hÒ/ÀˆŒØ Ÿ*™* ^Ó4ÒU¸¿
¹
ÐCTÓ8UˆÙGVœ~¬c°/Ó.BÓCˆÕÐ\`ˆÕr   r@   )r   r   r   rL   r   r   r?   r   r   r   rQ   rQ   Ä   s   … à˜DÑ Ó Ø ‘_Ó$ôar   rQ   c                   ó‚   — e Zd ZU dZeed<   edz  ed<   eed<   edz  ed<   edz  ed<   edz  ed<   e	ed	<   e
ed
<   dd„Zy)ÚScheduledJobInfoaÅ  
    Contains information about a Job.

    Args:
        id (`str`):
            Scheduled Job ID.
        created_at (`datetime` or `None`):
            When the scheduled Job was created.
        tags (`list[str]` or `None`):
            The tags of the scheduled Job.
        schedule (`str` or `None`):
            One of "@annually", "@yearly", "@monthly", "@weekly", "@daily", "@hourly", or a
            CRON schedule expression (e.g., '0 9 * * 1' for 9 AM every Monday).
        suspend (`bool` or `None`):
            Whether the scheduled job is suspended (paused).
        concurrency (`bool` or `None`):
            Whether multiple instances of this Job can run concurrently.
        status (`ScheduledJobStatus` or `None`):
            Status of the scheduled Job.
        owner: (`JobOwner` or `None`):
            Owner of the scheduled Job, e.g. `JobOwner(id="5e9ecfc04957053f60648a3e", name="lhoestq", type="user")`
        job_spec: (`JobSpec` or `None`):
            Specifications of the Job.

    Example:

    ```python
    >>> from huggingface_hub import run_job
    >>> scheduled_job = create_scheduled_job(
    ...     image="python:3.12",
    ...     command=["python", "-c", "print('Hello from the cloud!')"],
    ...     schedule="@hourly",
    ... )
    >>> scheduled_job.id
    '687fb701029421ae5549d999'
    >>> scheduled_job.status.next_job_run_at
    datetime.datetime(2025, 7, 22, 17, 6, 25, 79000, tzinfo=datetime.timezone.utc)
    ```
    r!   Nr&   Újob_specÚscheduleÚsuspendÚconcurrencyr0   r1   c                 óž  — |d   | _         |j                  d«      xs |j                  d«      }|rt        |«      nd | _        t	        di |j                  d«      xs |j                  di «      ¤Ž| _        |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  d	i «      }t        |j                  d
«      xs |j                  d«      |j                  d«      xs |j                  d«      ¬«      | _
        |j                  di «      }t        |d   |d   |d   ¬«      | _        y )Nr!   r5   r&   rY   ÚjobSpecrZ   r[   r\   r0   rR   rU   rS   rV   )rR   rS   r1   r"   r#   r8   r   )r!   r:   r
   r&   rE   rY   rZ   r[   r\   rQ   r0   r    r1   )r<   r=   r&   r0   r1   s        r   r?   zScheduledJobInfo.__init__  s  € Ø˜‘,ˆŒØ—Z‘Z Ó,ÒH°·
±
¸<Ó0Hˆ
Ù8Bœ.¨Ô4ÈˆŒÜÑX 6§:¡:¨jÓ#9Ò#V¸V¿Z¹ZÈ	ÐSUÓ=VÑXˆŒØŸ
™
 :Ó.ˆŒØ—z‘z )Ó,ˆŒØ!Ÿ:™: mÓ4ˆÔØ—‘˜H bÓ)ˆÜ(Ø—Z‘Z 
Ó+ÒD¨v¯z©z¸)Ó/DØ"ŸJ™JÐ'8Ó9ÒW¸V¿Z¹ZÈÓ=Wô
ˆŒð —
‘
˜7 BÓ'ˆÜ  t¡°5¸±=ÀuÈVÁ}ÔUˆ�
r   r@   )r   r   r   r   r   r   r   rE   ÚboolrQ   r    r?   r   r   r   rX   rX   Ð   sN   … ñ&ðP 	ƒGØ˜4‘ÓØÓØ�D‰jÓØ�D‰[ÓØ˜‘ÓØÓØƒOôVr   rX   c                   óL   — e Zd ZU dZeed<   eed<   eed<   eed<   eed<   d	d„Zy)
ÚJobAcceleratoraý  
    Contains information about a Job accelerator (GPU).

    Args:
        type (`str`):
            Type of accelerator, e.g. `"gpu"`.
        model (`str`):
            Model of accelerator, e.g. `"T4"`, `"A10G"`, `"A100"`, `"L4"`, `"L40S"`.
        quantity (`str`):
            Number of accelerators, e.g. `"1"`, `"2"`, `"4"`, `"8"`.
        vram (`str`):
            Total VRAM, e.g. `"16 GB"`, `"24 GB"`.
        manufacturer (`str`):
            Manufacturer of the accelerator, e.g. `"Nvidia"`.
    r#   ÚmodelÚquantityÚvramÚmanufacturerNc                 óh   — |d   | _         |d   | _        |d   | _        |d   | _        |d   | _        y )Nr#   rb   rc   rd   re   )r#   rb   rc   rd   re   rO   s     r   r?   zJobAccelerator.__init__,  s<   € Ø˜6‘NˆŒ	Ø˜G‘_ˆŒ
Ø˜zÑ*ˆŒØ˜6‘NˆŒ	Ø" >Ñ2ˆÕr   r@   )r   r   r   r   r   r   r?   r   r   r   ra   ra     s(   … ñð  ƒIØƒJØƒMØ
ƒIØÓô3r   ra   c                   óp   — e Zd ZU dZeed<   eed<   eed<   eed<   edz  ed<   eed<   eed	<   eed
<   dd„Z	y)ÚJobHardwarea™  
    Contains information about available Job hardware.

    Args:
        name (`str`):
            Machine identifier, e.g. `"cpu-basic"`, `"a10g-large"`.
        pretty_name (`str`):
            Human-readable name, e.g. `"CPU Basic"`, `"Nvidia A10G - large"`.
        cpu (`str`):
            CPU specification, e.g. `"2 vCPU"`, `"12 vCPU"`.
        ram (`str`):
            RAM specification, e.g. `"16 GB"`, `"46 GB"`.
        accelerator (`JobAccelerator` or `None`):
            GPU/accelerator details if available.
        unit_cost_micro_usd (`int`):
            Cost in micro-dollars per unit, e.g. `167` (= $0.000167).
        unit_cost_usd (`float`):
            Cost in USD per unit, e.g. `0.000167`.
        unit_label (`str`):
            Cost unit period, e.g. `"minute"`.

    Example:

    ```python
    >>> from huggingface_hub import list_jobs_hardware
    >>> hardware_list = list_jobs_hardware()
    >>> hardware_list[0]
    JobHardware(name='cpu-basic', pretty_name='CPU Basic', cpu='2 vCPU', ram='16 GB', accelerator=None, unit_cost_micro_usd=167, unit_cost_usd=0.000167, unit_label='minute')
    >>> hardware_list[0].name
    'cpu-basic'
    ```
    r"   Úpretty_nameÚcpuÚramNÚacceleratorÚunit_cost_micro_usdÚunit_cost_usdÚ
unit_labelc                 óÚ   — |d   | _         |d   | _        |d   | _        |d   | _        |j	                  d«      }|rt        d	i |¤Žnd | _        |d   | _        |d   | _        |d   | _	        y )
Nr"   Ú
prettyNamerj   rk   rl   ÚunitCostMicroUSDÚunitCostUSDÚ	unitLabelr   )
r"   ri   rj   rk   r:   ra   rl   rm   rn   ro   )r<   r=   rl   s      r   r?   zJobHardware.__init__`  sy   € Ø˜6‘NˆŒ	Ø! ,Ñ/ˆÔØ˜%‘=ˆŒØ˜%‘=ˆŒØ—j‘j Ó/ˆÙ<Gœ>Ñ8¨KÒ8ÈTˆÔØ#)Ð*<Ñ#=ˆÔ Ø# MÑ2ˆÔØ  Ñ-ˆ�r   r@   )
r   r   r   r   r   r   ra   rJ   Úfloatr?   r   r   r   rh   rh   4  s@   … ñðB ƒIØÓØ	ƒHØ	ƒHØ $Ñ&Ó&ØÓØÓØƒOô	.r   rh   N)r.   r/   Úimager)   Úenvr,   r-   rF   r.   r/   rA   c                 ó²  — |g |xs i |xs t         j                  dœ}|r||d<   |rPdddddœ}	t        |t        «      r+|d   |	v r$t	        t        |d d «      |	|d      z  «      |d	<   nt	        |«      |d	<   |r||d
<   |r!|D �
cg c]  }
|
j                  «       ‘Œ c}
|d<   dD ]'  }| j                  |«      sŒ| t        |«      d  |d<    |S  | |d<   |S c c}
w )N)r)   r*   r+   r-   r,   é   é<   i  i€Q )ÚsÚmÚhÚdéÿÿÿÿÚtimeoutSecondsr.   r/   )zhttps://huggingface.co/spaces/zhttps://hf.co/spaces/zhuggingface.co/spaces/zhf.co/spaces/r7   r6   )	r   Ú	CPU_BASICÚ
isinstancer   rJ   ru   Úto_dictÚ
startswithÚlen)rv   r)   rw   r,   r-   rF   r.   r/   rY   Útime_units_factorsÚvolÚprefixs               r   Ú_create_job_specr‰   l  s  € ð ØØ’y˜bØÒ3œM×3Ñ3ñ	 €Hñ Ø%ˆ�ÑáØ#$¨2°D¸yÑIÐÜ�gœsÔ#¨°©Ð7IÑ(IÜ),¬U°7¸3¸B°<Ó-@ÐCUÐV]Ð^`ÑVaÑCbÑ-bÓ)cˆHÐ%Ò&ä),¨W«ˆHÐ%Ñ&áØ#ˆ�ÑáØ8?Ö@°˜sŸ{™{�}Ò@ˆ�Ñðò 
(ˆð ×Ñ˜FÕ#Ø"'¬¨F«¨Ð"6ˆH�YÑØð €Oð
(ð #(ˆ�ÑØ€Oùò As   ÂC)Údataclassesr   r   Úenumr   Útypingr   Úhuggingface_hubr   Úhuggingface_hub._space_apir   r	   Úhuggingface_hub.utils._datetimer
   r   r   r   r    r%   rE   rL   rQ   rX   ra   rh   rB   rC   rJ   ru   r‰   r   r   r   ú<module>r�      sÔ  ðõ "Ý Ý Ý å %ß <Ý :ôˆs�Dô ð( ÷ð ó ðð
 ÷ð ó ðð ÷^Gð ^Gó ð^GðB ÷Kð Kó ðKð< ÷/ð /ó ð/ð ÷að aó ðað ÷@Vð @Vó ð@VðF ÷3ð 3ó ð3ð> ÷4.ð 4.ó ð4.ð~ %)Ø#'ò.àð.ð �#‰Yð.ð 
ˆc�3ˆh‰˜$Ñ	ð	.ð
 �#�s�(‰^˜dÑ"ð.ð ˜DÑ ð.ð �5‰[˜3Ñ Ñ%ð.ð ��c�‰N˜TÑ!ð.ð �&‰\˜DÑ ð.ð 
ˆ#ˆsˆ(�^ô.r   