Ë
    ˜V.j„  ã                   óN  — d 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
r)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*y)!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)ÚConnectionHandler)ÚCelery)ÚTaskc                   ó   — e Zd ZU eed<   y)ÚDjangoDBModuleÚconnectionsN)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__© ó    úVC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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                  | j                  «       «       y # t        t        t
        f$ r Y y w xY w©N)ÚosÚcloseÚfilenoÚAttributeErrorÚOSErrorÚ	TypeError)r$   s    r!   Ú_maybe_close_fdr.   $   s2   € ðÜ
�‰�—‘“ÕøÜœG¤YÐ/ò áðús   ‚#& ¦=¼=c                 ó8   — | j                   dk  rt        d«      ‚y )N)é   é   z)Celery 5.x requires Django 1.11 or later.)ÚVERSIONr   )Údjangos    r!   Ú_verify_django_versionr4   ,   s   € Ø‡~�~˜ÒÜ"Ð#NÓOÐOð  r    Úappr   Úenvr"   c                 ó2  — t         j                  j                  |«      }|rEd| j                  j	                  «       vr)	 ddl}t        |«       t        | «      j                  «       S y# t        $ r% t        j                  t        t        «      «       Y yw xY w)z;Install Django fixup if settings module environment is set.r3   r   N)r(   ÚenvironÚgetÚ
loader_clsÚlowerr3   r4   r"   ÚinstallÚImportErrorÚwarningsÚwarnr   ÚERR_NOT_INSTALLED)r5   r6   ÚSETTINGS_MODULEr3   s       r!   r#   r#   1   s|   € ä—j‘j—n‘n SÓ)€OÙ˜8¨3¯>©>×+?Ñ+?Ó+AÑAð	.Ûô # 6Ô*Ü˜sÓ#×+Ñ+Ó-Ð-Øøô ò 	;Ü�M‰Mœ,Ô'8Ó9Õ:ð ð	;ús   ¿A( Á(+BÂ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y)r"   z"Fixup installed when using Django.c                 ót   — || _         t        j                  €| j                   j                  «        d | _        y r'   )r5   r   Údefault_appÚset_defaultÚ_worker_fixup©Úselfr5   s     r!   Ú__init__zDjangoFixup.__init__B   s-   € ØˆŒÜ×ÑÐ%Ø�H‰H× Ñ Ô"Ø<@ˆÕr    r%   c                 óÆ  — t         j                  j                  dt        j                  «       «       t        d«      | _        | j                  | j                  j                  _        | j                  j                  sd| j                  _        t        j                  j                  | j                  «       t        j                   j                  | j"                  «       | S )Nr   údjango.conf:settingsz%celery.contrib.django.task:DjangoTask)ÚsysÚpathÚinsertr(   Úgetcwdr   Ú	_settingsÚnowr5   ÚloaderÚ_custom_task_cls_usedÚtask_clsr   Úimport_modulesÚconnectÚon_import_modulesÚworker_initÚon_worker_init©rH   s    r!   r<   zDjangoFixup.installH   s�   € ô 	�‰�‰˜œ2Ÿ9™9›;Ô'ä'Ð(>Ó?ˆŒØ"Ÿh™hˆ�‰�‰Ôà�x‰x×-Ò-Ø GˆD�H‰HÔä×Ñ×&Ñ& t×'=Ñ'=Ô>Ü×Ñ×#Ñ# D×$7Ñ$7Ô8Øˆr    c                 óf   — | j                   €t        | j                  «      | _         | j                   S r'   )rF   ÚDjangoWorkerFixupr5   rZ   s    r!   Úworker_fixupzDjangoFixup.worker_fixupX   s+   € à×ÑÐ%Ü!2°4·8±8Ó!<ˆDÔØ×!Ñ!Ð!r    Nc                 ó   — || _         y r'   )rF   )rH   Úvalues     r!   r]   zDjangoFixup.worker_fixup^   s
   € à"ˆÕr    Úkwargsc                 ó8   — | j                   j                  «        y r'   )r]   Úvalidate_models©rH   r`   s     r!   rW   zDjangoFixup.on_import_modulesb   s   € à×Ñ×)Ñ)Õ+r    c                 ó8   — | j                   j                  «        y r'   )r]   r<   rc   s     r!   rY   zDjangoFixup.on_worker_initf   s   € Ø×Ñ×!Ñ!Õ#r    Úutcc                 ól   — |r#t        j                  t        j                  «      S | j	                  «       S r'   )r   rQ   r   re   Ú_now)rH   re   s     r!   rQ   zDjangoFixup.nowi   s"   € Ù-0Œx�|‰|œHŸL™LÓ)ÐA°d·i±i³kÐAr    c                 óh   — ddl m} |j                  «       D �cg c]  }|j                  ‘Œ c}S c c}w )Nr   )Úapps)Údjango.appsri   Úget_app_configsÚname)rH   ri   Úconfigs      r!   Úautodiscover_taskszDjangoFixup.autodiscover_tasksl   s,   € Ý$Ø*.×*>Ñ*>Ô*@ÓAÑ*@ �—“Ð*@ÑAÐAùÒAs   ™/c                 ó   — t        d«      S )Nzdjango.utils.timezone:nowr   rZ   s    r!   rg   zDjangoFixup._nowp   s   € äÐ9Ó:Ð:r    )r5   r   )r%   r"   ©r%   r\   )r_   r\   r%   N©F)r   r   r   Ú__doc__rI   r<   Úpropertyr]   Úsetterr   rW   rY   Úboolr   rQ   r	   Ústrrn   r   rg   r   r    r!   r"   r"   ?   s§   „ Ù,óAóð  ò"ó ð"ð
 ×Ñò#ó ð#ð,¨#ð ,°$ó ,ð$ sð $¨tó $ñB�tð B¨ó BðB D¨¡Ió 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
e
ddf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eddfd„Zdd„Zy)r\   r   r%   Nc                 ó  — || _         | j                   j                  j                  dd «      | _        t	        dt        d«      «      | _        t        d«      | _        t        d«      | _	        t        d«      f| _
        t        d«      | _        y )NÚCELERY_DB_REUSE_MAXr   z	django.dbzdjango.core.cacherK   zdjango.db.utils.InterfaceErrorzdjango.db:DatabaseError)r5   Úconfr9   Údb_reuse_maxr   r   Ú_dbÚ_cacher   rP   Úinterface_errorsÚDatabaseErrorrG   s     r!   rI   zDjangoWorkerFixup.__init__x   sz   € ØˆŒØ ŸH™HŸM™M×-Ñ-Ð.CÀTÓJˆÔÜÐ(¬-¸Ó*DÓEˆŒÜ#Ð$7Ó8ˆŒÜ'Ð(>Ó?ˆŒô Ð;Ó<ð!
ˆÔô ,Ð,EÓFˆÕr    c                 ó,   — dd l }|j                  «        y )Nr   )r3   Úsetup)rH   r3   s     r!   Údjango_setupzDjangoWorkerFixup.django_setup„   s   € ÛØ�‰�r    c                 ó~   — ddl m} | j                  «        t        j                  j                  d«      s |«        y y )Nr   )Ú
run_checksÚCELERY_SKIP_CHECKS)Údjango.core.checksr„   r‚   r(   r8   r9   )rH   r„   s     r!   rb   z!DjangoWorkerFixup.validate_modelsˆ   s,   € Ý1Ø×ÑÔÜ�z‰z�~‰~Ð2Ô3Ù�Lð 4r    c                 óŽ  — t         j                  j                  | j                  «       t         j                  j                  | j
                  «       t         j                  j                  | j                  «       t         j                  j                  | j                  «       | j                  «        | j                  «        | S r'   )r   Úbeat_embedded_initrV   Úclose_databaseÚtask_prerunÚon_task_prerunÚtask_postrunÚon_task_postrunÚworker_process_initÚon_worker_process_initÚclose_cacherZ   s    r!   r<   zDjangoWorkerFixup.installŽ   s‡   € Ü×"Ñ"×*Ñ*¨4×+>Ñ+>Ô?Ü×Ñ×#Ñ# D×$7Ñ$7Ô8Ü×Ñ×$Ñ$ T×%9Ñ%9Ô:Ü×#Ñ#×+Ñ+¨D×,GÑ,GÔHØ×ÑÔØ×ÑÔØˆr    r`   c                 óN  — t         j                  j                  d«      r| j                  «        | j                  j
                  j                  «       D ]-  }|sŒ|j                  sŒ| j                  |j                  «       Œ/ | j                  d¬«       | j                  «        y )NÚFORKED_BY_MULTIPROCESSINGT)Úforce)r(   r8   r9   rb   r|   r   ÚallÚ
connectionÚ_maybe_close_db_fdÚ_close_databaser�   )rH   r`   Úcs      r!   r�   z(DjangoWorkerFixup.on_worker_process_init—   sz   € ô �:‰:�>‰>Ð5Ô6Ø× Ñ Ô"ð —‘×%Ñ%×)Ñ)Ö+ˆAÚ�Q—\“\Ø×'Ñ'¨¯©Õ5ð ,ð
 	×Ñ 4ÐÔ(Ø×ÑÕr    Úfdc                 óF   — 	 t        |«       y # | j                  $ r Y y w xY wr'   )r.   r~   )rH   r™   s     r!   r–   z$DjangoWorkerFixup._maybe_close_db_fd­   s'   € ð	Ü˜BÕøØ×$Ñ$ò 	Ùð	ús   ‚ Ž Ÿ Úsenderr   c                 óT   — t        |j                  dd«      s| j                  «        yy)zCalled before every task.Úis_eagerFN)ÚgetattrÚrequestr‰   ©rH   r›   r`   s      r!   r‹   z DjangoWorkerFixup.on_task_prerun³   s#   € ä�v—~‘~ z°5Ô9Ø×ÑÕ!ð :r    c                 ót   — t        |j                  dd«      s!| j                  «        | j                  «        y y )Nr�   F)rž   rŸ   r‰   r�   r    s      r!   r�   z!DjangoWorkerFixup.on_task_postrun¸   s/   € ä�v—~‘~ z°5Ô9Ø×ÑÔ!Ø×ÑÕð :r    c                 óÌ   — | j                   s| j                  «       S | j                  | j                   dz  k\  rd| _        | j                  «        | xj                  dz  c_        y )Né   r   r0   )r{   r—   Ú_db_recyclesrc   s     r!   r‰   z DjangoWorkerFixup.close_database¾   sX   € Ø× Ò Ø×'Ñ'Ó)Ð)Ø×Ñ × 1Ñ 1°AÑ 5Ò5Ø !ˆDÔØ× Ñ Ô"Ø×Ò˜QÑÖr    r“   c                 ó  — | j                   j                  j                  «       D ]&  }	 |r|j                  «        n|j	                  «        Œ( y # | j
                  $ r Y Œ;| j                  $ r}t        |«      }d|vrd|vr‚ Y d }~Œbd }~ww xY w)NÚclosedznot connected)r|   r   r”   r)   Úclose_if_unusable_or_obsoleter~   r   rv   )rH   r“   ÚconnÚexcÚstr_excs        r!   r—   z!DjangoWorkerFixup._close_databaseÆ   s‚   € Ø—H‘H×(Ñ(×,Ñ,Ö.ˆDð
ÙØ—J‘J•Là×6Ñ6Ô8øñ /øð ×(Ñ(ò ÙØ×%Ñ%ò Ü˜c›(�Ø 7Ñ*¨ÀgÑ/MØÿøðús   ©#AÁBÁ BÁ.BÂBc                 ód   — 	 | j                   j                  «        y # t        t        f$ r Y y w xY wr'   )r}   Úclose_cachesr-   r+   rZ   s    r!   r�   zDjangoWorkerFixup.close_cacheÔ   s.   € ð	Ø�K‰K×$Ñ$Õ&øÜœ>Ð*ò 	Ùð	ús   ‚ �/®/)r5   r   r%   N)r%   Nrp   rq   )r   r   r   r¤   rI   r‚   rb   r<   r   r�   r   r–   r‹   r�   r‰   ru   r—   r�   r   r    r!   r\   r\   u   s¡   „ Ø€Ló
Góóóð¨sð °tó ð, Rð ¨Dó ð" Vð "°sð "¸tó "ð
 fð ¸ð Àó ð sð ¨tó ñ Tð °dó ôr    r\   )r3   r   r%   N)ÚDJANGO_SETTINGS_MODULE)+rr   r(   rL   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.utilsr   Úcelery.app.baser   Úcelery.app.taskr   r   Ú__all__r@   r.   r4   rv   r#   r"   r\   r   r    r!   Ú<module>r¹      s¥   ðÙ $Û 	Û 
Û ß 'Ý #ß ?× ?å .Ý /ç "ß @áÝ Ýå1å&Ý$ô'˜ô 'ð #€ðÐ ð˜ð ˜tó óPñ
ˆxð ˜cð ÀÈ-ÑAXó ÷3;ñ 3;÷lcò cr    