
    leJi                     |   d Z ddlZddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ dd	lmZmZ er2d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&dZ'de
ddfdZ(d#dZ)d$ddde*ded         fdZ+ G d  d          Z, G d! d"          Z-dS )%zDjango-specific customization.    N)datetimetimezone)import_module)IOTYPE_CHECKINGAnyListOptionalcastsymbol_by_name)cached_property)_statesignals)FixupWarningImproperlyConfigured)
ModuleType)Protocol)BaseDatabaseWrapper)ConnectionHandler)Celery)Taskc                       e Zd ZU eed<   dS )DjangoDBModuleconnectionsN)__name__
__module____qualname__r   __annotations__     Z/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/celery/fixups/django.pyr   r      s         &&&&&&r!   r   )DjangoFixupfixupzpEnvironment variable DJANGO_SETTINGS_MODULE is defined
but Django isn't installed.  Won't apply Django fix-ups!
fhreturnc                     	 t          j        |                                            d S # t          t          t
          f$ r Y d S w xY wN)osclosefilenoAttributeErrorOSError	TypeError)r%   s    r"   _maybe_close_fdr/   &   sN    
GY/   s   &* AAdjangor   c                 :    | j         dk     rt          d          d S )N)      z)Celery 5.x requires Django 1.11 or later.)VERSIONr   )r0   s    r"   _verify_django_versionr5   .   s&    ~"#NOOO  r!   DJANGO_SETTINGS_MODULEappr   envr#   c                 T   t           j                            |          }|rd| j                                        vrk	 ddl}t          |           t          |                                           S # t          $ r) t          j        t          t                               Y nw xY wdS )z;Install Django fixup if settings module environment is set.r0   r   N)r)   environget
loader_clslowerr0   r5   r#   installImportErrorwarningswarnr   ERR_NOT_INSTALLED)r7   r8   SETTINGS_MODULEr0   s       r"   r$   r$   3   s    jnnS))O .83>+?+?+A+AAA	.MMM #6***s##++---	  	; 	; 	;M,'899:::::	;
 4s   A2 20B%$B%c                       e Zd ZdZddZddZedd            Zej        dd            Zde	dd
fdZ
de	dd
fdZddedefdZdee         fdZedefd            Zd
S )r#   z"Fixup installed when using Django.r7   r   c                 l    || _         t          j        | j                                          d | _        d S r(   )r7   r   default_appset_default_worker_fixupselfr7   s     r"   __init__zDjangoFixup.__init__D   s4    %H  """<@r!   r&   c                 |   t           j                            dt          j                               t          d          | _        | j        | j        j	        _        | j        j
        sd| j        _        t          j                            | j                   t          j                            | j                   | S )Nr   django.conf:settingsz%celery.contrib.django.task:DjangoTask)syspathinsertr)   getcwdr   	_settingsnowr7   loader_custom_task_cls_usedtask_clsr   import_modulesconnecton_import_modulesworker_initon_worker_initrJ   s    r"   r>   zDjangoFixup.installJ   s     	29;;''''(>??"hx- 	H GDH&&t'=>>>##D$7888r!   DjangoWorkerFixupc                 P    | j         t          | j                  | _         | j         S r(   )rH   r]   r7   r\   s    r"   worker_fixupzDjangoFixup.worker_fixupZ   s&    %!248!<!<D!!r!   valueNc                     || _         d S r(   )rH   )rJ   r`   s     r"   r_   zDjangoFixup.worker_fixup`   s    "r!   kwargsc                 8    | j                                          d S r(   )r_   validate_modelsrJ   rb   s     r"   rY   zDjangoFixup.on_import_modulesd   s    ))+++++r!   c                 8    | j                                          d S r(   )r_   r>   re   s     r"   r[   zDjangoFixup.on_worker_inith   s    !!#####r!   Futcc                 j    |rt          j        t          j                  n|                                 S r(   )r   rS   r   rg   _now)rJ   rg   s     r"   rS   zDjangoFixup.nowk   s&    -0Ax|HL)))diikkAr!   c                 J    ddl m} d |                                D             S )Nr   )appsc                     g | ]	}|j         
S r    )name).0configs     r"   
<listcomp>z2DjangoFixup.autodiscover_tasks.<locals>.<listcomp>p   s    AAAAAAr!   )django.appsrk   get_app_configs)rJ   rk   s     r"   autodiscover_taskszDjangoFixup.autodiscover_tasksn   s4    $$$$$$AA$*>*>*@*@AAAAr!   c                      t          d          S )Nzdjango.utils.timezone:nowr   r\   s    r"   ri   zDjangoFixup._nowr   s    9:::r!   )r7   r   )r&   r#   r&   r]   )r`   r]   r&   N)F)r   r   r   __doc__rK   r>   propertyr_   setterr   rY   r[   boolr   rS   r	   strrs   r   ri   r    r!   r"   r#   r#   A   sG       ,,A A A A     " " " X"
 # # # #,# ,$ , , , ,$s $t $ $ $ $B Bt B B B B BBDI B B B B ;h ; ; ; _; ; ;r!   c                       e Zd ZdZddZddZddZdd	Zd
eddfdZ	ddZ
ddd
eddfdZddd
eddfdZd
eddfdZddZddZdS )r]   r   r7   r   r&   Nc                 D   || _         | j         j                            dd           | _        t	          dt          d                    | _        t          d          | _        t          d          | _	        t          d          f| _
        t          d          | _        d S )NCELERY_DB_REUSE_MAXr   z	django.dbzdjango.core.cacherM   zdjango.db.utils.InterfaceErrorzdjango.db:DatabaseError)r7   confr;   db_reuse_maxr   r   _db_cacher   rR   interface_errorsDatabaseErrorrI   s     r"   rK   zDjangoWorkerFixup.__init__z   s     HM--.CTJJ(-*D*DEE#$788'(>?? ;<<!
 ,,EFFr!   c                 6    dd l }|                                 d S )Nr   )r0   setup)rJ   r0   s     r"   django_setupzDjangoWorkerFixup.django_setup   s    r!   c                     ddl m} |                                  t          j                            d          s |             d S d S )Nr   )
run_checksCELERY_SKIP_CHECKS)django.core.checksr   r   r)   r:   r;   )rJ   r   s     r"   rd   z!DjangoWorkerFixup.validate_models   sV    111111z~~233 	JLLLLL	 	r!   c                 v   t           j                            | j                   t           j                            | j                   t           j                            | j                   t           j                            | j	                   |                                  | 
                                 | S r(   )r   beat_embedded_initrX   close_databasetask_prerunon_task_preruntask_postrunon_task_postrunworker_process_initon_worker_process_initclose_cacher\   s    r"   r>   zDjangoWorkerFixup.install   s    "**4+>???##D$7888$$T%9:::#++D,GHHHr!   rb   c                 :   t           j                            d          r|                                  | j        j                                        D ] }|r|j        r|                     |           !| 	                                 | 
                                 d S )NFORKED_BY_MULTIPROCESSING)r)   r:   r;   rd   r   r   all
connection_maybe_close_db_fd_close_databaser   )rJ   rb   cs      r"   r   z(DjangoWorkerFixup.on_worker_process_init   s     :>>566 	#  """ %))++ 	+ 	+A +Q\ +''*** 	r!   r   r   c                     	 |j         5  t          |j                   d d d            d S # 1 swxY w Y   d S # | j        $ r Y d S w xY wr(   )wrap_database_errorsr/   r   r   )rJ   r   s     r"   r   z$DjangoWorkerFixup._maybe_close_db_fd   s    	' . .---. . . . . . . . . . . . . . . . . .$ 	 	 	DD	s'   8 +8 /8 /8 
AAsenderr   c                 ^    t          |j        dd          s|                                  dS dS )zCalled before every task.is_eagerFN)getattrrequestr   rJ   r   rb   s      r"   r   z DjangoWorkerFixup.on_task_prerun   s:    v~z599 	"!!!!!	" 	"r!   c                     t          |j        dd          s*|                                  |                                  d S d S )Nr   F)r   r   r   r   r   s      r"   r   z!DjangoWorkerFixup.on_task_postrun   sL    v~z599 	!!!	 	r!   c                     | j         s|                                 S | j        | j         dz  k    rd| _        |                                  | xj        dz  c_        d S )N   r   r2   )r   r   _db_recyclesre   s     r"   r   z DjangoWorkerFixup.close_database   si      	*''))) 1A 555 !D  """Qr!   c                 ,   | j         j                                        D ]}	 |                                 | j        j                            |j        i                               di                               d          }|rUt          |d          rEt          j
        t                    5  |                                 d d d            n# 1 swxY w Y   # | j        $ r Y | j        $ r"}t          |          }d|vrd|vr Y d }~d }~ww xY wd S )NOPTIONSpool
close_poolclosedznot connected)r   r   r   r*   rR   	DATABASESr;   aliashasattr
contextlibsuppressKeyErrorr   r   r   rz   )rJ   connpool_enabledexcstr_excs        r"   r   z!DjangoWorkerFixup._close_database   so   H(,,.. 	 	D

#~7;;DJKKOOPY[]^^bbcijj *GD,$?$? *#,X66 * *)))* * * * * * * * * * * * * * *(   %   c((7**g/M/M	 	sB   BC-CCC	CC	C
D&	D/DDc                 j    	 | j                                          d S # t          t          f$ r Y d S w xY wr(   )r   close_cachesr.   r,   r\   s    r"   r   zDjangoWorkerFixup.close_cache   sH    	K$$&&&&&>* 	 	 	DD	s    22)r7   r   r&   N)r&   Nru   )r   r   r&   N)r   r   r   r   rK   r   rd   r>   r   r   r   r   r   r   r   r   r    r!   r"   r]   r]   w   s?       L
G 
G 
G 
G         s t    ,   "V "s "t " " " "
f      s t            r!   r]   )r0   r   r&   N)r6   ).rv   r   r)   rN   r@   r   r   	importlibr   typingr   r   r   r	   r
   r   kombu.utils.importsr   kombu.utils.objectsr   celeryr   r   celery.exceptionsr   r   typesr   r   django.db.backends.base.baser   django.db.utilsr   celery.app.baser   celery.app.taskr   r   __all__rB   r/   r5   rz   r$   r#   r]   r    r!   r"   <module>r      s_   $ $     				 



  ' ' ' ' ' ' ' ' # # # # # # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? . . . . . . / / / / / / " " " " " " " " @ @ @ @ @ @ @ @ '      @@@@@@111111&&&&&&$$$$$$' ' ' ' ' ' ' ' #  t    P P P P
 x c -AX    3; 3; 3; 3; 3; 3; 3; 3;le e e e e e e e e er!   