§
    ¨MºfN  ã                   óœ   — d dl Z d dl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 d dlmZ  G d„ d	e¦  «        Zd
„ Z G d„ de¦  «        ZdS )é    N)Úcopy_context)ÚPlotlyJSONEncoder)Úcontext_value)ÚAttributeDict)ÚPreventUpdate)ÚBaseLongCallbackManagerc                   ób   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zˆ xZS )ÚCeleryManagerz=Manage background execution of callbacks with a celery queue.Nc                 óR  •— 	 ddl }ddlm} n"# t          $ r}t          d¦  «        |‚d}~ww xY wt	          ||j        ¦  «        st          d¦  «        ‚t	          |j        |¦  «        rt          d¦  «        ‚|| _        || _	        t          ¦   «                              |¦  «         dS )a‹  
        Long callback manager that runs callback logic on a celery task queue,
        and stores results using a celery result backend.

        :param celery_app:
            A celery.Celery application instance that must be configured with a
            result backend. See the celery documentation for information on
            configuration options.
        :param cache_by:
            A list of zero-argument functions.  When provided, caching is enabled and
            the return values of these functions are combined with the callback
            function's input arguments and source code to generate cache keys.
        :param expire:
            If provided, a cache entry will be removed when it has not been accessed
            for ``expire`` seconds.  If not provided, the lifetime of cache entries
            is determined by the default behavior of the celery result backend.
        r   N)ÚDisabledBackendzuCeleryLongCallbackManager requires extra dependencies which can be installed doing

    $ pip install "dash[celery]"
z-First argument must be a celery.Celery objectz8Celery instance must be configured with a result backend)ÚceleryÚcelery.backends.baser   ÚImportErrorÚ
isinstanceÚCeleryÚ
ValueErrorÚbackendÚhandleÚexpireÚsuperÚ__init__)ÚselfÚ
celery_appÚcache_byr   r   r   Úmissing_importsÚ	__class__s          €úi/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/dash/long_callback/managers/celery_manager.pyr   zCeleryManager.__init__   sè   ø€ ð$	#ØˆMˆMˆMðð ð ð ð ð ð øõ ð 	#ð 	#ð 	#Ýð&ñô ð
 #ð#øøøøð	#øøøõ ˜* f¤mÑ4Ô4ð 	NÝÐLÑMÔMÐMå�jÔ(¨/Ñ:Ô:ð 	YÝÐWÑXÔXÐXà ˆŒØˆŒÝ‰Œ×Ò˜Ñ"Ô"Ð"Ð"Ð"s   ƒ
 Ž
-˜(¨-c                 óL   — |€d S | j         j                             |¦  «         d S ©N)r   ÚcontrolÚ	terminate©r   Újobs     r   Úterminate_jobzCeleryManager.terminate_job9   s+   € Øˆ;ØˆFàŒÔ×%Ò% cÑ*Ô*Ð*Ð*Ð*ó    c                 óp   — |                       |¦  «        }|r|j        dv r|                      |¦  «        S dS )N)ÚFAILUREÚREVOKEDF)Úget_taskÚstatusr$   )r   r#   Útasks      r   Úterminate_unhealthy_jobz%CeleryManager.terminate_unhealthy_job?   sA   € Ø�}Š}˜SÑ!Ô!ˆØð 	+�D”KÐ#9Ð9Ð9Ø×%Ò% cÑ*Ô*Ð*Øˆur%   c                 óB   — |                       |¦  «        }|o|j        dv S )N)ÚPENDINGÚRECEIVEDÚSTARTEDÚRETRYÚPROGRESS)r)   r*   )r   r#   Úfutures      r   Újob_runningzCeleryManager.job_runningE   s.   € Ø—’˜sÑ#Ô#ˆØð 
˜&œ-ð ,
ð 
ð 	
r%   c                 ó0   — t          || j        ||¦  «        S r   )Ú_make_job_fnr   )r   ÚfnÚprogressÚkeys       r   Úmake_job_fnzCeleryManager.make_job_fnO   s   € Ý˜B ¤¨X°sÑ;Ô;Ð;r%   c                 ó>   — |r| j                              |¦  «        S d S r   )r   ÚAsyncResultr"   s     r   r)   zCeleryManager.get_taskR   s%   € Øð 	0Ø”;×*Ò*¨3Ñ/Ô/Ð/àˆtr%   c                 óD   — | j         j                             |¦  «         d S r   )r   r   Údelete©r   r9   s     r   Úclear_cache_entryzCeleryManager.clear_cache_entryX   s!   € ØŒÔ×"Ò" 3Ñ'Ô'Ð'Ð'Ð'r%   c                 óf   — |                      ||                      |¦  «        ||¦  «        }|j        S r   )ÚdelayÚ_make_progress_keyÚtask_id)r   r9   Újob_fnÚargsÚcontextr+   s         r   Úcall_job_fnzCeleryManager.call_job_fn[   s/   € Ø�|Š|˜C ×!8Ò!8¸Ñ!=Ô!=¸tÀWÑMÔMˆØŒ|Ðr%   c                 óØ   — |                       |¦  «        }| j        j                             |¦  «        }|r3| j        j                             |¦  «         t          j        |¦  «        S d S r   )rC   r   r   Úgetr>   ÚjsonÚloads)r   r9   Úprogress_keyÚprogress_datas       r   Úget_progresszCeleryManager.get_progress_   sc   € Ø×.Ò.¨sÑ3Ô3ˆØœÔ+×/Ò/°Ñ=Ô=ˆØð 	-ØŒKÔ×&Ò& |Ñ4Ô4Ð4Ý”:˜mÑ,Ô,Ð,àˆtr%   c                 óD   — | j         j                             |¦  «        d uS r   )r   r   rJ   r?   s     r   Úresult_readyzCeleryManager.result_readyh   s    € ØŒ{Ô"×&Ò& sÑ+Ô+°4Ð7Ð7r%   c                 óŠ  — | j         j                             |¦  «        }|€| j        S t	          j        |¦  «        }| j        €|                      |¦  «         n,| j        r%| j         j                             || j        ¦  «         |                      |  	                    |¦  «        ¦  «         |  
                    |¦  «         |S r   )r   r   rJ   Ú	UNDEFINEDrK   rL   r   r@   r   rC   r$   )r   r9   r#   Úresults       r   Ú
get_resultzCeleryManager.get_resultk   s¹   € à”Ô$×(Ò(¨Ñ-Ô-ˆØˆ>Ø”>Ð!å”˜FÑ#Ô#ˆð Œ=Ð Ø×"Ò" 3Ñ'Ô'Ð'Ð'àŒ{ð =à”Ô#×*Ò*¨3°´Ñ<Ô<Ð<Ø×Ò˜t×6Ò6°sÑ;Ô;Ñ<Ô<Ð<à×Ò˜3ÑÔÐØˆr%   )NNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r,   r4   r:   r)   r@   rH   rO   rQ   rU   Ú__classcell__)r   s   @r   r
   r
      sß   ø€ € € € € ØGÐGð'#ð '#ð '#ð '#ð '#ð '#ðR+ð +ð +ðð ð ð
ð 
ð 
ð<ð <ð <ð <ðð ð ð(ð (ð (ðð ð ðð ð ð8ð 8ð 8ðð ð ð ð ð ð r%   r
   c                 óh   ‡ ‡‡— |j         Š|                     d|› �¬¦  «        dˆˆ ˆfd„	¦   «         }|S )NÚlong_callback_)Únamec                 ó†   •‡ ‡‡‡‡— ˆˆfd„}‰
r|gng Št          ¦   «         }ˆˆˆ	ˆˆ ˆfd„}|                     |¦  «         d S )Nc                 ó¤   •— t          | t          t          f¦  «        s| g} ‰                     ‰t	          j        | t          ¬¦  «        ¦  «         d S )N©Úcls)r   ÚlistÚtupleÚsetrK   Údumpsr   )Úprogress_valueÚcacherM   s    €€r   Ú_set_progressz3_make_job_fn.<locals>.job_fn.<locals>._set_progress…   sK   ø€ Ý˜n­tµU¨mÑ<Ô<ð 2Ø"0Ð!1�à�IŠI�l¥D¤J¨~ÕCTÐ$UÑ$UÔ$UÑVÔVÐVÐVÐVr%   c            
      ó”  •— t          di ‰¤Ž} d| _        t          j        | ¦  «         	 t	          ‰t
          ¦  «        r	 ‰‰i ‰¤Ž}n1t	          ‰t          t          f¦  «        r ‰g ‰¢‰¢R Ž }n
 ‰g ‰¢‰‘R Ž }‰                     ‰t          j	        |t          ¬¦  «        ¦  «         d S # t          $ r5 ‰                     ‰t          j	        ddit          ¬¦  «        ¦  «         Y d S t          $ rV}‰                     ‰t          j	        dt          |¦  «        t          j        ¦   «         dœi¦  «        ¦  «         Y d }~d S d }~ww xY w)NFr`   Ú_dash_no_updateÚlong_callback_error)ÚmsgÚtb© )r   Úignore_register_pager   rd   r   Údictrb   rc   rK   re   r   r   Ú	ExceptionÚstrÚ	tracebackÚ
format_exc)	ÚcÚuser_callback_outputÚerrrg   rG   r7   Úmaybe_progressÚ
result_keyÚuser_callback_argss	      €€€€€€r   Úrunz)_make_job_fn.<locals>.job_fn.<locals>.run�   sÖ  ø€ ÝÐ(Ð( Ð(Ð(ˆAØ%*ˆAÔ"ÝÔ˜aÑ Ô Ð ðÝÐ0µ$Ñ7Ô7ð SØ+-¨2¨~Ð+TÐASÐ+TÐ+TÐ(Ð(ÝÐ 2µT½5°MÑBÔBð SØ+-¨2Ð+S¨~Ð+SÐ@RÐ+SÐ+SÐ+SÐ(Ð(à+-¨2Ð+R¨~Ð+RÐ?QÐ+RÐ+RÐ+RÐ(ð, —	’	Ø¥¤
Ð+?ÕEVÐ WÑ WÔ Wñô ð ð ð øõ+ !ð ð ð à—	’	ØÝ”JØ*Ð,=Ð>ÕDUðñ ô ñô ð ð ð ð õ ð ð ð Ø—	’	ØÝ”Jà1Ý'*¨3¡x¤xÝ&/Ô&:Ñ&<Ô&<ð4ð 4ðñô ñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøøðøøøs   ªAB* Â*;EÃ(	EÃ1AEÅE)r   r{   )ry   rM   rz   rG   rh   Úctxr{   rx   rg   r7   r8   s   ````   @€€€r   rE   z_make_job_fn.<locals>.job_fnƒ   s�   øøøøøø€ ð	Wð 	Wð 	Wð 	Wð 	Wð 	Wð -5Ð<˜-˜˜¸"ˆå‰nŒnˆð"	ð "	ð "	ð "	ð "	ð "	ð "	ð "	ð "	ð "	ðH 	�Š�‰Œˆˆˆr%   r   )r   r+   )r7   r   r8   r9   rE   rg   s   ` `  @r   r6   r6   €   s_   øøø€ ØÔ€Eà‡_‚_Ð0¨3Ð0Ð0€_Ñ1Ô1ð/ð /ð /ð /ð /ð /ð /ñ 2Ô1ð/ðb €Mr%   c                   ó   — e Zd ZdZdS )ÚCeleryLongCallbackManagerz9Deprecated: use `from dash import CeleryManager` instead.N)rV   rW   rX   rY   rn   r%   r   r~   r~   ¸   s   € € € € € ØCÐCÐCÐCr%   r~   )rK   rs   Úcontextvarsr   Ú_plotly_utils.utilsr   Údash._callback_contextr   Údash._utilsr   Údash.exceptionsr   Údash.long_callback.managersr   r
   r6   r~   rn   r%   r   ú<module>r…      s  ðØ €€€Ø Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $à 1Ð 1Ð 1Ð 1Ð 1Ð 1à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø %Ð %Ð %Ð %Ð %Ð %Ø )Ð )Ð )Ð )Ð )Ð )Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðpð pð pð pð pÐ+ñ pô pð pðf5ð 5ð 5ðpDð Dð Dð Dð D ñ Dô Dð Dð Dð Dr%   