Ë
    ›QjÃ  ã                   ó¸   — d 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 	 dd	lmZ  e«       Zd
ZdZd„ Z G d„ d«      Zy# e$ r	 dd	lmZ Y Œ&w xY w)zSQLAlchemy session.é    N)Úregister_after_fork)Úcreate_engine)ÚDatabaseError)Úsessionmaker)ÚNullPool)Ú get_exponential_backoff_interval)Údeclarative_base)ÚSessionManageré
   c                 ó$   — | j                  «        y ©N)Ú_after_fork)Úsessions    ú\/var/www/html/truck-me/venv/lib/python3.12/site-packages/celery/backends/database/session.pyÚ_after_fork_cleanup_sessionr      s   € Ø×ÑÕó    c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd	d„Zd„ Zd„ Z	y)
r
   zManage SQLAlchemy sessions.c                 ój   — i | _         i | _        d| _        d| _        t        �t	        | t
        «       y y )NF)Ú_enginesÚ	_sessionsÚforkedÚpreparedr   r   ©Úselfs    r   Ú__init__zSessionManager.__init__    s4   € ØˆŒØˆŒØˆŒØˆŒÜÐ*Ü Ô&AÕBð +r   c                 ó   — d| _         y )NT)r   r   s    r   r   zSessionManager._after_fork(   s	   € Øˆ�r   c                 ó*  — | j                   r	 | j                  |   S |j	                  «       D ��ci c]  \  }}|j                  d«      s||“Œ }}}t        |fdt        i|¤ŽS # t        $ r  t        |fi |¤Žx}| j                  |<   |cY S w xY wc c}}w )NÚpoolÚ	poolclass)r   r   ÚKeyErrorr   ÚitemsÚ
startswithr   )r   ÚdburiÚkwargsÚengineÚkÚvs         r   Ú
get_enginezSessionManager.get_engine+   s¡   € Ø�;Š;ðØ—}‘} UÑ+Ð+ð
 (.§|¡|£~÷ 0™t˜q !ØŸ,™, vÔ.ð ˜‘dð 0ˆFñ 0ä  ÑE´(ÐE¸fÑEÐEøô ò Ü0=¸eÑ0NÀvÑ0NÐN�˜Ÿ™ uÑ-Ø’ðüó0s   ŽA# °BÁ#&BÂBc                 óÐ   —  | j                   |fi |¤Ž}| j                  r:|s|| j                  vrt        |¬«      | j                  |<   || j                  |   fS |t        |¬«      fS )N)Úbind)r(   r   r   r   )r   r#   Úshort_lived_sessionsr$   r%   s        r   Úcreate_sessionzSessionManager.create_session7   sc   € Ø �—‘ Ñ1¨&Ñ1ˆØ�;Š;Ù# u°D·N±NÑ'BÜ(4¸&Ô(A�—‘˜uÑ%Ø˜4Ÿ>™>¨%Ñ0Ð0Ð0Ø”|¨Ô0Ð0Ð0r   c                 ó   — | j                   s,d}	 	 t        j                  j                  |«       	 d| _         y y # t        $ r9 |t
        k  r,t        d|dd«      }t        j                  |dz  «       |dz  }n‚ Y nw xY wŒp)Nr   Tr   iè  é   )	r   ÚResultModelBaseÚmetadataÚ
create_allr   ÚPREPARE_MODELS_MAX_RETRIESr   ÚtimeÚsleep)r   r%   ÚretriesÚsleep_amount_mss       r   Úprepare_modelszSessionManager.prepare_models?   s“   € Ø�}Š}ð
 ˆGØðÜ#×,Ñ,×7Ñ7¸Ô?ð Ø ˆD�Mð) øô %ò ØÔ!;Ò;Ü*JØ ¨¨tó+˜ô Ÿ
™
 ?°TÑ#9Ô:Ø 1™™àñ  ðúð s   ‘: º?A<Á;A<c                 ó^   —  | j                   |fi |¤Ž\  }}| j                  |«        |«       S r   )r,   r7   )r   r#   r$   r%   r   s        r   Úsession_factoryzSessionManager.session_factoryV   s3   € Ø-˜$×-Ñ-¨eÑ>°vÑ>‰ˆ�Ø×Ñ˜FÔ#Ù‹yÐr   N)F)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r(   r,   r7   r9   © r   r   r
   r
      s%   „ Ù%òCòò
Fó1ò!ó.r   r
   )r=   r3   Úkombu.utils.compatr   Ú
sqlalchemyr   Úsqlalchemy.excr   Úsqlalchemy.ormr   Úsqlalchemy.poolr   Úcelery.utils.timer   r	   ÚImportErrorÚsqlalchemy.ext.declarativer/   Ú__all__r2   r   r
   r>   r   r   ú<module>rH      s]   ðÙ Û å 2Ý $Ý (Ý 'Ý $å >ð<Ý/ñ
 #Ó$€à
€àÐ ò÷<ò <øð ò <ç;ð<ús   ¬A ÁAÁA