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__/serialization.cpython-39.pyc
a

X>h �	@sddZddlZddlZddlZddlmZddlmZddl	m
Z
ddlmZddl
mZddlmZmZmZzddlZWney�ddlZYn0d	ZeeefZd
d
d
ddddd
d�Zd
d�Zejejfdd�Zdd�Z d+dd�Z!dd�Z"Gdd�de�Z#dd�Z$ejejfdd�Z%dd�Z&dd �Zd!d"�Zd,d#d$�Z'd%d&�Z(ej)e*fdddfd'd(�Z+d)d*�Z,dS)-z)Utilities for safely pickling exceptions.�N)�	b64decode)�	b64encode)�partial)�getmro)�	takewhile)�bytes_to_str�	safe_repr�str_to_bytes)�UnpickleableExceptionWrapper�subclass_exception�find_pickleable_exception�create_exception_cls�get_pickleable_exception�get_pickleable_etype�get_pickled_exception�	strtoboolFT)�false�no�0�true�yes�1�on�offcCst||fd|i�S)zCreate new exception class.�
__module__)�type)�name�parent�module�r�D/usr/local/lib/python3.9/site-packages/celery/utils/serialization.pyr!src	CsVt|dg�}t|jt�D]8}z||�}|||��WntyFYq0|SqdS)a�Find first pickleable exception base class.

    With an exception instance, iterate over its super classes (by MRO)
    and find the first super exception that's pickleable.  It does
    not go below :exc:`Exception` (i.e., it skips :exc:`Exception`,
    :class:`BaseException` and :class:`object`).  If that happens
    you should use :exc:`UnpickleableException` instead.

    Arguments:
        exc (BaseException): An exception instance.
        loads: decoder to use.
        dumps: encoder to use

    Returns:
        Exception: Nearest pickleable parent exception class
            (except :exc:`Exception` and parents), or if the exception is
            pickleable it will return :const:`None`.
    �argsN)�getattr�itermro�	__class__�unwanted_base_classes�	Exception)�exc�loads�dumps�exc_argsZsuperclsZsuperexcrrr r&srcst�fdd�t|��S)Ncs|�vS�Nr)�sup��stoprr �<lambda>F�zitermro.<locals>.<lambda>)rr)�clsr.rr-r r#Esr#cCs|st}t|||�S)z&Dynamically create an exception class.)r&r)rrrrrr r
Isr
c	CsNg}|D]<}z||�|�|�WqtyB|�t|��Yq0qt|�S)aEnsure items will serialize.

    For a given list of arbitrary objects, return the object
    or a string representation, safe for serialization.

    Arguments:
        items (Iterable[Any]): Objects to serialize.
        encoder (Callable): Callable function to serialize with.
    )�appendr&r�tuple)�items�encoder�
safe_exc_args�argrrr �ensure_serializablePs
r8csJeZdZdZdZdZdZd�fdd�	Zdd�Zdd�Z	e
d	d
��Z�ZS)r
atWraps unpickleable exceptions.

    Arguments:
        exc_module (str): See :attr:`exc_module`.
        exc_cls_name (str): See :attr:`exc_cls_name`.
        exc_args (Tuple[Any, ...]): See :attr:`exc_args`.

    Example:
        >>> def pickle_it(raising_function):
        ...     try:
        ...         raising_function()
        ...     except Exception as e:
        ...         exc = UnpickleableExceptionWrapper(
        ...             e.__class__.__module__,
        ...             e.__class__.__name__,
        ...             e.args,
        ...         )
        ...         pickle.dumps(exc)  # Works fine.
    Ncs<t|dd��}||_||_||_||_t��||||�dS)NcSst�t�|��Sr+)�pickler(r))�vrrr r/�r0z7UnpickleableExceptionWrapper.__init__.<locals>.<lambda>)r8�
exc_module�exc_cls_namer*�text�super�__init__)�selfr;r<r*r=r6�r$rr r?�s��z%UnpickleableExceptionWrapper.__init__cCst|j|j�|j�Sr+)r
r<r;r*�r@rrr �restore�s
��z$UnpickleableExceptionWrapper.restorecCs|jSr+)r=rBrrr �__str__�sz$UnpickleableExceptionWrapper.__str__cCs<||jj|jjt|dg�t|��}t|d�r8|�|j�}|S)Nr!�
__traceback__)r$r�__name__r"r�hasattr�with_tracebackrE)r1r'�resrrr �from_exception�s
�
z+UnpickleableExceptionWrapper.from_exception)N)
rFr�__qualname__�__doc__r;r<r*r?rCrD�classmethodrJ�
__classcell__rrrAr r
dsr
cCsFzt�t�|��Wnty&Yn0|St|�}|r<|St�|�S)z"Make sure exception is pickleable.)r9r(r)r&rr
rJ)r'Znearestrrr r�srcCs0z|||��Wnty&tYS0|SdS)zGet pickleable exception type.N)r&)r1r(r)rrr r�s

rcCst|t�r|��S|S)z,Reverse of :meth:`get_pickleable_exception`.)�
isinstancer
rC)r'rrr r�s
rcCsttt|���Sr+)r�base64encoder	��srrr r�srcCstt|��Sr+)�base64decoder	rQrrr r�srcCsL|durt}t|t�rHz||��WStyFtd|�d���Yn0|S)z_Convert common terms for true/false to bool.

    Examples (true/false/yes/no/on/off/1/0).
    NzCannot coerce z
 to type bool)�STRTOBOOL_DEFAULT_TABLErO�str�lower�KeyError�	TypeError)Zterm�tablerrr r�s
rcCs�t|tj�rP|��}|jr2|dd�|dd�}|�d�rL|dd�d}|St|tj�rz|��}|jrv|dd�}|S|��SdS)N��z+00:00i�����Z�)rO�datetime�	isoformat�microsecond�endswith�time)�dt�rrrr �_datetime_to_json�s
recs�ddlm}tt||�|d��t||�r4|jdd�}|dusFt||�rJ|St|ttf�rj�fdd�|D�St|t�r���fd	d
�|�	�D�St|t
jt
jf�r�t
|�St|t
j�r�t|�S|dur�tdt|��d|�d
|�d���||�SdS)z;Transform object making it suitable for json serialization.r)�Object)�
builtin_types�key�	keyfilter�unknown_type_filterT)ZrecurseNcsg|]}�|��qSrr)�.0r:)�_jsonifyrr �
<listcomp>�r0zjsonify.<locals>.<listcomp>cs,i|]$\}}�r�|�rn|�||d��qS)�)rhr)rk�kr:�rlrirr �
<dictcomp>�s�zjsonify.<locals>.<dictcomp>zUnsupported type: � z
 (parent: �))Zkombu.abstractrfr�jsonifyrOZas_dictr3�list�dictr4r^�daterbre�	timedeltarU�
ValueErrorr)�objrgrhrirjZ
KombuDictTyperrpr rt�s0�

��rtcCs.t��}|s|�n|d|ur �||d�dS)Nrn)�sys�exc_info)r'r|rrr �raise_with_contextsr})N)N)-rLr^Znumbersr{�base64rrSrrP�	functoolsr�inspectr�	itertoolsrZkombu.utils.encodingrrr	�cPickler9�ImportError�__all__r&�
BaseException�objectr%rTrr(r)rr#r
r8r
rrrrre�RealrUrtr}rrrr �<module>sN
��

=


�
"