HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //usr/local/lib/python3.9/site-packages/celery/utils/__pycache__/functional.cpython-39.pyc
a

X>h�.�@s�dZddlZddlmZddlmZddlmZmZm	Z	ddl
mZmZddl
mZmZmZmZmZmZmZddlmZdd	lmZee�Zd
ZdZGdd
�d
�ZGdd�de�Zdd�Zdd�Z dd�Z!dd�Z"d>dd�Z#dd�Z$d?dd�Z%dd�Z&d d!�Z'd"d#�Z(d$d%�Z)Gd&d'�d'ee*�Z+d@d)d*�Z,dAed,efe-e.d-�d.d/�Z/d0d1�Z0dBd2d3�Z1d4d5�Z2d6d7�Z3d8d9�Z4d:d;�Z5d<d=�Z6dS)CzFunctional-style utilities.�N)�UserList)�partial)�islice�tee�zip_longest)�Any�Callable)�LRUCache�
dictfilter�is_list�lazy�maybe_evaluate�
maybe_list�memoize)�promise)�
get_logger)r	rrr�mlazy�noop�first�firstmethod�chunks�padlist�mattrgetter�uniq�regenr
rr
�
head_from_fun�maybe�fun_accepts_kwargsz4
def {fun_name}({fun_args}):
    return {fun_value}
c@seZdZdd�Zdd�ZdS)�DummyContextcCs|S�N���selfr r �A/usr/local/lib/python3.9/site-packages/celery/utils/functional.py�	__enter__szDummyContext.__enter__cGsdSrr )r"�exc_infor r r#�__exit__!szDummyContext.__exit__N)�__name__�
__module__�__qualname__r$r&r r r r#rsrcs(eZdZdZdZdZ�fdd�Z�ZS)rz�Memoized lazy evaluation.

    The function is only evaluated once, every subsequent access
    will return the same value.
    FNcs|jst���|_d|_|jS�NT)�	evaluated�super�evaluate�_valuer!��	__class__r r#r-0szmlazy.evaluate)r'r(r)�__doc__r+r.r-�
__classcell__r r r/r#r%srcOsdS)zONo operation.

    Takes any arguments/keyword arguments and does nothing.
    Nr )�args�kwargsr r r#r7srcOs|S)z%Return the first positional argument.r )�argr3r4r r r#�pass1>sr6ccs$|D]}t|t�r|�}|VqdSr)�
isinstancer)�it�valuer r r#�evaluate_promisesCs
r:cst�fdd�t|�D�d�S)z�Return the first element in ``it`` that ``predicate`` accepts.

    If ``predicate`` is None it will return the first item that's not
    :const:`None`.
    c3s,|]$}�dur�|�rn|dur|VqdSrr )�.0�v��	predicater r#�	<genexpr>Qs�zfirst.<locals>.<genexpr>N)�nextr:)r>r8r r=r#rJs�rcs��fdd�}|S)z�Multiple dispatch.

    Return a function that with a list of instances,
    finds the first instance that gives a value for the given method.

    The list can also contain lazy instances
    (:class:`~kombu.utils.functional.lazy`.)
    c	sl|D]b}z:tt|���}�r2�|g|�Ri|��n||i|��}WntyTYq0|dur|SqdSr)�getattrr
�AttributeError)r8r3r4�obj�methZreply��method�on_callr r#�_matcheras�zfirstmethod.<locals>._matcherr )rFrGrHr rEr#rWs
rccs(|D]}|gtt||d��VqdS)asSplit an iterator into chunks with `n` elements each.

    Warning:
        ``it`` must be an actual iterator, if you pass this a
        concrete sequence will get you repeating elements.

        So ``chunks(iter(range(1000)), 10)`` is fine, but
        ``chunks(range(1000), 10)`` is not.

    Example:
        # n == 2
        >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 2)
        >>> list(x)
        [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10]]

        # n == 3
        >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 3)
        >>> list(x)
        [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]
    �N)�listr)r8�n�itemr r r#rpsrcCs"t|�d|�|g|t|�S)a�Pad list with default elements.

    Example:
        >>> first, last, city = padlist(['George', 'Costanza', 'NYC'], 3)
        ('George', 'Costanza', 'NYC')
        >>> first, last, city = padlist(['George', 'Costanza'], 3)
        ('George', 'Costanza', None)
        >>> first, last, city, planet = padlist(
        ...     ['George', 'Costanza', 'NYC'], 4, default='Earth',
        ... )
        ('George', 'Costanza', 'NYC', 'Earth')
    N)rJ�len)�	container�size�defaultr r r#r�s
rcs�fdd�S)z�Get attributes, ignoring attribute errors.

    Like :func:`operator.itemgetter` but return :const:`None` on missing
    attributes instead of raising :exc:`AttributeError`.
    cs�fdd��D�S)Ncsi|]}|t�|d��qSr)rA)r;�attr�rCr r#�
<dictcomp>��z1mattrgetter.<locals>.<lambda>.<locals>.<dictcomp>r rR��attrsrRr#�<lambda>�rTzmattrgetter.<locals>.<lambda>r rUr rUr#r�srcst���fdd�|D�S)z7Return all unique elements in ``it``, preserving order.c3s$|]}|�vr��|�p|VqdSr)�add)r;rC��seenr r#r?�rTzuniq.<locals>.<genexpr>)�set�r8r rYr#r�srcCs t|�\}}t|d�t||�S)z�Yield pairs of (current, next) items in `it`.

    `next` is None if `current` is the last item.
    Example:
        >>> list(lookahead(x for x in range(6)))
        [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, None)]
    N)rr@r)r8�a�br r r#�	lookahead�s
r_cCst|ttf�r|St|�S)z�Convert iterator to an object that can be consumed multiple times.

    ``Regen`` takes any iterable, and if the object is an
    generator it will cache the evaluated list on first access,
    so that the generator can be "consumed" multiple times.
    )r7rJ�tuple�_regenr\r r r#r�src@sbeZdZdd�Zdd�Zdd�Zdd�Zdd
d�Zdd
�Zdd�Z	dd�Z
edd��Zdd�Z
d	S)racCs||_g|_d|_dS)NF)�
_regen__it�_regen__consumed�_regen__done)r"r8r r r#�__init__�sz_regen.__init__cCst|jffSr)rJ�datar!r r r#�
__reduce__�sz_regen.__reduce__cs(�fdd�|jD�|_t�|j�|_dS)Ncsg|]}�|��qSr r )r;�el��funcr r#�
<listcomp>�rTz_regen.map.<locals>.<listcomp>)rc�maprb)r"rjr rir#rl�sz
_regen.mapcCs
|j��Sr)rb�__length_hint__r!r r r#rm�sz_regen.__length_hint__Nccs�|js�|dus|dkr�t|j�}zt|�}Wnty@YdS0|j�|�|js�zHzt|�}|j�|�Wn$ty�d|_YW|Vq�Yn0W|Vn|V0|}|durN|d8}|dkrNq�qNdS)NrTrI)rd�iterrbr@�
StopIterationrc�append)r"�limitr8�nowZnext_r r r#Z__lookahead_consume�s,
�
z_regen.__lookahead_consumeccs|jEdH|��EdHdSr)rc�_regen__lookahead_consumer!r r r#�__iter__�sz_regen.__iter__cCs@|dkr|j|S|t|j�d}|j|d�D]}q0|j|S)NrrI)rq)rfrMrcrs)r"�indexZ
consume_count�_r r r#�__getitem__�s
z_regen.__getitem__cCs<t|j�rdSztt|��Wnty2YdS0dSdS)NTF)rMrcr@rnror!r r r#�__bool__�s
z_regen.__bool__cCs |js|j�|j�d|_|jSr*)rdrc�extendrbr!r r r#rf	sz_regen.datacCs.d�|jjd�dd�|jD��|js(dnd�S)Nz<{}: [{}{}]>�, css|]}t|�VqdSr)�repr)r;�er r r#r?rTz"_regen.__repr__.<locals>.<genexpr>z...�)�formatr0r'�joinrcrdr!r r r#�__repr__s
�z_regen.__repr__)N)r'r(r)rergrlrmrsrtrwrx�propertyrfr�r r r r#ra�s


raTc

CsP|jrXt|j�}|r&ttt|j���n|j}|jd|�}tt|j|d�|��}n|jg}}|j}|j}|jr�t	|j
�t	|j���}|r�dd�t|j���D�}	q�t|j�
��}	n|j
g}}	d�tdd�|�d�dd�|D��|r�d|��nd|�s|	�r|�sdnd|�r"d�|�ndd�dd�|	D��|�rFd|��ndg��S)	NcSsg|]\}}||f�qSr r )r;�i�kwr r r#rk'sz!_argsfromspec.<locals>.<listcomp>rzcss |]\}}|�d|��VqdS)�=Nr �r;�kr<r r r#r?1rTz _argsfromspec.<locals>.<genexpr>�*css"|]\}}|�d|�d�VqdS)z="�"Nr r�r r r#r?5rTz**)�defaultsrMrJ�ranger3�zip�varargs�varkw�kwonlydefaultsr[�
kwonlyargs�keys�	enumerate�itemsr�filter)
�specZreplace_defaults�splitr��
positional�optionalr�r�r�Zkwonlyargs_optionalr r r#�
_argsfromspecs6
���r�F.)�fun�bound�returnc
Cs�t�|�}t|�}|jjdk}t�|�}|sJ|rJ|sJ|sJ|jj|j}}n|j}tj|t	t�
|��dd�}t�|�d|j
i}t||�||}	||	_|r�t|	t��S|	S)z1Generate signature function from actual function.Zcython_function_or_methodrI)Zfun_nameZfun_argsZ	fun_valuer')�inspect�
isfunction�callabler0r'�ismethod�__call__�FUNHEAD_TEMPLATEr~r��getfullargspec�logger�debugr(�exec�_sourcer�object)
r�r�Zis_functionZis_callableZ	is_cythonZ	is_method�nameZ
definition�	namespace�resultr r r#r:s(

�


rcCst�|�}|jpt|j�|kSr)r�r�r�rMr3)r�rKZargspecr r r#�
arity_greater[s
r�cCs2t�|�}|jp0|jp0|r(t|j�|kS||jvSr)r�r�r�r�rMr3)r�r��positionr�r r r#�fun_takes_argument`s
�r�cCstdd�t�|�j��D��S)z<Return true if function accepts arbitrary keyword arguments.css|]}|j|jkr|VqdSr)�kind�VAR_KEYWORD)r;�pr r r#r?js�z%fun_accepts_kwargs.<locals>.<genexpr>)�anyr��	signature�
parameters�values)r�r r r#rhs�rcCs|dur||�S|S)z$Call typ on value if val is defined.Nr )�typ�valr r r#rpsrcCst|t�r||fS||gS)z�Return copy of sequence seq with item added.

    Returns:
        Sequence: if seq is a tuple, the result will be a tuple,
           otherwise it depends on the implementation of ``__add__``.
    )r7r`)�seqrLr r r#�seq_concat_itemusr�cCs@tt||gtd��}t||�s&||�}t||�s8||�}||S)aConcatenate two sequences: ``a + b``.

    Returns:
        Sequence: The return value will depend on the largest sequence
            - if b is larger and is a tuple, the return value will be a tuple.
            - if a is larger and is a list, the return value will be a list,
    )�key)�type�maxrMr7)r]r^Zpreferr r r#�seq_concat_seqs	

r�cCst|ttf�ot|t�Sr)r7�int�float�bool)r9r r r#�is_numeric_value�sr�)N)N)T)F)N)7r1r��collectionsr�	functoolsr�	itertoolsrrr�typingrrZkombu.utils.functionalr	r
rrr
rrZvinerZcelery.utils.logrr'r��__all__r�rrrr6r:rrrrrrr_rrJrar�r��strrr�r�rrr�r�r�r r r r#�<module>sD$	

	
W
"!