Ë
    —V.jh3  ã                   óì  — d Z ddlZ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 dd	lmZ dd
lmZ ddlmZmZmZ ddlmZ ddlmZmZmZmZm Z m!Z!m"Z" dZ#dZ$ ejJ                  dejL                  «      Z'dZ(dZ)dZ*d„ Z+ G d„ de«      Z,ejZ                  fd„Z.ejZ                  fd„Z/ edd«      Z0 e0e ee/e(«      Z1 e0eee.e)«      Z2	 	 d$d„Z3 G d„ d«      Z4d„ Z5d „ Z6d!„ Z7d"„ Z8eefd#„Z9y)%z?App utilities: Compat settings, bug-report tool, pickling apps.é    N)Ú
namedtuple)ÚMapping)Údeepcopy)Ú
ModuleType)Úmaybe_sanitize_url)ÚImproperlyConfigured)Úpyimplementation)ÚConfigurationView)Úimport_from_cwdÚqualnameÚsymbol_by_name©Úprettyé   )Ú_OLD_DEFAULTSÚ_OLD_SETTING_KEYSÚ_TO_NEW_KEYÚ_TO_OLD_KEYÚDEFAULTSÚSETTING_KEYSÚfind)ÚSettingsÚappstrÚ	bugreportÚfilter_hidden_settingsÚfind_appa   
software -> celery:{celery_v} kombu:{kombu_v} py:{py_v}
            billiard:{billiard_v} {driver_v}
platform -> system:{system} arch:{arch}
            kernel version:{kernel_version} imp:{py_i}
loader   -> {loader}
settings -> transport:{transport} results:{results}

{human_settings}
z=API|TOKEN|KEY|SECRET|PASS|PROFANITIES_LIST|SIGNATURE|DATABASEzk

Cannot mix new and old setting keys, please rename the
following settings to the new format:

{renames}

z·

Cannot mix new setting names with old setting names, please
rename the following settings to use the old format:

{renames}

Or change all of the settings to use the new format :)

z{replace:<36} -> {with_}c                 ó@   — | j                   xs d› dt        | «      d›�S )z1String used in __repr__ etc, to id app instances.Ú__main__z at z#x)ÚmainÚid)Úapps    úRC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\celery/app/utils.pyr   r   A   s#   € à�h‰hÒ$˜*Ð% T¬"¨S«'°"¨Ð6Ð6ó    c                   óÖ   ‡ — e Zd ZdZddœˆ fd„
Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed	„ «       Z
ed
„ «       Zed„ «       Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zdd„Zdd„Zd„ Zˆ xZS )r   zsCelery settings object.

    .. seealso:

        :ref:`configuration` for a full list of configuration keys.

    N)Údeprecated_settingsc                ó2   •— t        ‰| �  |i |¤Ž || _        y ©N)ÚsuperÚ__init__r%   )Úselfr%   ÚargsÚkwargsÚ	__class__s       €r"   r)   zSettings.__init__O   s   ø€ Ü‰Ñ˜$Ð) &Ò)à#6ˆÕ r#   c                 ó‚   — t         j                  j                  d«      xs | j                  d«      xs | j                  S )NÚCELERY_BROKER_READ_URLÚbroker_read_url©ÚosÚenvironÚgetÚ
broker_url©r*   s    r"   r0   zSettings.broker_read_urlT   s8   € ô �J‰J�N‰NÐ3Ó4ò Ø�H‰HÐ&Ó'òà�O‰Oð	
r#   c                 ó‚   — t         j                  j                  d«      xs | j                  d«      xs | j                  S )NÚCELERY_BROKER_WRITE_URLÚbroker_write_urlr1   r6   s    r"   r9   zSettings.broker_write_url\   s8   € ô �J‰J�N‰NÐ4Ó5ò Ø�H‰HÐ'Ó(òà�O‰Oð	
r#   c                 óh   — t         j                  j                  d«      xs | j                  dd«      S )NÚCELERY_BROKER_URLr5   Úbroker_host©r2   r3   r4   Úfirstr6   s    r"   r5   zSettings.broker_urld   s-   € ô �J‰J�N‰NÐ.Ó/ò 4Ø�J‰J�| ]Ó3ð	
r#   c                 óh   — t         j                  j                  d«      xs | j                  dd«      S )NÚCELERY_RESULT_BACKENDÚresult_backendr=   r6   s    r"   rA   zSettings.result_backendk   s0   € ô �J‰J�N‰NÐ2Ó3ò BØ�J‰JÐ'Ð)@ÓAð	
r#   c                 ó&   — | j                  dd«      S )NÚtask_default_exchangeÚtask_default_queue©r>   r6   s    r"   rC   zSettings.task_default_exchanger   s   € à�z‰zØ#Ø ó
ð 	
r#   c                 ó&   — | j                  dd«      S )NÚtask_default_routing_keyrD   rE   r6   s    r"   rG   z!Settings.task_default_routing_keyy   s   € à�z‰zØ&Ø ó
ð 	
r#   c                 ó&   — | j                  dd«      S )NÚtimezoneÚ	TIME_ZONErE   r6   s    r"   rI   zSettings.timezone€   s   € ð �z‰z˜* kÓ2Ð2r#   c                 ó4   — t        i | j                  dd «      S )z7Return the current configuration, but without defaults.Néÿÿÿÿ)r   Úmapsr6   s    r"   Úwithout_defaultszSettings.without_defaults…   s   € ô ˜˜DŸI™I c r˜NÓ+Ð+r#   c                 ó&   — || j                  «       v S r'   )rN   )r*   Úkeys     r"   Úvalue_set_forzSettings.value_set_forŠ   s   € Ø�d×+Ñ+Ó-Ð-Ð-r#   c                 ó   — t        ||«      S )aÙ  Search for option by name.

        Example:
            >>> from proj.celery import app
            >>> app.conf.find_option('disable_rate_limits')
            ('worker', 'prefetch_multiplier',
             <Option: type->bool default->False>))

        Arguments:
            name (str): Name of option, cannot be partial.
            namespace (str): Preferred name-space (``None`` by default).
        Returns:
            Tuple: of ``(namespace, key, type)``.
        )r   ©r*   ÚnameÚ	namespaces      r"   Úfind_optionzSettings.find_option�   s   € ô �D˜)Ó$Ð$r#   c                 óF   —  | j                   | j                  ||«      dd Ž S )z6Shortcut to ``get_by_parts(*find_option(name)[:-1])``.NrL   )Úget_by_partsrV   rS   s      r"   Úfind_value_for_keyzSettings.find_value_for_keyž   s)   € à ˆt× Ñ  $×"2Ñ"2°4¸Ó"CÀCÀRÐ"HÐIÐIr#   c                 ó8   — | dj                  d„ |D «       «         S )zÙReturn the current value for setting specified as a path.

        Example:
            >>> from proj.celery import app
            >>> app.conf.get_by_parts('worker', 'disable_rate_limits')
            False
        Ú_c              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wr'   © )Ú.0Úparts     r"   Ú	<genexpr>z(Settings.get_by_parts.<locals>.<genexpr>ª   s   è ø€ Ð<©e d²tœT©eùó   ‚Š)Újoin)r*   Úpartss     r"   rX   zSettings.get_by_parts¢   s   € ð �C—H‘HÑ<©eÓ<Ó<Ñ=Ð=r#   c                 ó2   — 	 | d    | S # t         $ r Y | S w xY w)NÚ	__bogus__)ÚKeyErrorr6   s    r"   ÚfinalizezSettings.finalize¬   s/   € ð	Ø�Òð ˆøô ò 	ØØˆð	ús   ‚	 ‰	•c           	      ó  — |rt         nd„ }t        t        «      }| j                  «        |r| n| j	                  «       } ||j                  «       D ��ci c]  \  }}|j                  d«      s||vr||“Œ c}}«      S c c}}w )Nc                 ó   — | S r'   r]   )Úvs    r"   Ú<lambda>z Settings.table.<locals>.<lambda>¶   s   € Ár#   r[   )r   ÚdirÚdictrg   rN   ÚitemsÚ
startswith)r*   Úwith_defaultsÚcensoredÚfiltÚdict_membersÚsettingsÚkrj   s           r"   ÚtablezSettings.tableµ   s   € Ù)1Õ%±{ˆÜœ4“yˆØ�‰ŒÙ(‘4¨d×.CÑ.CÓ.EˆÙØ%Ÿ^™^Ô-ô
Ù-‘T�Q˜Ø—<‘< Ô$¨°,Ñ)>ð ˆq‰DÐ-ò
ó ð 	ùó 
s   Á"A>
c                 ón   — dj                  d„ | j                  ||«      j                  «       D «       «      S )z;Return a human readable text showing configuration changes.Ú
c              3   óF   K  — | ]  \  }}|› d t        |d¬«      › �–— Œ y­w)z: é2   )ÚwidthNr   )r^   rP   Úvalues      r"   r`   z$Settings.humanize.<locals>.<genexpr>Á   s0   è ø€ ð KáI‘
��Uð ˆe�2”f˜U¨"Ô-Ð.Ô/ÙIùs   ‚!)rb   rv   rn   )r*   rp   rq   s      r"   ÚhumanizezSettings.humanize¿   s8   € à�y‰yñ Kà"Ÿj™j¨¸ÓA×GÑGÔIóKó Kð 	Kr#   c                 ó–   — | j                   r=ddlm} ddlm} | j                   D ]!  }|j                  d|›d�dd||   › d�¬	«       Œ# y
y)Nr   )r   )Ú
deprecatedzThe z settingz6.0.0zUse the z instead)ÚdescriptionÚremovalÚalternativeTF)r%   Úcelery.app.defaultsr   Úcelery.utilsr   Úwarn)r*   r   r   Úsettings       r"   Úmaybe_warn_deprecated_settingsz'Settings.maybe_warn_deprecated_settingsÅ   s[   € à×#Ò#Ý7Ý/Ø×3Ô3�Ø—‘¨d°7°+¸XÐ,FØ(/Ø.6°{À7Ñ7KÐ6LÈHÐ,Uð  õ Wð 4ð
 àr#   )Ú )Úcelery)FT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   Úpropertyr0   r9   r5   rA   rC   rG   rI   rN   rQ   rV   rY   rX   rg   rv   r}   r‡   Ú__classcell__)r-   s   @r"   r   r   F   sÍ   ø„ ñð 37ö 7ð
 ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ð ñ3ó ð3ò,ò
.ó%ó"Jò>òóóKör#   r   c                 ó   —  || | «      S r'   r]   ©rP   Úconverts     r"   Ú_new_key_to_oldr“   Ô   ó   € Ù�3˜ÓÐr#   c                 ó   —  || | «      S r'   r]   r‘   s     r"   Ú_old_key_to_newr–   Ø   r”   r#   Úsettings_info_t)Údefaultsr’   Úkey_tÚ	mix_errorc           
      ó®  ‡— |si n|}|s
t        «       n|}|st        n|}|st        n|}| }| €|i } }t        |j                  «       «      |z
  }|j	                  |«      }|j	                  |«      }	d Š|r+t
        |	cŠ}
|	r t        |	«      t        |«      kD  r	t        |cŠ}
|	r.‰s	t        |cŠ}
|r*t        |«      t        |	«      kD  rt
        |	cŠ}
n	t
        |	cŠ}
|rt
        t        «       cŠ}

D �ch c]  }‰j                  |   |vsŒ|’Œ }}|rFt        ‰j                  j                  dj                  ˆfd„t        |«      D «       «      ¬«      «      ‚|j                  «       D ��ci c]"  \  }}‰j                  j                  ||«      |“Œ$ }}}t!        t#        ‰j$                  «      fi |¤Ž}t'        || |gt(        t*        f|	|¬«      S c c}w c c}}w )Nrx   c              3   óf   •K  — | ](  }t         j                  |‰j                  |   ¬ «      –— Œ* y­w))ÚreplaceÚwith_N)ÚFMT_REPLACE_SETTINGÚformatr’   )r^   rP   Úinfos     €r"   r`   z"detect_settings.<locals>.<genexpr>  s3   øè ø€ ð K
á*�ô  ×&Ñ&¨s¸$¿,¹,ÀsÑ:KÐ&×LÙ*ùs   ƒ.1)Úrenames)r%   Úprefix)Úsetr   r   ÚkeysÚintersectionÚ_settings_infoÚlenÚ_old_settings_infor’   r   rš   r    rb   Úsortedrn   r4   rm   r   r˜   r   r–   r“   )ÚconfÚpreconfÚignore_keysr£   Úall_keysÚold_keysÚsourceÚhaveÚ	is_in_newÚ	is_in_oldÚleftrP   Úreally_leftru   rj   r˜   r¡   s                   @r"   Údetect_settingsr¶   è   sØ  ø€ á‰b W€GÙ*”#”%°€KÙ#+�|°€HÙ(0Õ °h€Hà€FØ€|Ø �ˆÜˆv�{‰{‹}Ó Ñ+€DØ×!Ñ! (Ó+€IØ×!Ñ! (Ó+€Ià€DÙä# Yˆ
ˆˆdÙœ˜Y›¬#¨i«.Ò8ä+¨YˆJˆD�$ÙáÜ+¨YˆJˆD�$Ùœ˜Y›¬#¨i«.Ò8ä'¨ˆJˆD‘$ô $ Yˆ
ˆˆdáä#¤S£Uˆ
ˆˆdñ #'ÓH¡$˜3¨$¯,©,°sÑ*;À4Ò*G’3 $€KÐHÙô # 4§>¡>×#8Ñ#8ÀÇÁó K
ä˜kÔ*óK
ó B
Ð#8ó $ó ð 	ð
 6=·]±]´_ÔE±_©T¨Q°ˆt�|‰|×Ñ  1Ó% qÑ(°_€GÑEÜ”H˜TŸ]™]Ó+Ñ7¨wÑ7€HÜØ�$˜Ð!Ü	œ/Ð*Ø%Øô	ð ùò Iùó Fs   Ã/GÄGÅ''Gc                   ó2   — e Zd ZdZd„ Zd„ Zd„ Z	 dd„Zd„ Zy)	Ú
AppPicklerz*Old application pickler/unpickler (< 3.1).c                 óp   —  | j                   |Ž } | j                  |fi |¤Ž} | j                  |fi |¤Ž |S r'   )Úbuild_kwargsÚ	constructÚprepare)r*   Úclsr+   r,   r!   s        r"   Ú__call__zAppPickler.__call__$  sA   € Ø"�×"Ñ" DÐ)ˆØˆd�n‰n˜SÑ+ FÑ+ˆØˆ�‰�SÑ#˜FÒ#Øˆ
r#   c                 ó@   — |j                   j                  |d   «       y )NÚchanges)r«   Úupdate)r*   r!   r,   s      r"   r¼   zAppPickler.prepare*  s   € Ø�‰�‰˜˜yÑ)Õ*r#   c                 ó    —  | j                   |Ž S r'   )Úbuild_standard_kwargs)r*   r+   s     r"   rº   zAppPickler.build_kwargs-  s   € Ø)ˆt×)Ñ)¨4Ð0Ð0r#   Nc                 ó   — ||||||||d|
dœ
S )NF)
r   ÚloaderÚbackendÚamqprÀ   ÚeventsÚlogÚcontrolÚset_as_currentÚconfig_sourcer]   )r*   r   rÀ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   Úaccept_magic_kwargsrÌ   s              r"   rÃ   z AppPickler.build_standard_kwargs0  s&   € ð ¨¸7Ø¨¸FØ wÀ%Ø!.ñ0ð 	0r#   c                 ó   —  |di |¤ŽS )Nr]   r]   )r*   r½   r,   s      r"   r»   zAppPickler.construct8  s   € Ù‰}�V‰}Ðr#   r'   )	rŠ   r‹   rŒ   r�   r¾   r¼   rº   rÃ   r»   r]   r#   r"   r¸   r¸   !  s#   „ Ù4òò+ò1ð
 -1ó0ór#   r¸   c                 ó   —   |«       | g|¢­Ž S )zRebuild app for versions 2.5+.r]   )r½   Úpicklerr+   s      r"   Ú_unpickle_apprÑ   <  s   € à‰7‹9�SÐ ˜4Ò Ð r#   c                 ó   — d|d<    | di |¤ŽS )zRebuild app for versions 3.1+.FrË   r]   r]   )r½   r,   s     r"   Ú_unpickle_app_v2rÓ   A  s   € à$€FÐÑÙ‰=�‰=Ðr#   c           	      ól   — dd„}| j                  «       D ��ci c]  \  }}| |||«      “Œ c}}S c c}}w )zFilter sensitive settings.c                 ó(  — t        |t        «      rt        |«      S t        | t        «      rft        j                  | «      r|S d| j                  «       v rddlm}  ||«      j                  |¬«      S d| j                  «       v rt        ||¬«      S |S )Nr5   r   )Ú
Connection)ÚmaskrÆ   )Ú
isinstancer   r   ÚstrÚHIDDEN_SETTINGSÚsearchÚlowerÚkomburÖ   Úas_urir   )rP   r|   r×   rÖ   s       r"   Úmaybe_censorz,filter_hidden_settings.<locals>.maybe_censorI  s~   € Ü�eœWÔ%Ü)¨%Ó0Ð0Ü�cœ3ÔÜ×%Ñ% cÔ*Ø�Ø §¡£Ñ,Ý,Ù! %Ó(×/Ñ/°TÐ/Ó:Ð:Ø˜cŸi™i›kÑ)Ü)¨%°dÔ;Ð;àˆr#   )z********)rn   )r«   rß   ru   rj   s       r"   r   r   G  s7   € óð /3¯j©j¬lÔ;©l¡d a¨ˆA‰|˜A˜qÓ!Ñ!¨lÒ;Ð;ùÓ;s   ˜0c                 óð  — ddl }ddl}ddl}	 | j                  «       }dj	                  |j
                  j                  |j
                  j                  «       «      }|j                  }t        j	                  t        j                  «       dj                  d„ t        j                  «       D «       «      t        j                  «       t!        «       |j"                  |j$                  |j$                  t        j&                  «       ||t)        | j*                  j,                  xs d«      | j*                  j/                  «       t1        | j2                  j4                  «      ¬«      S # t        $ r dx}}Y �Œw xY w)	z=Return a string containing information useful in bug-reports.r   Nz{}:{}rˆ   z, c              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wr'   r]   )r^   Úxs     r"   r`   zbugreport.<locals>.<genexpr>k  s   è ø€ Ð@Ñ":˜Qºa”qÑ":ùra   Údisabled)ÚsystemÚarchÚkernel_versionÚpy_iÚcelery_vÚkombu_vÚ
billiard_vÚpy_vÚdriver_vÚ	transportÚresultsÚhuman_settingsrÅ   )ÚbilliardrÝ   r‰   Ú
connectionr    rí   Údriver_nameÚdriver_versionÚtransport_clsÚ	ExceptionÚBUGREPORT_INFOÚ	_platformrä   rb   ÚarchitectureÚreleaser	   ÚVERSION_BANNERÚ__version__Úpython_versionr   r«   rA   r}   r   rÅ   r-   )r!   rð   rÝ   r‰   Úconnrì   rí   s          r"   r   r   Z  s&  € ãÛãð"Ø�~‰~ÓˆØ—>‘> $§.¡.×"<Ñ"<Ø"&§.¡.×"?Ñ"?Ó"AóCˆà×&Ñ&ˆ	ô × Ñ Ü×ÑÓ!Ø�Y‰YÑ@¤)×"8Ñ"8Ô":Ó@Ó@Ü ×(Ñ(Ó*ÜÓØ×&Ñ&Ø×!Ñ!Ø×'Ñ'Ü×%Ñ%Ó'ØØÜ" 3§8¡8×#:Ñ#:Ò#H¸jÓIØ—x‘x×(Ñ(Ó*Ü˜Ÿ
™
×,Ñ,Ó-ð !ó ð øô ò "Ø!Ð!ˆ	“Hð"ús   ŽAE$ Å$E5Å4E5c                 ó*  — ddl m} 	  || |¬«      }t        |t        «      r.d| vr*	 |j
                  }t        |t        «      r
t        «       ‚	 |S |S # t        $ r  || «      }Y ŒSw xY w# t        $ r  	 |j                  }t        |t        «      rt        d«      ‚	 |cY S # t        $ rf t        |dd«      r%	 t        | › d�||¬	«      cY cY S # t        $ r Y nw xY wt        |«      j                  «       D ]  }t        ||«      sŒ|c cY cY S  ‚ w xY ww xY w)
zFind app by name.r   )ÚCelery)ÚimpÚ:zBattribute 'celery' is the celery module not the instance of celeryÚ__path__Nz.celery)r   r   )Úbaserÿ   ÚAttributeErrorrØ   r   r!   r‰   Úgetattrr   ÚImportErrorÚvarsÚvalues)r!   r   r   rÿ   ÚsymÚfoundÚsuspects          r"   r   r   z  s6  € åðÙ˜S cÔ*ˆô �#”zÔ" s°#¡~ð	Ø—G‘GˆEÜ˜%¤Ô,Ü$Ó&Ð&ð -ð0 ˆLØ€Jøô? ò á�#‹hŠðûô ò 	ðØŸ
™
�Ü˜e¤ZÔ0Ü(Ø\ó^ð ^ð 1ð" ’øô "ò Ü˜3 
¨DÔ1ðÜ'Ø"˜e 7˜OØ+9¸sô ô øô 'ò Ùðúä# C›y×/Ñ/Ö1�GÜ! '¨6Õ2Ø&žð  2ð ðúð	úsp   ˆ
A §&A) ÁA&Á%A&Á)	DÁ3'BÂDÂDÂ6CÃDÃDÃ	CÃDÃCÃ+DÄDÄDÄDÄD)NNNNN):r�   r2   Úplatformr÷   ÚreÚcollectionsr   Úcollections.abcr   Úcopyr   Útypesr   Úkombu.utils.urlr   Úcelery.exceptionsr   Úcelery.platformsr	   Úcelery.utils.collectionsr
   Úcelery.utils.importsr   r   r   Úcelery.utils.textr   r˜   r   r   r   r   r   r   r   Ú__all__rö   ÚcompileÚ
IGNORECASErÚ   ÚE_MIX_OLD_INTO_NEWÚE_MIX_NEW_INTO_OLDrŸ   r   r   r4   r“   r–   Ú_settings_info_tr§   r©   r¶   r¸   rÑ   rÓ   r   r   r   r]   r#   r"   Ú<module>r     s+  ðÙ EÛ 	Û Û 	Ý "Ý #Ý Ý å .å 2Ý -Ý 6ß JÑ JÝ $ç n× nÑ nð€ð	€ð �"—*‘*ØCØ‡M�Mó€ð
Ð ð	Ð ð 1Ð ò7ô
KÐ ô Kð\ "-§¡ó ð "-§¡ó ñ Ð/ð 2ó Ð ñ "Øˆk˜?Ð,>ó€ñ &Ø�; Ð1CóÐ ð
 BFØ,0ó6÷rñ ò6!ò
ò<ò&ð@ "0°_ô %r#   