§
    	ÊjÚ  ã                  ó’   — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZ dd	lmZ  ej        e¦  «        Zdd„Zdd„ZdS )a"  Background session keepalive.

muse.ai sessions expire unless refreshed; this loop periodically asks the active
driver to renew each account and merges refreshed cookies back into the pool.
Drivers that do not support renewal simply raise ``FeatureNotImplemented`` and
the loop skips them.
é    )ÚannotationsNé   )Ú
MuseDriver)ÚFeatureNotImplementedÚUpstreamAuthErroré   )ÚAccountStatus)ÚAccountPoolÚpoolr
   Údriverr   Ú
account_idÚstrÚreturnÚdictc              ƒ  ó¦  K  — |                       |¦  «        }|€dddœS 	 |                     |¦  «        ƒ d {V —†}nu# t          $ r}d|j        dœcY d }~S d }~wt          $ rL}t
          j        |_        |j        |_        |  	                    |¦  «        ƒ d {V —† d|j        dœcY d }~S d }~ww xY w|j
                             |j
        ¦  «         |j                             |j        ¦  «         |j                             |j        ¦  «         t          j        ¦   «         |j        d<   |  	                    |¦  «        ƒ d {V —† |j        |j        dœS )NFz	not found)ÚokÚerrorÚ
renewed_at)r   Úmeta)ÚgetÚrenew_sessionr   Úmessager   r	   ÚINVALIDÚstatusÚ
last_errorÚupsertÚcookiesÚupdateÚcookie_expiresr   Útimer   )r   r   r   ÚaccÚinfoÚexcs         ú7C:\Projects\Muse2API\src\muse2api\accounts\keepalive.pyÚrenew_accountr%      s’  è è € Ø
�(Š(�:Ñ
Ô
€CØ
€{Ø kÐ2Ð2Ð2ð3Ø×)Ò)¨#Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ˆˆøÝ ð 3ð 3ð 3Ø c¤kÐ2Ð2Ð2Ð2Ð2Ð2Ð2Ð2øøøøÝð 3ð 3ð 3Ý"Ô*ˆŒ
ØœˆŒØ�kŠk˜#ÑÔÐÐÐÐÐÐÐØ c¤kÐ2Ð2Ð2Ð2Ð2Ð2Ð2Ð2øøøøð	3øøøð „K×Ò�t”|Ñ$Ô$Ð$ØÔ×Ò˜dÔ1Ñ2Ô2Ð2Ø„H‡O‚O�D”IÑÔÐÝ!œY™[œ[€C„Hˆ\ÑØ
�+Š+�cÑ
Ô
ÐÐÐÐÐÐÐØ”' 4¤9Ð-Ð-Ð-s.    < ¼
B.Á	AÁB.ÁB.Á"AB)Â#B.Â)B.ÚintervalÚfloatÚNonec              ƒ  óÞ  K  — t                                d|¦  «         	 t          j        |¦  «        ƒ d {V —† |                      ¦   «         D ] }|j        r|j        t          j        k    rŒ	 t          | ||j
        ¦  «        ƒ d {V —†}t                                d|j
        |                     d¦  «        ¦  «         Œq# t          $ r# t                                d|j
        ¦  «         Y Œ�w xY wŒÐ)Nz%keepalive loop started (interval=%ss)Tzkeepalive %s -> %sr   zkeepalive failed for %s)Úlogr"   ÚasyncioÚsleepÚallÚenabledr   r	   r   r%   Úidr   Ú	ExceptionÚ	exception)r   r   r&   r!   Úresults        r$   Úkeepalive_loopr3   -   s  è è € Ý‡H‚HÐ4°hÑ?Ô?Ð?ð	AÝŒm˜HÑ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø—8’8‘:”:ð 	Að 	AˆCØ”;ð  #¤*µÔ0EÒ"EÐ"EØðAÝ,¨T°6¸3¼6ÑBÔBÐBÐBÐBÐBÐBÐB�Ý—’Ð-¨s¬v°v·z²zÀ$Ñ7GÔ7GÑHÔHÐHÐHøÝð Að Að AÝ—’Ð7¸¼Ñ@Ô@Ð@Ð@Ð@ðAøøøð	As   Á-AB>Â>*C+Ã*C+)r   r
   r   r   r   r   r   r   )r   r
   r   r   r&   r'   r   r(   )Ú__doc__Ú
__future__r   r+   Úloggingr    Údrivers.baser   Úerrorsr   r   Úmodelr	   r   r
   Ú	getLoggerÚ__name__r*   r%   r3   © ó    r$   ú<module>r>      sÖ   ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€à %Ð %Ð %Ð %Ð %Ð %Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à€gÔ˜Ñ!Ô!€ð.ð .ð .ð .ð,Að Að Að Að Að Ar=   