o
    i                     @  sf   d Z ddlmZ ddlmZmZ ddlmZmZ ddlm	Z	 eddG dd	 d	Z
G d
d dZdS )z-In-process registry for queued platform jobs.    )annotations)	dataclassfield)datetimetimezone)AnyT)slotsc                   @  sD   e Zd ZU dZded< dZded< dZded< eed	Z	d
ed< dS )JobDefinitionz*Metadata describing a queued platform job.strjob_namedefault
queue_namer   intretries)default_factorydict[str, Any]metadataN)
__name__
__module____qualname____doc____annotations__r   r   r   dictr    r   r   platform/jobs/job_registry.pyr	   
   s   
 r	   c                   @  s8   e Zd ZdZdddZddd	ZdddZdddZdS )JobRegistryzDTrack registered job types until a real queue backend is plugged in.returnNonec                 C  s
   i | _ d S N)_jobsselfr   r   r   __init__   s   
zJobRegistry.__init__jobr	   c                 C  s   || j |j< d S r   )r   r   )r!   r#   r   r   r   register   s   zJobRegistry.registerr   r
   JobDefinition | Nonec                 C  s   | j |S r   )r   get)r!   r   r   r   r   r&      s   zJobRegistry.getr   c                 C  s   t | jttj dS )N)registered_jobscaptured_at)listr   r   nowr   utc	isoformatr    r   r   r   snapshot    s   zJobRegistry.snapshotN)r   r   )r#   r	   r   r   )r   r
   r   r%   )r   r   )r   r   r   r   r"   r$   r&   r-   r   r   r   r   r      s    


r   N)r   
__future__r   dataclassesr   r   r   r   typingr   r	   r   r   r   r   r   <module>   s    	