+
    &jI                        ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt  ! R R	]]4      t ! R
 R]]4      t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R R4      4       t] ! R  R!4      4       tR"R#R$R#/R% R& lltR## )'    )	dataclass)datetime)Enum)Any)	constants)Volume)parse_datetimec                       ] tR t^tRtRtRtRtRtRt	Rt
RtR	tR
tRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtR# )JobHardwarez
Enumeration of hardware flavors available to run Jobs on the Hub.

Value can be compared to a string:
```py
assert JobHardware.CPU_BASIC == "cpu-basic"
```

Both enums are kept in sync with the Hub API by `utils/check_hardware_flavors.py`.
z	cpu-basiczcpu-upgradezcpu-performancezcpu-xlzt4-smallz	t4-mediuml4x1l4x4l40sx1l40sx4l40sx8z
a10g-smallz
a10g-largeza10g-largex2za10g-largex4z
a100-largea100x4a100x8h200h200x2h200x4h200x8zrtx-pro-6000zrtx-pro-6000x2zrtx-pro-6000x4zrtx-pro-6000x8 N) __name__
__module____qualname____firstlineno____doc__	CPU_BASICCPU_UPGRADECPU_PERFORMANCECPU_XLT4_SMALL	T4_MEDIUML4X1L4X4L40SX1L40SX4L40SX8
A10G_SMALL
A10G_LARGEA10G_LARGEX2A10G_LARGEX4
A100_LARGEA100X4A100X8H200H200X2H200X4H200X8RTX_PRO_6000RTX_PRO_6000X2RTX_PRO_6000X4RTX_PRO_6000X8__static_attributes__r       q/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/huggingface_hub/_jobs_api.pyr   r      s    	 IK'OF HIDDFFFJJ!L!LJFFDFFF!L%N%N%Nr8   r   c                   2    ] tR t^CtRtRtRtRtRtRt	Rt
RtR	# )
JobStageaV  
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`, `SCHEDULING`, `RUNNING`.
Taken from https://github.com/huggingface/moon-landing/blob/main/server/job_types/JobInfo.ts#L61 (private url).
	COMPLETEDCANCELEDERRORDELETED
SCHEDULINGRUNNINGr   N)r   r   r   r   r   r<   r=   r>   r?   r@   rA   r7   r   r8   r9   r;   r;   C   s'    	 IHEGJGr8   r;   c                   ,   a  ] tR t^Xt o V 3R ltRtV tR# )	JobStatusc                @   < V ^8  d   Qh/ S[ ;R&   S[R,          ;R&   # )   stageNmessage)r;   str)format__classdict__s   "r9   __annotate__JobStatus.__annotate__X   s      O  4Z r8   r   Nr   r   r   r   __annotate_func__r7   __classdictcell__rJ   s   @r9   rC   rC   X         r8   rC   c                   ,   a  ] tR t^^t o V 3R ltRtV tR# )JobOwnerc                >   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )rE   idnametyperH   )rI   rJ   s   "r9   rK   JobOwner.__annotate__^   s'     G  I  I	 r8   r   NrM   rP   s   @r9   rS   rS   ^   rQ   r8   rS   c                   B   a  ] tR t^et o RtV 3R lR ltV 3R ltRtV tR# )JobDurationsaE  
Timing breakdown for a Job, computed server-side.

Args:
    scheduling_secs (`int` or `None`):
        Seconds the job spent in the scheduling stage before starting to run.
        `None` if the job never reached the running stage.
    running_secs (`int` or `None`):
        Seconds the job has been or was running. Recomputed on each request
        while the job is in progress. `None` if the job never started running.
    total_secs (`int` or `None`):
        Total seconds elapsed since the job was created. Recomputed on each
        request while the job is in progress.
c                   < V ^8  d   QhRR/# rE   returnNr   )rI   rJ   s   "r9   rK   JobDurations.__annotate__z   s     L LD Lr8   c                    VP                  R VP                  R4      4      V n        VP                  RVP                  R4      4      V n        VP                  RVP                  R4      4      V n        R# )schedulingSecsscheduling_secsrunningSecsrunning_secs	totalSecs
total_secsN)getrb   rd   rf   selfkwargss   &,r9   __init__JobDurations.__init__z   sW    %zz*:FJJGX<YZ"JJ}fjj6PQ **[&**\2JKr8   c                h   < V ^8  d   Qh/ S[ R,          ;R&   S[ R,          ;R&   S[ R,          ;R&   # )rE   Nrb   rd   rf   )int)rI   rJ   s   "r9   rK   r_   e   s8     " 4Z# $ *% & d
' r8   )rd   rb   rf   N	r   r   r   r   r   rk   rN   r7   rO   rP   s   @r9   r[   r[   e   s     &L L+  r8   r[   c                   4   a  ] tR t^t o RtRtV 3R ltRtV tR# )JobInitiatora2  
Contains information about what triggered a Job.

Args:
    type (`str`): Initiator kind, for example `"user"`, `"org"`, `"scheduled-job"`, or `"duplicated-job"`.
    id (`str`): Identifier of the initiator.
    name (`str` or `None`): Human-readable name when available, usually for user/org initiators.
Nc                L   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ R,          ;R&   # )rE   rW   rU   NrV   rX   )rI   rJ   s   "r9   rK   JobInitiator.__annotate__   s.      I  	G  * r8   r   )	r   r   r   r   r   rV   rN   r7   rO   rP   s   @r9   rq   rq      s      D  r8   rq   c                   B   a  ] tR t^t o RtV 3R lR ltV 3R ltRtV tR# )JobInfoaM  
Contains information about a Job.

Args:
    id (`str`):
        Job ID.
    created_at (`datetime` or `None`):
        When the Job was created.
    started_at (`datetime` or `None`):
        When the Job started running. None while the Job is still scheduling.
    finished_at (`datetime` or `None`):
        When the Job finished. None while the Job is still scheduling or running.
    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. See [`JobHardware`] 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.
    durations (`JobDurations` or `None`):
        Timing breakdown of the Job. Present for all job states including SCHEDULING.
    owner: (`JobOwner` or `None`):
        Owner of the Job, e.g. `JobOwner(id="5e9ecfc04957053f60648a3e", name="lhoestq", type="user")`
    initiator (`JobInitiator` or `None`):
        What triggered the Job, e.g. `JobInitiator(type="scheduled-job", id="...")` for a cron-triggered run.

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), started_at=datetime.datetime(2025, 7, 22, 16, 6, 31, 79000, tzinfo=datetime.timezone.utc), finished_at=None, 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), durations=JobDurations(scheduling_secs=6, running_secs=2, total_secs=8), owner=JobOwner(id='5e9ecfc04957053f60648a3e', name='lhoestq', type='user'), initiator=JobInitiator(type='user', 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'
```
c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   JobInfo.__annotate__   s     G GD Gr8   c                   VR ,          V n         VP                  R4      ;'       g    VP                  R4      pV'       d   \        V4      MRV n        VP                  R4      ;'       g    VP                  R4      pV'       d   \        V4      MRV n        VP                  R4      ;'       g    VP                  R4      pV'       d   \        V4      MRV n        VP                  R4      ;'       g    VP                  R	4      V n        VP                  R
4      ;'       g    VP                  R4      V n        VP                  R/ 4      p\        VR ,          VR,          VR,          R7      V n	        VP                  R4      V n
        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      pV'       d   V Uu. uF  p\!        R!/ VB NK  	  upMRV n        VP                  R/ 4      p\%        VR,          VP                  R4      R7      V n        VP                  R4      p	V	'       d   \)        R!/ V	B MRV n        VP                  R4      p
V
'       d,   \-        V
R,          V
R ,          V
P                  R4      R7      MRV n        VP                  R\0        P2                  4      V n        V P4                   RV P                  P6                   R V P                    2V n        R# u upi )"rU   	createdAt
created_atN	startedAt
started_at
finishedAtfinished_atdockerImagedocker_imagespaceIdspace_idownerrV   rW   rU   rV   rW   command	argumentsenvironmentsecretsflavorlabelsvolumesstatusrF   rG   )rF   rG   	durations	initiator)rW   rU   rV   endpointz/jobs//r   )rU   rg   r	   rz   r|   r~   r   r   rS   r   r   r   r   r   r   r   r   r   rC   r   r[   r   rq   r   r   ENDPOINTr   rV   url)ri   rj   rz   r|   r~   r   r   vr   r   r   s   &,         r9   rk   JobInfo.__init__   sf   ,ZZ,HH

<0H
8B.4ZZ,HH

<0H
8B.4jj.KK&**]2K:E>+64"JJ}5SSN9S

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

7B't5=uV}U
zz),K0!::m4zz),jj*jj***Y'9@W5WW5dHb)fWovzz)?TUJJ{+	6?2	2TJJ{+	dmLi/IdO)--X^J_`sw 	
 

:y/A/ABmm_F4::??*;1TWWIF 6s   M c                4  < V ^8  d   Qh/ S[ ;R&   S[R,          ;R&   S[R,          ;R&   S[R,          ;R&   S[ R,          ;R&   S[ R,          ;R&   S[S[ ,          R,          ;R&   S[S[ ,          R,          ;R	&   S[S[ S[3,          R,          ;R
&   S[S[ S[3,          R,          ;R&   S[R,          ;R&   S[S[ S[ 3,          R,          ;R&   S[S[,          R,          ;R&   S[;R&   S[R,          ;R&   S[	;R&   S[
R,          ;R&   S[ ;R&   S[ ;R&   # )rE   rU   Nrz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rH   r   listdictr   r   r   rC   r[   rS   rq   )rI   rJ   s   "r9   rK   rw      s    @ 	GA B 4C D 4E F D G H *I J DjK L #YM N Cy4O P c3h$&&Q R #s(^d""S T $U V cNT!!W X &\D  Y Z [ \ d""] ^ O_ ` d""a f Mg h 
Hi r8   )r   r   rz   r   r   r   r   r~   r   rU   r   r   r   r   r   r|   r   r   r   Nro   rP   s   @r9   ru   ru      s     <hG Gm  r8   ru   c                   >   a  ] tR tRt o V 3R lR ltV 3R ltRtV tR# )JobSpeci  c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   JobSpec.__annotate__  s     K KD Kr8   c                   VP                  R 4      ;'       g    VP                  R4      V n        VP                  R4      ;'       g    VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R	4      V n        VP                  R
4      V n	        VP                  R4      V n
        VP                  R4      V n        VP                  R4      pV'       d#   V Uu. uF  p\        R/ VB NK  	  upV n        R# RV n        R# u upi )r   r   r   r   r   r   r   r   r   timeouttagsarchr   r   Nr   )rg   r   r   r   r   r   r   r   r   r   r   r   r   r   )ri   rj   r   r   s   &,  r9   rk   JobSpec.__init__  s   "JJ}5SSN9S

9-GGJ1Gzz),K0!::m4zz),jj*zz),JJv&	JJv&	jj***Y'9@W5WW5d5s   E)c                  < V ^8  d   Qh/ S[ R,          ;R&   S[ R,          ;R&   S[S[ ,          R,          ;R&   S[S[ ,          R,          ;R&   S[S[ S[3,          R,          ;R&   S[S[ S[3,          R,          ;R&   S[R,          ;R&   S[R,          ;R	&   S[S[ ,          R,          ;R
&   S[ R,          ;R&   S[S[ S[ 3,          R,          ;R&   S[S[,          R,          ;R&   # )rE   Nr   r   r   r   r   r   r   r   r   r   r   r   )rH   r   r   r   r   rn   r   )rI   rJ   s   "r9   rK   r     s     *  Dj  #Y	 
 Cy4  c3h$&&  #s(^d""  $  4Z  s)d
  *  cNT!!  &\D   r8   )r   r   r   r   r   r   r   r   r   r   r   r   Nr   r   r   r   rk   rN   r7   rO   rP   s   @r9   r   r     s     K K  r8   r   c                   >   a  ] tR tRt o V 3R lR ltV 3R ltRtV tR# )LastJobInfoi'  c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   LastJobInfo.__annotate__,  s     / /D /r8   c                P    VR ,          V n         \        VR,          4      V n        R# )rU   atN)rU   r	   r   rh   s   &,r9   rk   LastJobInfo.__init__,  s    , .r8   c                2   < V ^8  d   Qh/ S[ ;R&   S[;R&   # )rE   rU   r   )rH   r   )rI   rJ   s   "r9   rK   r   '  s     G  	L r8   )r   rU   Nr   rP   s   @r9   r   r   '  s     
/ /  r8   r   c                   >   a  ] tR tRt o V 3R lR ltV 3R ltRtV tR# )ScheduledJobStatusi1  c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   ScheduledJobStatus.__annotate__6  s     a aD ar8   c                6   VP                  R 4      ;'       g    VP                  R4      pV'       d   \        R/ VB MRV n        VP                  R4      ;'       g    VP                  R4      pV'       d   \        \	        V4      4      V n        R# RV n        R# )lastJoblast_jobNnextJobRunAtnext_job_run_atr   )rg   r   r   r	   rH   r   )ri   rj   r   r   s   &,  r9   rk   ScheduledJobStatus.__init__6  sp    ::i(BBFJJz,B3;/h/ **^4UU

CT8UGV~c/.BC\`r8   c                N   < V ^8  d   Qh/ S[ R,          ;R&   S[R,          ;R&   # )rE   Nr   r   )r   r   )rI   rJ   s   "r9   rK   r   1  s&     D    _$ r8   r   r   Nr   rP   s   @r9   r   r   1  s     
a a  r8   r   c                   B   a  ] tR tRt o RtV 3R lR ltV 3R ltRtV tR# )ScheduledJobInfoi=  a9  
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)
```
c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   ScheduledJobInfo.__annotate__p  s     V VD Vr8   c                   VR ,          V n         VP                  R4      ;'       g    VP                  R4      pV'       d   \        V4      MRV n        \	        R/ VP                  R4      ;'       g    VP                  R/ 4      B V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R	/ 4      p\        VP                  R
4      ;'       g    VP                  R4      VP                  R4      ;'       g    VP                  R4      R7      V n
        VP                  R/ 4      p\        VR ,          VR,          VR,          R7      V n        R# )rU   ry   rz   Njob_specjobSpecschedulesuspendconcurrencyr   r   r   r   r   r   r   rV   rW   r   r   )rU   rg   r	   rz   r   r   r   r   r   r   r   rS   r   )ri   rj   rz   r   r   s   &,   r9   rk   ScheduledJobInfo.__init__p  s   ,ZZ,HH

<0H
8B.4X6::j#9#V#VVZZ	SU=VX

:.zz),!::m4Hb)(ZZ
+DDvzz)/D"JJ'89WWVZZ=W
 

7B't5=uV}U
r8   c                   < V ^8  d   Qh/ S[ ;R&   S[R,          ;R&   S[;R&   S[ R,          ;R&   S[R,          ;R&   S[R,          ;R&   S[;R&   S[;R	&   # )
rE   rU   Nrz   r   r   r   r   r   r   )rH   r   r   boolr   rS   )rI   rJ   s   "r9   rK   r   =  s     T 	GU V 4W X Y Z Dj[ \ D[] ^ _ ` a b Oc r8   )r   rz   rU   r   r   r   r   r   Nro   rP   s   @r9   r   r   =  s     &bV Vg  r8   r   c                   B   a  ] tR tRt o RtV 3R lR ltV 3R ltRtV tR# )JobAcceleratori  a  
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"`.
c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   JobAccelerator.__annotate__  s     3 3D 3r8   c                    VR ,          V n         VR,          V n        VR,          V n        VR,          V n        VR,          V n        R# )rW   modelquantityvrammanufacturerN)rW   r   r   r   r   rh   s   &,r9   rk   JobAccelerator.__init__  s<    6N	G_
z*6N	">2r8   c                V   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )rE   rW   r   r   r   r   rX   )rI   rJ   s   "r9   rK   r     sB     $ I% & J' ( M) * I+ , - r8   )r   r   r   rW   r   Nro   rP   s   @r9   r   r     s     ,3 31  r8   r   c                   B   a  ] tR tRt o RtV 3R lR ltV 3R ltRtV tR# )JobHardwareInfoi  a  
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"`.
    ephemeral_storage (`str`):
        Ephemeral storage specification, e.g. `"20 GB"`, `"100 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]
JobHardwareInfo(name='cpu-basic', pretty_name='CPU Basic', cpu='2 vCPU', ram='16 GB', ephemeral_storage='20 GB', accelerator=None, unit_cost_micro_usd=167, unit_cost_usd=0.000167, unit_label='minute')
>>> hardware_list[0].name
'cpu-basic'
```
c                   < V ^8  d   QhRR/# r]   r   )rI   rJ   s   "r9   rK   JobHardwareInfo.__annotate__  s     
. 
.D 
.r8   c                N   VR ,          V n         VR,          V n        VR,          V n        VR,          V n        VP	                  RR4      V n        VP	                  R4      pV'       d   \        R/ VB MRV n        VR,          V n        VR	,          V n	        VR
,          V n
        R# )rV   
prettyNamecpuramephemeralStoragezN/AacceleratorNunitCostMicroUSDunitCostUSD	unitLabelr   )rV   pretty_namer   r   rg   ephemeral_storager   r   unit_cost_micro_usdunit_cost_usd
unit_label)ri   rj   r   s   &, r9   rk   JobHardwareInfo.__init__  s    6N	!,/%=%=!',>!Fjj/<G>8K8T#)*<#= #M2 -r8   c                   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[R,          ;R&   S[;R&   S[;R	&   S[ ;R
&   # )rE   rV   r   r   r   r   Nr   r   r   r   )rH   r   rn   float)rI   rJ   s   "r9   rK   r     s     J IK L M N 
HO P 
HQ R S T  $&&U V W X Y Z O[ r8   )	r   r   r   rV   r   r   r   r   r   Nro   rP   s   @r9   r   r     s     !Z
. 
._  r8   r   r   Nr   c                   V ^8  d   QhR\         R\        \         ,          R\        \         \        3,          R,          R\        \         \        3,          R,          R\        \         ,          R,          R\
        \        ,          \         ,          R,          R\        \         \         3,          R,          R	\        \        ,          R,          R
\        \         \        3,          /	# )rE   imager   envNr   r   r   r   r   r^   )rH   r   r   r   r   rn   r   r   )rI   s   "r9   rK   rK     s     . .. #Y. 
c3h$		.
 #s(^d". #$. 5[3%. cNT!. &\D . 
#s(^.r8   c           	      B   R TR. RT;'       g    / RT;'       g    \         P                  /pV'       d   W8R&   V'       dl   R^R^<RRR	R/p	\        V\        4      '       d>   VR,          V	9   d0   \	        \        VR
R 4      WR,          ,          ,          4      VR&   M\	        V4      VR&   V'       d   WhR&   V'       d#   V U
u. uF  qP                  4       NK  	  up
VR&   R F.  pV P                  V4      '       g   K  V \        V4      R
 VR&    V# 	  WR&   V# u up
i )r   r   r   r   r   smhi  dNtimeoutSecondsr   r   r   r   iQ )zhttps://huggingface.co/spaces/zhttps://hf.co/spaces/zhuggingface.co/spaces/zhf.co/spaces/)	r   r   
isinstancerH   rn   r   to_dict
startswithlen)r   r   r   r   r   r   r   r   r   time_units_factorsvolprefixs   $$$$$$$$    r9   _create_job_specr     s*    	7Rsyyb&11K11	 H %!1c2sD#yIgs##7I(I),U73B<-@CU^`VaCb-b)cH%&),WH%&#8?@{{}@ F##"'F"6HY O #(O As   D)dataclassesr   r   enumr   typingr   huggingface_hubr   huggingface_hub._space_apir   huggingface_hub.utils._datetimer	   rH   r   r;   rC   rS   r[   rq   ru   r   r   r   r   r   r   r   r   r8   r9   <module>r      s   "    % - :(&#t (&VsD *   
    L L L4    tG tG tGn K K K< / / / a a a @V @V @VF 3 3 3> 8. 8. 8.v. %). $(. .r8   