o
    Df>                     @   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 )3zProxy/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_ E/home/ubuntu/webapp/venv/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 )zGet 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   zProxy 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

