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/vine/__pycache__/promises.cpython-39.pyc
a

X>h�@sfdZddlZddlZddlmZddlmZmZddlm	Z	ddl
mZdgZe	j
Gd	d�d��ZdS)
zPromise implementation.�N)�deque)�
WeakMethod�ref�)�Thenable)�reraise�promisec@s~eZdZdZeed�sdZddd�Zedd	��Z	d
d�Z
dd
�Zdd�Zdd�Z
ddd�Zddd�Zddd�Zedd��ZdS)ra~Promise of future evaluation.

    This is a special implementation of promises in that it can
    be used both for "promise of a value" and lazy evaluation.
    The biggest upside for this is that everything in a promise can also be
    a promise, e.g. filters, callbacks and errbacks can all be promises.

    Usage examples:

    .. code-block:: python

        >>> p = promise()
        >>> p.then(promise(print, ('OK',)))  # noqa
        >>> p.on_error = promise(print, ('ERROR',))  # noqa
        >>> p(20)
        OK, 20
        >>> p.then(promise(print, ('hello',)))  # noqa
        hello, 20


        >>> p.throw(KeyError('foo'))
        ERROR, KeyError('foo')


        >>> p2 = promise()
        >>> p2.then(print)  # noqa
        >>> p2.cancel()
        >>> p(30)

    Example:
    .. code-block:: python

        from vine import promise, wrap

        class Protocol:

            def __init__(self):
                self.buffer = []

            def receive_message(self):
                return self.read_header().then(
                    self.read_body).then(
                        wrap(self.prepare_body))

            def read(self, size, callback=None):
                callback = callback or promise()
                tell_eventloop_to_read(size, callback)
                return callback

            def read_header(self, callback=None):
                return self.read(4, callback)

            def read_body(self, header, callback=None):
                body_size, = unpack('>L', header)
                return self.read(body_size, callback)

            def prepare_body(self, value):
                self.buffer.append(value)
    �pypy_version_info)�fun�args�kwargs�ready�failed�value�
ignore_result�reason�
_svpending�
_lvpending�on_error�	cancelled�weak�__weakref__�__dict__NFcCs�||_||_|j||d�|_|p"d|_|p,i|_d|_d|_d|_d|_	d|_
d|_||_d|_
|durr|�|�|jr�|jr�t|�s�J�dS)N�r
r�F)rr�_get_fun_or_weakrefr
rrr
rrrrrrr�then�callable)�selfr
rr�callbackrrrrr�7/usr/local/lib/python3.9/site-packages/vine/promises.py�__init__Ts"


zpromise.__init__cCs&|s|St�|�rt|�St|�SdS)zbReturn the callable or a weak reference.

        Handles both bound and unbound methods.
        N)�inspect�ismethodrrrrrr ros

zpromise._get_fun_or_weakrefcCs.|jr
dnd�t|�j�dt|�d��|j�S)Nz<{0} --> {1!r}>z<{0}>z@0x�x)r
�format�type�__name__�id�rrrr �__repr__}s�zpromise.__repr__c	Cs~d|_z^|jdur|j��|jdur:|jD]}|��q,t|jt�rP|j��Wd|_|_|_nd|_|_|_0dS)NT)rr�cancelr�
isinstancerr)r�pendingrrr r+�s




zpromise.cancelcOs>d}|jrdS|r|j|n|j}|r8t|jfi|��n|j}|�|j�}|dur�zD|jrr||i|��d}i}n"||i|��}|fif|_\}}Wq�ty�|�	�YS0n||f|_\}}d|_
|j}	|	du�rz|	|i|��Wd|_nd|_0n:|j}
z*|
�r(|
�
�}||i|���qWd|_nd|_0|S)NrT)rr�dictr�
_fun_is_aliver
rr�	Exception�throwr
rr�popleft)rrr�retvalZ
final_argsZfinal_kwargsr
�caZck�	svpending�	lvpending�prrr �__call__�s<
zpromise.__call__cCs|jr|�S|jS�N)rr
)rr
rrr r/�szpromise._fun_is_alivecCs�t|t�st||d�}|jr(|��|S|jr<|�|j�n|jrZ|j	\}}||i|��|j
dur�|j}|dur�dt|g�|_|_
n
||_|S|j
�
|�|S)N)r)r,rrrr+rr1rr
rrrr�append)rrrrrr5rrr r�s$


zpromise.thencCsP|jsL|dur|n
t��d}d||_|_|jrL|j|j|fi|j��dS)NrT)r�sys�exc_inforrrrr)r�excrrr �throw1�s
zpromise.throw1Tc
Cs
|j�st��d}|dur |n|}z�|�|�|j}|dur^z|�|�Wd|_q�d|_0n.|j}z|rz|���|�qfWd|_nd|_0W|jdur�|r�|dur�|dus�||ur��tt	|�||�n>|jdu�r|�r|dur�|dus�||ur�tt	|�||�0dS)Nr)
rr;r<r>rrr2rrr&)rr=�tb�	propagateZcurrent_excr5r6rrr r1�s.
�z
promise.throwcCs|jr|jS|jgSr9)rrr)rrr �	listeners�szpromise.listeners)NNNNNFF)N)N)NNT)r'�
__module__�__qualname__�__doc__�hasattrr;�	__slots__r!�staticmethodrr*r+r8r/rr>r1�propertyrArrrr r
s$<
�



&


)rDr"r;�collectionsr�weakrefrrZabstractr�utilsr�__all__�registerrrrrr �<module>s