o
    ›¨Êh×>  ã                   @   s4  d 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Z	e
Zdd„ Zd2d	d
„ZG dd„ dƒZG dd„ deƒZdd„ ZdZh d£Zdd„ Zdd„ Zdddidddddœdddd œd!d!id"œiZeed  ¡ ƒd#hB ZG d$d%„ d%ƒZd&d'„ ZG d(d)„ d)eƒZddedfd*d+„Zdddefd,d-„Zd.d/„ Zd0d1„ ZdS )3zßProxy/PromiseProxy implementation.

This module contains critical utilities that needs to be loaded as
soon as possible, and that shall not load any third party modules.

Parts of this module is Copyright by Werkzeug Team.
é    N)Úreduce)Úimport_module)Ú
ModuleType)ÚProxyÚPromiseProxyÚ
try_importÚmaybe_evaluatec                    s,   ‡ ‡fdd„}ddd„}t | ˆf||dœƒS )Nc                    s   ˆ  | ˆ ¡}||_|S ©N)Ú__new__Ú__getter)ÚclsÚgetterÚinstance©Ú	cls_valueÚtype_© ú>/var/www/html/env/lib/python3.10/site-packages/celery/local.pyr
      s   z"_default_cls_attr.<locals>.__new__c                 S   s   |d ur	|   |¡S | S r	   )r   )ÚselfÚobjr   r   r   r   Ú__get__    s   z"_default_cls_attr.<locals>.__get__)r
   r   r	   )Útype)Únamer   r   r
   r   r   r   r   Ú_default_cls_attr   s
   
ÿr   c                 C   s"   zt | ƒW S  ty   | Y S w )zUTry to import and return module.

    Returns None if the module does not exist.
    )r   ÚImportError)ÚmoduleÚdefaultr   r   r   r   (   s
   
ÿr   c                   @   s$  e Zd ZdZdZ	d|dd„Zedee ƒdd„ ƒZ ed	ee ƒd
d„ ƒZedeeƒdd„ ƒZedeeƒdd„ ƒZdd„ Ze	dd„ ƒZ
dd„ Ze	dd„ ƒZdd„ Zdd„ ZeZdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*dTdU„ Z+dVdW„ Z,dXdY„ Z-dZd[„ Z.d\d]„ Z/d^d_„ Z0d`da„ Z1dbdc„ Z2ddde„ Z3dfdg„ Z4dhdi„ Z5djdk„ Z6dldm„ Z7dndo„ Z8dpdq„ Z9drds„ Z:dtdu„ Z;dvdw„ Z<dxdy„ Z=dzd{„ Z>dS )}r   zProxy to another object.)Ú__localÚ__argsÚ__kwargsÚ__dict__Nc                 C   sf   t  | d|¡ t  | d|pd¡ t  | d|pi ¡ |d ur$t  | d|¡ |d ur1t  | d|¡ d S d S )NÚ_Proxy__localÚ_Proxy__argsr   Ú_Proxy__kwargsÚ__custom_name__Ú__doc__)ÚobjectÚ__setattr__)r   ÚlocalÚargsÚkwargsr   r%   r   r   r   Ú__init__9   s   ÿzProxy.__init__r   c                 C   ó&   z| j W S  ty   |  ¡ j Y S w r	   )r$   ÚAttributeErrorÚ_get_current_objectÚ__name__©r   r   r   r   r/   C   ó
   ÿzProxy.__name__Úqualnamec                 C   r,   r	   )r$   r-   r.   Ú__qualname__r0   r   r   r   r3   J   r1   zProxy.__qualname__r   c                 C   ó
   |   ¡ jS r	   )r.   Ú
__module__r0   r   r   r   r5   Q   ó   
zProxy.__module__Údocc                 C   r4   r	   )r.   r%   r0   r   r   r   r%   U   r6   zProxy.__doc__c                 C   r4   r	   )r.   Ú	__class__r0   r   r   r   Ú
_get_classY   ó   
zProxy._get_classc                 C   ó   |   ¡ S r	   )r9   r0   r   r   r   r8   \   s   zProxy.__class__c                 C   sV   t  | d¡}t|dƒs|| ji | j¤ŽS zt|| jƒW S  ty*   td| j› �ƒ‚w )zÔGet current object.

        This is useful if you want the real
        object behind the proxy at a time for performance reasons or because
        you want to pass the object into a different context.
        r!   Ú__release_local__zno object bound to )	r&   Ú__getattribute__Úhasattrr"   r#   Úgetattrr/   r-   ÚRuntimeError)r   Úlocr   r   r   r.   `   s   
ÿzProxy._get_current_objectc                 C   s$   z|   ¡ jW S  ty   tdƒ‚w )Nr    )r.   r    r@   r-   r0   r   r   r   r    p   s
   ÿzProxy.__dict__c                 C   s6   z	|   ¡ }W t|ƒS  ty   d| jj› d� Y S w )Nú<z	 unbound>)r.   r@   r8   r/   Úrepr)r   r   r   r   r   Ú__repr__w   s   
þÿzProxy.__repr__c                 C   s$   zt |  ¡ ƒW S  ty   Y dS w )NF)Úboolr.   r@   r0   r   r   r   Ú__bool__~   s
   ÿzProxy.__bool__c                 C   s&   zt |  ¡ ƒW S  ty   g  Y S w r	   )Údirr.   r@   r0   r   r   r   Ú__dir__†   s
   ÿzProxy.__dir__c                 C   s"   |dkr
t |  ¡ ƒS t|  ¡ |ƒS )NÚ__members__)rG   r.   r?   ©r   r   r   r   r   Ú__getattr__Œ   s   zProxy.__getattr__c                 C   s   ||   ¡ |< d S r	   ©r.   )r   ÚkeyÚvaluer   r   r   Ú__setitem__‘   s   zProxy.__setitem__c                 C   s   |   ¡ |= d S r	   rL   )r   rM   r   r   r   Ú__delitem__”   ó   zProxy.__delitem__c                 C   s   t |  ¡ ||ƒ d S r	   )Úsetattrr.   )r   r   rN   r   r   r   r'   —   ó   zProxy.__setattr__c                 C   s   t |  ¡ |ƒ d S r	   )Údelattrr.   rJ   r   r   r   Ú__delattr__š   ó   zProxy.__delattr__c                 C   ó   t |  ¡ ƒS r	   )Ústrr.   r0   r   r   r   Ú__str__�   ó   zProxy.__str__c                 C   s   |   ¡ |k S r	   rL   ©r   Úotherr   r   r   Ú__lt__    rZ   zProxy.__lt__c                 C   s   |   ¡ |kS r	   rL   r[   r   r   r   Ú__le__£   rZ   zProxy.__le__c                 C   s   |   ¡ |kS r	   rL   r[   r   r   r   Ú__eq__¦   rZ   zProxy.__eq__c                 C   s   |   ¡ |kS r	   rL   r[   r   r   r   Ú__ne__©   rZ   zProxy.__ne__c                 C   s   |   ¡ |kS r	   rL   r[   r   r   r   Ú__gt__¬   rZ   zProxy.__gt__c                 C   s   |   ¡ |kS r	   rL   r[   r   r   r   Ú__ge__¯   rZ   zProxy.__ge__c                 C   rW   r	   )Úhashr.   r0   r   r   r   Ú__hash__²   rZ   zProxy.__hash__c                 O   s   |   ¡ |i |¤ŽS r	   rL   ©r   ÚaÚkwr   r   r   Ú__call__µ   rV   zProxy.__call__c                 C   rW   r	   )Úlenr.   r0   r   r   r   Ú__len__¸   rZ   zProxy.__len__c                 C   s   |   ¡ | S r	   rL   ©r   Úir   r   r   Ú__getitem__»   rZ   zProxy.__getitem__c                 C   rW   r	   )Úiterr.   r0   r   r   r   Ú__iter__¾   rZ   zProxy.__iter__c                 C   s   ||   ¡ v S r	   rL   rk   r   r   r   Ú__contains__Á   rZ   zProxy.__contains__c                 C   s   |   ¡ | S r	   rL   r[   r   r   r   Ú__add__Ä   rZ   zProxy.__add__c                 C   s   |   ¡ | S r	   rL   r[   r   r   r   Ú__sub__Ç   rZ   zProxy.__sub__c                 C   s   |   ¡ | S r	   rL   r[   r   r   r   Ú__mul__Ê   rZ   zProxy.__mul__c                 C   s   |   ¡ | S r	   rL   r[   r   r   r   Ú__floordiv__Í   rZ   zProxy.__floordiv__c                 C   s   |   ¡ | S r	   rL   r[   r   r   r   Ú__mod__Ð   rZ   zProxy.__mod__c                 C   ó   |   ¡  |¡S r	   )r.   Ú
__divmod__r[   r   r   r   rw   Ó   rQ   zProxy.__divmod__c                 C   s   |   ¡ | S r	   rL   r[   r   r   r   Ú__pow__Ö   rZ   zProxy.__pow__c                 C   s   |   ¡ |> S r	   rL   r[   r   r   r   Ú
__lshift__Ù   rZ   zProxy.__lshift__c                 C   s   |   ¡ |? S r	   rL   r[   r   r   r   Ú
__rshift__Ü   rZ   zProxy.__rshift__c                 C   s   |   ¡ |@ S r	   rL   r[   r   r   r   Ú__and__ß   rZ   zProxy.__and__c                 C   s   |   ¡ |A S r	   rL   r[   r   r   r   Ú__xor__â   rZ   zProxy.__xor__c                 C   s   |   ¡ |B S r	   rL   r[   r   r   r   Ú__or__å   rZ   zProxy.__or__c                 C   rv   r	   )r.   Ú__div__r[   r   r   r   r~   è   rQ   zProxy.__div__c                 C   rv   r	   )r.   Ú__truediv__r[   r   r   r   r   ë   rQ   zProxy.__truediv__c                 C   s
   |   ¡  S r	   rL   r0   r   r   r   Ú__neg__î   r:   zProxy.__neg__c                 C   s
   |   ¡ 
 S r	   rL   r0   r   r   r   Ú__pos__ñ   r:   zProxy.__pos__c                 C   rW   r	   )Úabsr.   r0   r   r   r   Ú__abs__ô   rZ   zProxy.__abs__c                 C   s
   |   ¡  S r	   rL   r0   r   r   r   Ú
__invert__÷   r:   zProxy.__invert__c                 C   rW   r	   )Úcomplexr.   r0   r   r   r   Ú__complex__ú   rZ   zProxy.__complex__c                 C   rW   r	   )Úintr.   r0   r   r   r   Ú__int__ý   rZ   zProxy.__int__c                 C   rW   r	   )Úfloatr.   r0   r   r   r   Ú	__float__   rZ   zProxy.__float__c                 C   rW   r	   )Úoctr.   r0   r   r   r   Ú__oct__  rZ   zProxy.__oct__c                 C   rW   r	   )Úhexr.   r0   r   r   r   Ú__hex__  rZ   zProxy.__hex__c                 C   ó   |   ¡  ¡ S r	   )r.   Ú	__index__r0   r   r   r   r�   	  rZ   zProxy.__index__c                 C   rv   r	   )r.   Ú
__coerce__r[   r   r   r   r‘     rQ   zProxy.__coerce__c                 C   r�   r	   )r.   Ú	__enter__r0   r   r   r   r’     rZ   zProxy.__enter__c                 O   s   |   ¡ j|i |¤ŽS r	   )r.   Ú__exit__re   r   r   r   r“     rS   zProxy.__exit__c                 C   r�   r	   )r.   Ú
__reduce__r0   r   r   r   r”     rZ   zProxy.__reduce__)NNNN)?r/   r5   r3   r%   Ú	__slots__r+   r   rX   r9   Úpropertyr8   r.   r    rD   rF   Ú__nonzero__rH   rK   rO   rP   r'   rU   rY   r]   r^   r_   r`   ra   rb   rd   rh   rj   rm   ro   rp   rq   rr   rs   rt   ru   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   rƒ   r„   r†   rˆ   rŠ   rŒ   rŽ   r�   r‘   r’   r“   r”   r   r   r   r   r   3   sŠ    
ÿ










r   c                   @   s@   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Z	ddd„Z	dS )r   z�Proxy that evaluates object once.

    :class:`Proxy` will evaluate the object each time, while the
    promise will only evaluate it once.
    )Ú__pending__Ú__weakref__c                 C   s*   zt  | d¡W S  ty   |  ¡  Y S w )NÚ__thing)r&   r=   r-   Ú__evaluate__r0   r   r   r   r.   "  s
   ÿz PromiseProxy._get_current_objectc                 O   sz   |   ¡ r||i |¤ŽS ddlm} zt | d¡}W n ty$   d }Y nw |d u r3|ƒ }t | d|¡ | |||f¡ d S )Nr   )Údequer˜   )Ú__evaluated__Úcollectionsrœ   r&   r=   r-   r'   Úappend)r   Úfunr)   r*   rœ   Úpendingr   r   r   Ú__then__(  s   ÿzPromiseProxy.__then__c                 C   s(   z	t  | d¡ W dS  ty   Y dS w )Nrš   FT)r&   r=   r-   r0   r   r   r   r�   5  s   þÿzPromiseProxy.__evaluated__c                 C   r;   r	   rL   r0   r   r   r   Ú__maybe_evaluate__<  s   zPromiseProxy.__maybe_evaluate__©r!   r"   r#   c                 C   sô   zt  | ¡}W n ty   ‚ w t | d|¡ |D ]}zt | |¡ W q ty,   Y qw zt | d¡}W n
 ty?   Y |S w z'|rS| ¡ \}}}||i |¤Ž |sCW z	t | d¡ W |S  tyg   Y |S w zt | d¡ W w  tyy   Y w w )Nrš   r˜   )	r   r.   Ú	Exceptionr&   r'   rU   r-   r=   Úpopleft)r   Ú_cleanÚthingÚattrr¡   r    r)   r*   r   r   r   r›   ?  sH   ÿþôþ€þþþÿzPromiseProxy.__evaluate__N)r¤   )
r/   r5   r3   r%   r•   r.   r¢   r�   r£   r›   r   r   r   r   r     s    ÿr   c                 C   s"   z|   ¡ W S  ty   |  Y S w )z:Attempt to evaluate promise, even if obj is not a promise.)r£   r-   )r   r   r   r   r   `  s
   
ÿr   zF
The module %s is deprecated and will be removed in a future version.
>   Ú__all__r%   Ú__file__Ú__path__c                 C   s   | S r	   r   ©Úmethodr   r   r   Úfun_of_method{  s   r¯   c                 C   s   ddl m} | | ¡S )ziGet attribute from current_app recursively.

    Example: ``getappattr('amqp.get_task_consumer')``.

    r   )Úcurrent_app)Úceleryr°   Ú	_rgetattr)Úpathr°   r   r   r   Ú
getappattr  s   
r´   r±   Ú	send_taskzlog.get_default_loggerzlog.setup_loggerzlog.setup_logging_subsystemzlog.redirect_stdouts_to_logger)Úget_default_loggerÚsetup_loggerÚsetup_logging_subsystemÚredirect_stdouts_to_loggerzamqp.TaskConsumerÚ
connection)ÚTaskConsumerÚestablish_connectionÚget_consumer_setÚtasks)ÚexecuteÚlogÚ	messagingÚregistryÚsubtaskc                   @   s0   e Zd Zd
dd„Zddd„Zdd„ Zdd	„ ZdS )Úclass_propertyNc                 C   sf   |d urt |tƒst|ƒ}|d urt |tƒst|ƒ}|| _|| _| t¡}|j| _|j| _|j| _d S r	   )	Ú
isinstanceÚclassmethodÚ_class_property__getÚ_class_property__setr   r&   r%   r/   r5   )r   r   ÚsetterÚinfor   r   r   r+   ¥  s   
zclass_property.__init__c                 C   s"   |r	|d u r	|j }| j ||¡ƒ S r	   )r8   rÇ   r   )r   r   r   r   r   r   r   ²  s   zclass_property.__get__c                 C   s   |d u r| S | j  |¡|ƒS r	   )rÈ   r   )r   r   rN   r   r   r   Ú__set__·  s   zclass_property.__set__c                 C   s   |   | j|¡S r	   )r8   rÇ   )r   rÉ   r   r   r   rÉ   ¼  rQ   zclass_property.setter)NNr	   )r/   r5   r3   r+   r   rË   rÉ   r   r   r   r   rÄ   £  s
    

rÄ   c                 C   s   t t| ƒƒS r	   )rÆ   r¯   r­   r   r   r   ÚreclassmethodÀ  rZ   rÌ   c                   @   s4   e Zd ZdZi Zi Zi Zdd„ Zdd„ Zdd„ Z	dS )	Ú
LazyModuler   c                 C   sŠ   || j v r't| j | d d |gƒ}| j|j D ]}t| |t||ƒƒ qt||ƒS || jv r?t| j| d d |gƒ}t| ||ƒ |S t | |¡S r	   )	Ú_object_originsÚ
__import__Ú_all_by_moduler/   rR   r?   Ú_directr   r=   )r   r   r   Úitemr   r   r   rK   Ê  s   
ÿ

zLazyModule.__getattr__c                 C   s   dd„ t | jƒtB D ƒS )Nc                 S   s   g | ]}|t vr|‘qS r   )ÚDEPRECATED_ATTRS©Ú.0r©   r   r   r   Ú
<listcomp>Ø  s
    ÿz&LazyModule.__dir__.<locals>.<listcomp>)Úsetrª   ÚDEFAULT_ATTRSr0   r   r   r   rH   ×  s   ÿzLazyModule.__dir__c                 C   s   t | jffS r	   )r   r/   r0   r   r   r   r”   Ý  rZ   zLazyModule.__reduce__N)
r/   r5   r3   Ú_compat_modulesrÐ   rÑ   rÎ   rK   rH   r”   r   r   r   r   rÍ   Ä  s    rÍ   c           
         s‚   |r
d  |j| g¡n| }|d u ri n|}|  d¡\}}}||d< ‡ fdd„| ¡ D ƒ}t||f|ƒ| ƒ }	tj|< |	j |¡ |	S )NÚ.r5   c                    s"   i | ]\}}|ˆ rˆ |ƒn|“qS r   r   )rÕ   Ú	attr_namer©   ©Úprepare_attrr   r   Ú
<dictcomp>è  s    ÿÿz!create_module.<locals>.<dictcomp>)	Újoinr/   Ú
rpartitionÚitemsr   ÚsysÚmodulesr    Úupdate)
r   ÚattrsÚ	cls_attrsÚpkgÚbaserÝ   ÚfqdnÚ_Úmodnamer   r   rÜ   r   Úcreate_moduleá  s   
þÿÿrì   c           
   	      s¢   |pt  | d¡}|pi }|pi }tj|  }t|ƒ}ttttj	dd„ ||||fD ƒƒƒƒ}|||||dœ}	t
| ||	|d�‰ ˆ j ‡ fdd„|D ƒ¡ |jˆ _|ˆ fS )Nr   c                 S   s   g | ]}t |ƒ‘qS r   )Útuple)rÕ   Úvr   r   r   rÖ   ü  s    z#recreate_module.<locals>.<listcomp>)rÙ   rÐ   rÑ   rÎ   rª   )ræ   rè   c                    s   i | ]}|t ˆ |ƒ“qS r   )Úget_compat_module)rÕ   Úmod©Ú
new_moduler   r   rÞ     s    ÿz#recreate_module.<locals>.<dictcomp>)ÚCOMPAT_MODULESÚgetrâ   rã   Úget_originsrí   r×   r   ÚoperatorÚaddrì   r    rä   Ú__spec__)
r   Úcompat_modulesÚ	by_moduleÚdirectrè   rå   Ú
old_moduleÚoriginsÚ_allÚcattrsr   rñ   r   Úrecreate_moduleò  s(   
þüÿr   c                 C   sf   dd„ }t | j | }t|tƒr#d | j|g¡}t|ƒ }tj|< |S t|ƒ|d< t	|t
|ƒ| |d�S )Nc                 S   s   t | tƒrtt| fƒS | S r	   )rÅ   rX   r   r´   )r©   r   r   r   Úprepare  s   
z"get_compat_module.<locals>.preparerÚ   rª   )rç   rÝ   )ró   r/   rÅ   rX   rß   r   râ   rã   Úlistrì   Údict)rç   r   r  rå   ré   r   r   r   r   rï     s   
rï   c                    s2   i }|   ¡ D ]\‰ }| ‡ fdd„|D ƒ¡ q|S )Nc                    s   i | ]}|ˆ “qS r   r   rÔ   ©r   r   r   rÞ     s    zget_origins.<locals>.<dictcomp>)rá   rä   )Údefsrý   rå   r   r  r   rõ     s   rõ   r	   ) r%   rö   râ   Ú	functoolsr   Ú	importlibr   Útypesr   rª   r/   r5   r   r   r   r   r   ÚMODULE_DEPRECATEDrØ   r¯   r´   ró   r×   ÚkeysrÓ   rÄ   rÌ   rÍ   rì   r   rï   rõ   r   r   r   r   Ú<module>   s\    
 gGÿüýÿñÿ
ÿ
ÿ