Ë
    Êô@i
  ã                   óh   — d Z ddlmZmZmZmZmZ ddlmZ erddl	m
Z
  G d„ d«      Z G d„ d«      Zy	)
z3
Task registry for managing registered cron tasks.
é    )ÚDictÚTypeÚListÚOptionalÚTYPE_CHECKING)ÚTaskNotFoundError)ÚCronTaskc                   ó    — e Zd ZdZdZdZdZdZy)ÚExecutionPatternz"Execution patterns for cron tasks.ÚstandardÚalwaysÚrerun_on_failureÚrate_limitedN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚSTANDARDÚALWAYSÚRERUN_ON_FAILUREÚRATE_LIMITED© ó    úQ/home/cursorai/projects/django-cronjob-utils/src/django_cronjob_utils/registry.pyr   r      s   „ Ù,à€HØ€FØ)ÐØ!�Lr   r   c                   ó  — e Zd ZU dZi Zeeed   f   ed<   i Z	eeef   ed<   i Z
eeef   ed<   edededed   fd	„«       Zeded
ed   fd„«       Zeded
ed   fd„«       Zed
ee   fd„«       Zeded
efd„«       Zeded
efd„«       Zy)ÚTaskRegistryz$Centralized registry for cron tasks.r	   Ú_tasksÚ_codesÚ_configsÚnameÚcodeÚ
task_classc                 óî  — || j                   v rt        d|› d�«      ‚|| j                  v rt        d|› d�«      ‚|| j                   |<   || j                  |<   || j                  |<   ||_        ||_        |j                  dt        j                  «      |_	        |j                  dd«      |_
        |j                  dd«      |_        |j                  d	d
«      |_        |j                  d«      |_        y)zRegister a task.úTask 'z' is already registeredúTask code 'Úexecution_patternÚretry_on_failureFÚmax_retriesr   Úretry_delayi,  ÚtimeoutN)r   Ú
ValueErrorr   r   Ú	task_nameÚ	task_codeÚgetr   r   r&   r'   r(   r)   r*   )Úclsr    r!   r"   Úconfigs        r   ÚregisterzTaskRegistry.register   sè   € ð �3—:‘:ÑÜ˜v d VÐ+BÐCÓDÐDØ�3—:‘:ÑÜ˜{¨4¨&Ð0GÐHÓIÐIà%ˆ�
‰
�4ÑØˆ�
‰
�4ÑØ#ˆ�‰�TÑð  $ˆ
ÔØ#ˆ
ÔØ'-§z¡zÐ2EÔGW×G`ÑG`Ó'aˆ
Ô$Ø&,§j¡jÐ1CÀUÓ&Kˆ
Ô#Ø!'§¡¨M¸1Ó!=ˆ
ÔØ!'§¡¨M¸3Ó!?ˆ
ÔØ#ŸZ™Z¨	Ó2ˆ
Õr   Úreturnc           	      ó¬   — || j                   vr8t        d|› ddj                  | j                   j                  «       «      › �«      ‚| j                   |   S )zGet task class by name.r$   z' not found. Available tasks: z, )r   r   ÚjoinÚkeys©r/   r    s     r   Úget_taskzTaskRegistry.get_task1   sU   € ð �s—z‘zÑ!Ü# f¨T¨FÐ2PÐQU×QZÑQZÐ[^×[eÑ[e×[jÑ[jÓ[lÓQmÐPnÐ$oÓpÐpØ�z‰z˜$ÑÐr   c                 ó|   — || j                   vrt        d|› d�«      ‚| j                   |   }| j                  |«      S )zGet task class by code.r%   z' not found)r   r   r7   )r/   r!   r    s      r   Úget_task_by_codezTaskRegistry.get_task_by_code8   sA   € ð �s—z‘zÑ!Ü# k°$°°{Ð$CÓDÐDØ�z‰z˜$ÑˆØ�|‰|˜DÓ!Ð!r   c                 óH   — t        | j                  j                  «       «      S )zList all registered task names.)Úlistr   r5   )r/   s    r   Ú
list_taskszTaskRegistry.list_tasks@   s   € ô �C—J‘J—O‘OÓ%Ó&Ð&r   c                 ó:   — | j                   j                  |i «      S )zGet configuration for a task.)r   r.   r6   s     r   Ú
get_configzTaskRegistry.get_configE   s   € ð �|‰|×Ñ  bÓ)Ð)r   c                 ó   — || j                   v S )zCheck if a task is registered.)r   r6   s     r   Úis_registeredzTaskRegistry.is_registeredJ   s   € ð �s—z‘zÐ!Ð!r   N)r   r   r   r   r   r   Ústrr   Ú__annotations__r   r   ÚdictÚclassmethodr1   r7   r9   r   r<   r>   Úboolr@   r   r   r   r   r      s  … Ù.à*,€FˆD��d˜:Ñ&Ð&Ñ'Ó,Ø€FˆD��c�‰NÓØ "€Hˆd�3˜�9‰oÓ"àð3˜Cð 3 sð 3¸¸ZÑ8Hò 3ó ð3ð( ð ˜Cð   D¨Ñ$4ò  ó ð ð ð" Cð "¨D°Ñ,<ò "ó ð"ð ð'˜4 ™9ò 'ó ð'ð ð*˜cð * dò *ó ð*ð ð" ð "¨ò "ó ñ"r   r   N)r   Útypingr   r   r   r   r   Údjango_cronjob_utils.exceptionsr   Údjango_cronjob_utils.baser	   r   r   r   r   r   Ú<module>rI      s/   ðñ÷ =Õ <Ý =áÝ2÷"ñ "÷8"ò 8"r   