shell bypass 403

UnknownSec Shell


name : unix_events.cpython-36.pyc
3


 \���
@s dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddl
mZddl
m
Z
ddl
mZddl
mZdd	l
mZdd
l
mZddl
mZddl
mZdd
l
mZddlmZddlmZdddddgZejdkr�ed��dd�Zy
ejZWnek
�r,dd�ZYnXGdd�dej�Z e!ed��rVdd�Z"nddl#Z#d d�Z"Gd!d"�d"ej$�Z%Gd#d$�d$ej&ej'�Z(e!ed%��r�ej)Z*nddl#Z#d&d'�Z*Gd(d)�d)ej+�Z,Gd*d�d�Z-Gd+d,�d,e-�Z.Gd-d�de.�Z/Gd.d�de.�Z0Gd/d0�d0ej1�Z2e Z3e2Z4dS)1z2Selector event loop for Unix with signal handling.�N�)�base_events)�base_subprocess)�compat)�	constants)�
coroutines)�events)�futures)�selector_events)�	selectors)�
transports)�	coroutine)�logger�SelectorEventLoop�AbstractChildWatcher�SafeChildWatcher�FastChildWatcher�DefaultEventLoopPolicyZwin32z+Signals are not really supported on WindowscCsdS)zDummy signal handler.N�)�signum�framerr�+/usr/lib64/python3.6/asyncio/unix_events.py�_sighandler_noop%srcCs|S)Nr)�pathrrr�<lambda>.srcs�eZdZdZd"�fdd�	Zdd�Z�fdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zd#dd�Zd$dd�Z
ed%dd��Zdd�Zedddd�dd��Zed&dddd�d d!��Z�ZS)'�_UnixSelectorEventLoopzdUnix event loop.

    Adds signal handling and UNIX Domain Socket support to SelectorEventLoop.
    Ncst�j|�i|_dS)N)�super�__init__�_signal_handlers)�self�selector)�	__class__rrr7sz_UnixSelectorEventLoop.__init__cCstj�S)N)�socketZ
socketpair)rrrr�_socketpair;sz"_UnixSelectorEventLoop._socketpaircs^t�j�tj�s2xFt|j�D]}|j|�qWn(|jrZtjd|�d�t	|d�|jj
�dS)NzClosing the loop z@ on interpreter shutdown stage, skipping signal handlers removal)�source)r�close�sys�
is_finalizing�listr�remove_signal_handler�warnings�warn�ResourceWarning�clear)r�sig)r!rrr%>s
z_UnixSelectorEventLoop.closecCs"x|D]}|sq|j|�qWdS)N)�_handle_signal)r�datarrrr�_process_self_dataLs
z)_UnixSelectorEventLoop._process_self_datac+GsHtj|�stj|�rtd��|j|�|j�ytj|jj	��Wn2t
tfk
rt}ztt
|���WYdd}~XnXtj|||�}||j|<ytj|t�tj|d�Wn�tk
�rB}zz|j|=|j�sytjd�Wn4t
tfk
�r}ztjd|�WYdd}~XnX|jtjk�r0tdj|���n�WYdd}~XnXdS)z�Add a handler for a signal.  UNIX only.

        Raise ValueError if the signal number is invalid or uncatchable.
        Raise RuntimeError if there is a problem setting up the handler.
        z3coroutines cannot be used with add_signal_handler()NFrzset_wakeup_fd(-1) failed: %szsig {} cannot be caught���)rZiscoroutineZiscoroutinefunction�	TypeError�
_check_signalZ
_check_closed�signal�
set_wakeup_fdZ_csock�fileno�
ValueError�OSError�RuntimeError�strrZHandlerr�siginterruptr�info�errno�EINVAL�format)rr.�callback�args�exc�handleZnexcrrr�add_signal_handlerSs0



z)_UnixSelectorEventLoop.add_signal_handlercCs8|jj|�}|dkrdS|jr*|j|�n
|j|�dS)z2Internal helper that is the actual signal handler.N)r�getZ
_cancelledr)Z_add_callback_signalsafe)rr.rDrrrr/�sz%_UnixSelectorEventLoop._handle_signalc&Cs�|j|�y|j|=Wntk
r*dSX|tjkr>tj}ntj}ytj||�Wn@tk
r�}z$|jtj	kr�t
dj|���n�WYdd}~XnX|js�ytjd�Wn2t
tfk
r�}ztjd|�WYdd}~XnXdS)zwRemove a handler for a signal.  UNIX only.

        Return True if a signal handler was removed, False if not.
        Fzsig {} cannot be caughtNrzset_wakeup_fd(-1) failed: %sTr2)r4r�KeyErrorr5�SIGINT�default_int_handler�SIG_DFLr9r>r?r:r@r6r8rr=)rr.ZhandlerrCrrrr)�s(

z,_UnixSelectorEventLoop.remove_signal_handlercCsHt|t�stdj|���d|ko,tjknsDtdj|tj���dS)z�Internal helper to validate a signal.

        Raise ValueError if the signal number is invalid or uncatchable.
        Raise RuntimeError if there is a problem setting up the handler.
        zsig must be an int, not {!r}rzsig {} out of range(1, {})N)�
isinstance�intr3r@r5�NSIGr8)rr.rrrr4�s

z$_UnixSelectorEventLoop._check_signalcCst|||||�S)N)�_UnixReadPipeTransport)r�pipe�protocol�waiter�extrarrr�_make_read_pipe_transport�sz0_UnixSelectorEventLoop._make_read_pipe_transportcCst|||||�S)N)�_UnixWritePipeTransport)rrOrPrQrRrrr�_make_write_pipe_transport�sz1_UnixSelectorEventLoop._make_write_pipe_transportc	ks�tj���}
|j�}t||||||||f||d�|	��}|
j|j�|j|�y|EdHWn&tk
r~}
z
|
}WYdd}
~
XnXd}|dk	r�|j�|j	�EdH|�WdQRX|S)N)rQrR)
r�get_child_watcherZ
create_future�_UnixSubprocessTransport�add_child_handlerZget_pid�_child_watcher_callback�	Exceptionr%Z_wait)rrPrB�shell�stdin�stdout�stderr�bufsizerR�kwargs�watcherrQ�transprC�errrrr�_make_subprocess_transport�s$




z1_UnixSelectorEventLoop._make_subprocess_transportcCs|j|j|�dS)N)Zcall_soon_threadsafeZ_process_exited)r�pid�
returncoderbrrrrY�sz._UnixSelectorEventLoop._child_watcher_callback)�ssl�sock�server_hostnameccs|dkst|t�st�|r,|dkr<td��n|dk	r<td��|dk	r�|dk	rTtd��tjtjtjd�}y |jd�|j||�EdHWq�|j	��Yq�XnB|dkr�td��|j
tjks�tj|j
�r�tdj|���|jd�|j||||�EdH\}}||fS)Nz/you have to pass server_hostname when using sslz+server_hostname is only meaningful with sslz3path and sock can not be specified at the same timerFzno path and sock were specifiedz2A UNIX Domain Stream Socket was expected, got {!r})rKr;�AssertionErrorr8r"�AF_UNIX�SOCK_STREAM�setblockingZsock_connectr%�familyr�_is_stream_socket�typer@Z_create_connection_transport)r�protocol_factoryrrgrhri�	transportrPrrr�create_unix_connection�s:


z-_UnixSelectorEventLoop.create_unix_connection�d)rh�backlogrgc
!Cs�t|t�rtd��|dk	�r0|dk	r,td��t|�}tjtjtj�}|dd
kr�y tj	t
j|�j�rnt
j|�WnBt
k
r�Yn0tk
r�}ztjd||�WYdd}~XnXy|j|�Wnjtk
�r}z8|j�|jtjk�rdj|�}ttj|�d�n�WYdd}~Xn|j��YnXn>|dk�rBtd��|jtjk�s`tj|j��rntdj|���tj||g�}	|j|�|jd	�|j||||	�|	S)Nz*ssl argument must be an SSLContext or Nonez3path and sock can not be specified at the same timer�z2Unable to check or remove stale UNIX socket %r: %rzAddress {!r} is already in usez-path was not specified, and no sock specifiedz2A UNIX Domain Stream Socket was expected, got {!r}F)rrv)rK�boolr3r8�_fspathr"rkrl�stat�S_ISSOCK�os�st_mode�remove�FileNotFoundErrorr9r�errorZbindr%r>Z
EADDRINUSEr@rnrrorpZServerZlistenrmZ_start_serving)
rrqrrhrurgrcrC�msgZserverrrr�create_unix_serversP

 




z)_UnixSelectorEventLoop.create_unix_server)N)NN)NN)N)N)�__name__�
__module__�__qualname__�__doc__rr#r%r1rEr/r)r4rSrUr
rdrYrsr��
__classcell__rr)r!rr1s,-
 


%r�set_blockingcCstj|d�dS)NF)r{r�)�fdrrr�_set_nonblockingBsr�cCs,tj|tj�}|tjB}tj|tj|�dS)N)�fcntlZF_GETFLr{�
O_NONBLOCKZF_SETFL)r��flagsrrrr�Gs
cs�eZdZdZd �fdd�	Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Ze
jrhdd�Zd!dd�Zdd�Zdd�Z�ZS)"rN�iNcs�t�j|�||jd<||_||_|j�|_||_d|_t	j
|j�j}tj
|�pbtj|�pbtj|�s~d|_d|_d|_td��t|j�|jj|jj|�|jj|jj|j|j�|dk	r�|jjtj|d�dS)NrOFz)Pipe transport is for pipes/sockets only.)rr�_extra�_loop�_piper7�_fileno�	_protocol�_closingr{�fstatr|ry�S_ISFIFOrz�S_ISCHRr8r��	call_soon�connection_made�_add_reader�_read_readyr	�_set_result_unless_cancelled)r�looprOrPrQrR�mode)r!rrrQs,






z_UnixReadPipeTransport.__init__cCs�|jjg}|jdkr |jd�n|jr0|jd�|jd|j�t|jdd�}|jdk	r�|dk	r�tj	||jt
j�}|r�|jd�q�|jd�n |jdk	r�|jd�n
|jd�dd	j|�S)
N�closed�closingzfd=%s�	_selector�polling�idle�openz<%s>� )
r!r�r��appendr�r��getattrr�r
�_test_selector_eventrZ
EVENT_READ�join)rr=r r�rrr�__repr__ns$




z_UnixReadPipeTransport.__repr__cCs�ytj|j|j�}WnDttfk
r,Yn�tk
rX}z|j|d�WYdd}~Xn^X|rl|jj	|�nJ|j
j�r�tj
d|�d|_|j
j|j�|j
j|jj�|j
j|jd�dS)Nz"Fatal read error on pipe transportz%r was closed by peerT)r{�readr��max_size�BlockingIOError�InterruptedErrorr9�_fatal_errorr�Z
data_receivedr��	get_debugrr=r��_remove_readerr�Zeof_received�_call_connection_lost)rr0rCrrrr��s
z"_UnixReadPipeTransport._read_readycCs|jj|j�dS)N)r�r�r�)rrrr�
pause_reading�sz$_UnixReadPipeTransport.pause_readingcCs|jj|j|j�dS)N)r�r�r�r�)rrrr�resume_reading�sz%_UnixReadPipeTransport.resume_readingcCs
||_dS)N)r�)rrPrrr�set_protocol�sz#_UnixReadPipeTransport.set_protocolcCs|jS)N)r�)rrrr�get_protocol�sz#_UnixReadPipeTransport.get_protocolcCs|jS)N)r�)rrrr�
is_closing�sz!_UnixReadPipeTransport.is_closingcCs|js|jd�dS)N)r��_close)rrrrr%�sz_UnixReadPipeTransport.closecCs,|jdk	r(tjd|t|d�|jj�dS)Nzunclosed transport %r)r$)r�r*r+r,r%)rrrr�__del__�s
z_UnixReadPipeTransport.__del__�Fatal error on pipe transportcCsZt|t�r4|jtjkr4|jj�rLtjd||dd�n|jj||||j	d��|j
|�dS)Nz%r: %sT)�exc_info)�message�	exceptionrrrP)rKr9r>ZEIOr�r�r�debug�call_exception_handlerr�r�)rrCr�rrrr��s
z#_UnixReadPipeTransport._fatal_errorcCs(d|_|jj|j�|jj|j|�dS)NT)r�r�r�r�r�r�)rrCrrrr��sz_UnixReadPipeTransport._closecCs4z|jj|�Wd|jj�d|_d|_d|_XdS)N)r��connection_lostr�r%r�)rrCrrrr��s
z,_UnixReadPipeTransport._call_connection_losti)NN)r�)r�r�r�r�rr�r�r�r�r�r�r�r%r�PY34r�r�r�r�r�rr)r!rrNMs
rNcs�eZdZd%�fdd�	Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zejr|dd�Zdd�Zd&dd �Zd'd!d"�Zd#d$�Z�ZS)(rTNc
s�t�j||�||jd<||_|j�|_||_t�|_d|_	d|_
tj|j�j
}tj|�}tj|�}tj|�}	|px|px|	s�d|_d|_d|_td��t|j�|jj|jj|�|	s�|r�tjjd�r�|jj|jj|j|j�|dk	r�|jjtj|d�dS)NrOrFz?Pipe transport is only for pipes, sockets and character devices�aix)rrr�r�r7r�r��	bytearray�_buffer�
_conn_lostr�r{r�r|ryr�r�rzr8r�r�r�r�r&�platform�
startswithr�r�r	r�)
rr�rOrPrQrRr�Zis_charZis_fifoZ	is_socket)r!rrr�s2






z _UnixWritePipeTransport.__init__cCs�|jjg}|jdkr |jd�n|jr0|jd�|jd|j�t|jdd�}|jdk	r�|dk	r�tj	||jt
j�}|r�|jd�n
|jd�|j�}|jd|�n |jdk	r�|jd�n
|jd�d	d
j
|�S)Nr�r�zfd=%sr�r�r�z
bufsize=%sr�z<%s>r�)r!r�r�r�r�r�r�r�r
r�rZEVENT_WRITE�get_write_buffer_sizer�)rr=r r�r_rrrr��s(





z _UnixWritePipeTransport.__repr__cCs
t|j�S)N)�lenr�)rrrrr�sz-_UnixWritePipeTransport.get_write_buffer_sizecCs6|jj�rtjd|�|jr*|jt��n|j�dS)Nz%r was closed by peer)r�r�rr=r�r��BrokenPipeError)rrrrr�s

z#_UnixWritePipeTransport._read_readycCs0t|tttf�stt|���t|t�r.t|�}|s6dS|jsB|jrj|jtj	krXt
jd�|jd7_dS|j�syt
j|j|�}WnTttfk
r�d}Yn:tk
r�}z|jd7_|j|d�dSd}~XnX|t|�kr�dS|dk�rt|�|d�}|jj|j|j�|j|7_|j�dS)Nz=pipe closed by peer or os.write(pipe, data) raised exception.rrz#Fatal write error on pipe transport)rK�bytesr��
memoryviewrj�reprr�r�rZ!LOG_THRESHOLD_FOR_CONNLOST_WRITESr�warningr�r{�writer�r�r�rZr�r�r�Z_add_writer�_write_readyZ_maybe_pause_protocol)rr0�nrCrrrr�s4


z_UnixWritePipeTransport.writecCs�|jstd��ytj|j|j�}Wnjttfk
r:Yn�tk
r�}z8|jj�|j	d7_	|j
j|j�|j|d�WYdd}~XnfX|t
|j�kr�|jj�|j
j|j�|j�|jr�|j
j|j�|jd�dS|dkr�|jd|�=dS)NzData should not be emptyrz#Fatal write error on pipe transportr)r�rjr{r�r�r�r�rZr-r�r��_remove_writerr�r�Z_maybe_resume_protocolr�r�r�)rr�rCrrrr�>s(


z$_UnixWritePipeTransport._write_readycCsdS)NTr)rrrr�
can_write_eofXsz%_UnixWritePipeTransport.can_write_eofcCsB|jr
dS|jst�d|_|js>|jj|j�|jj|jd�dS)NT)	r�r�rjr�r�r�r�r�r�)rrrr�	write_eof[s
z!_UnixWritePipeTransport.write_eofcCs
||_dS)N)r�)rrPrrrr�dsz$_UnixWritePipeTransport.set_protocolcCs|jS)N)r�)rrrrr�gsz$_UnixWritePipeTransport.get_protocolcCs|jS)N)r�)rrrrr�jsz"_UnixWritePipeTransport.is_closingcCs|jdk	r|jr|j�dS)N)r�r�r�)rrrrr%msz_UnixWritePipeTransport.closecCs,|jdk	r(tjd|t|d�|jj�dS)Nzunclosed transport %r)r$)r�r*r+r,r%)rrrrr�vs
z_UnixWritePipeTransport.__del__cCs|jd�dS)N)r�)rrrr�abort|sz_UnixWritePipeTransport.abort�Fatal error on pipe transportcCsPt|tj�r*|jj�rBtjd||dd�n|jj||||jd��|j	|�dS)Nz%r: %sT)r�)r�r�rrrP)
rKrZ_FATAL_ERROR_IGNOREr�r�rr�r�r�r�)rrCr�rrrr�s
z$_UnixWritePipeTransport._fatal_errorcCsFd|_|jr|jj|j�|jj�|jj|j�|jj|j|�dS)NT)	r�r�r�r�r�r-r�r�r�)rrCrrrr��s
z_UnixWritePipeTransport._closecCs4z|jj|�Wd|jj�d|_d|_d|_XdS)N)r�r�r�r%r�)rrCrrrr��s
z-_UnixWritePipeTransport._call_connection_lost)NN)r�)N)r�r�r�rr�r�r�r�r�r�r�r�r�r�r%rr�r�r�r�r�r�r�rr)r!rrT�s$%	!	

rT�set_inheritablecCsNttdd�}tj|tj�}|s4tj|tj||B�ntj|tj||@�dS)NZ
FD_CLOEXECr)r�r�ZF_GETFDZF_SETFD)r�ZinheritableZcloexec_flag�oldrrr�_set_inheritable�s
r�c@seZdZdd�ZdS)rWc		Ksvd}|tjkr*|jj�\}}t|j�d�tj|f||||d|d�|��|_|dk	rr|j�t	|j
�d|d�|j_dS)NF)r[r\r]r^Zuniversal_newlinesr_�wb)�	buffering)�
subprocess�PIPEr�r#r�r7�Popen�_procr%r��detachr\)	rrBr[r\r]r^r_r`Zstdin_wrrr�_start�s
z_UnixSubprocessTransport._startN)r�r�r�r�rrrrrW�srWc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)raHAbstract base class for monitoring child processes.

    Objects derived from this class monitor a collection of subprocesses and
    report their termination or interruption by a signal.

    New callbacks are registered with .add_child_handler(). Starting a new
    process must be done within a 'with' block to allow the watcher to suspend
    its activity until the new process if fully registered (this is needed to
    prevent a race condition in some implementations).

    Example:
        with watcher:
            proc = subprocess.Popen("sleep 1")
            watcher.add_child_handler(proc.pid, callback)

    Notes:
        Implementations of this class must be thread-safe.

        Since child watcher objects may catch the SIGCHLD signal and call
        waitpid(-1), there should be only one active object per process.
    cGs
t��dS)aRegister a new child handler.

        Arrange for callback(pid, returncode, *args) to be called when
        process 'pid' terminates. Specifying another callback for the same
        process replaces the previous handler.

        Note: callback() must be thread-safe.
        N)�NotImplementedError)rrerArBrrrrX�s	z&AbstractChildWatcher.add_child_handlercCs
t��dS)z�Removes the handler for process 'pid'.

        The function returns True if the handler was successfully removed,
        False if there was nothing to remove.N)r�)rrerrr�remove_child_handler�sz)AbstractChildWatcher.remove_child_handlercCs
t��dS)z�Attach the watcher to an event loop.

        If the watcher was previously attached to an event loop, then it is
        first detached before attaching to the new loop.

        Note: loop may be None.
        N)r�)rr�rrr�attach_loop�sz AbstractChildWatcher.attach_loopcCs
t��dS)zlClose the watcher.

        This must be called to make sure that any underlying resource is freed.
        N)r�)rrrrr%�szAbstractChildWatcher.closecCs
t��dS)zdEnter the watcher's context and allow starting new processes

        This function must return selfN)r�)rrrr�	__enter__szAbstractChildWatcher.__enter__cCs
t��dS)zExit the watcher's contextN)r�)r�a�b�crrr�__exit__	szAbstractChildWatcher.__exit__N)
r�r�r�r�rXr�r�r%r�r�rrrrr�s
c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�BaseChildWatchercCsd|_i|_dS)N)r��
_callbacks)rrrrrszBaseChildWatcher.__init__cCs|jd�dS)N)r�)rrrrr%szBaseChildWatcher.closecCs
t��dS)N)r�)r�expected_pidrrr�_do_waitpidszBaseChildWatcher._do_waitpidcCs
t��dS)N)r�)rrrr�_do_waitpid_allsz BaseChildWatcher._do_waitpid_allcCs~|dkst|tj�st�|jdk	r<|dkr<|jr<tjdt�|jdk	rT|jj	t
j�||_|dk	rz|jt
j|j
�|j�dS)NzCA loop is being detached from a child watcher with pending handlers)rKrZAbstractEventLooprjr�r�r*r+�RuntimeWarningr)r5�SIGCHLDrE�	_sig_chldr�)rr�rrrr�s
zBaseChildWatcher.attach_loopcCsFy|j�Wn4tk
r@}z|jjd|d��WYdd}~XnXdS)Nz$Unknown exception in SIGCHLD handler)r�r�)r�rZr�r�)rrCrrrr�1szBaseChildWatcher._sig_chldcCs2tj|�rtj|�Stj|�r*tj|�S|SdS)N)r{�WIFSIGNALED�WTERMSIG�	WIFEXITED�WEXITSTATUS)r�statusrrr�_compute_returncode=s



z$BaseChildWatcher._compute_returncodeN)
r�r�r�rr%r�r�r�r�r�rrrrr�sr�csPeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�ZS)rad'Safe' child watcher implementation.

    This implementation avoids disrupting other code spawning processes by
    polling explicitly each process in the SIGCHLD handler instead of calling
    os.waitpid(-1).

    This is a safe solution but it has a significant overhead when handling a
    big number of children (O(n) each time SIGCHLD is raised)
    cs|jj�t�j�dS)N)r�r-rr%)r)r!rrr%Vs
zSafeChildWatcher.closecCs|S)Nr)rrrrr�ZszSafeChildWatcher.__enter__cCsdS)Nr)rr�r�r�rrrr�]szSafeChildWatcher.__exit__cGs.|jdkrtd��||f|j|<|j|�dS)NzICannot add child handler, the child watcher does not have a loop attached)r�r:r�r�)rrerArBrrrrX`s

z"SafeChildWatcher.add_child_handlercCs&y|j|=dStk
r dSXdS)NTF)r�rG)rrerrrr�ks
z%SafeChildWatcher.remove_child_handlercCs"xt|j�D]}|j|�qWdS)N)r(r�r�)rrerrrr�rsz SafeChildWatcher._do_waitpid_allcCs�|dkst�ytj|tj�\}}Wn(tk
rJ|}d}tjd|�Yn0X|dkrXdS|j|�}|jj	�rztj
d||�y|jj|�\}}Wn.t
k
r�|jj	�r�tjd|dd�YnX|||f|��dS)Nr�z8Unknown child process pid %d, will report returncode 255z$process %s exited with returncode %sz'Child watcher got an unexpected pid: %rT)r�)rjr{�waitpid�WNOHANG�ChildProcessErrorrr�r�r�r�r�r��poprG)rr�rer�rfrArBrrrr�ws,


zSafeChildWatcher._do_waitpid)r�r�r�r�r%r�r�rXr�r�r�r�rr)r!rrKs	csTeZdZdZ�fdd�Z�fdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�ZS)raW'Fast' child watcher implementation.

    This implementation reaps every terminated processes by calling
    os.waitpid(-1) directly, possibly breaking other code spawning processes
    and waiting for their termination.

    There is no noticeable overhead when handling a big number of children
    (O(1) each time a child terminates).
    cs$t�j�tj�|_i|_d|_dS)Nr)rr�	threadingZLock�_lock�_zombies�_forks)r)r!rrr�s

zFastChildWatcher.__init__cs"|jj�|jj�t�j�dS)N)r�r-r�rr%)r)r!rrr%�s

zFastChildWatcher.closec
Cs$|j�|jd7_|SQRXdS)Nr)r�r�)rrrrr��szFastChildWatcher.__enter__c
CsV|j�:|jd8_|js$|jr(dSt|j�}|jj�WdQRXtjd|�dS)Nrz5Caught subprocesses termination from unknown pids: %s)r�r�r�r;r-rr�)rr�r�r�Zcollateral_victimsrrrr��s
zFastChildWatcher.__exit__cGsz|jstd��|jdkr td��|j�:y|jj|�}Wn"tk
rZ||f|j|<dSXWdQRX|||f|��dS)NzMust use the context managerzICannot add child handler, the child watcher does not have a loop attached)	r�rjr�r:r�r�r�rGr�)rrerArBrfrrrrX�s
z"FastChildWatcher.add_child_handlercCs&y|j|=dStk
r dSXdS)NTF)r�rG)rrerrrr��s
z%FastChildWatcher.remove_child_handlercCs�x�ytjdtj�\}}Wntk
r,dSX|dkr:dS|j|�}|j�vy|jj|�\}}WnBtk
r�|j	r�||j
|<|jj�r�t
jd||�wd}YnX|jj�r�t
jd||�WdQRX|dkr�t
jd||�q|||f|��qWdS)Nrrz,unknown process %s exited with returncode %sz$process %s exited with returncode %sz8Caught subprocess termination from unknown pid: %d -> %dr2)r{r�r�r�r�r�r�r�rGr�r�r�r�rr�r�)rrer�rfrArBrrrr��s6





z FastChildWatcher._do_waitpid_all)r�r�r�r�rr%r�r�rXr�r�r�rr)r!rr�s	csHeZdZdZeZ�fdd�Zdd�Z�fdd�Zdd	�Z	d
d�Z
�ZS)�_UnixDefaultEventLoopPolicyz:UNIX event loop policy with a watcher for child processes.cst�j�d|_dS)N)rr�_watcher)r)r!rrrs
z$_UnixDefaultEventLoopPolicy.__init__c
CsHtj�8|jdkr:t�|_ttj�tj�r:|jj|j	j
�WdQRXdS)N)rr�rrrKr��current_thread�_MainThreadr��_localr�)rrrr�
_init_watchers
z)_UnixDefaultEventLoopPolicy._init_watchercs6t�j|�|jdk	r2ttj�tj�r2|jj|�dS)z�Set the event loop.

        As a side effect, if a child watcher was set before, then calling
        .set_event_loop() from the main thread will call .attach_loop(loop) on
        the child watcher.
        N)r�set_event_looprrKr�rrr�)rr�)r!rrrs
z*_UnixDefaultEventLoopPolicy.set_event_loopcCs|jdkr|j�|jS)zzGet the watcher for child processes.

        If not yet set, a SafeChildWatcher object is automatically created.
        N)rr)rrrrrV&s
z-_UnixDefaultEventLoopPolicy.get_child_watchercCs4|dkst|t�st�|jdk	r*|jj�||_dS)z$Set the watcher for child processes.N)rKrrjrr%)rrarrr�set_child_watcher0s

z-_UnixDefaultEventLoopPolicy.set_child_watcher)r�r�r�r�rZ
_loop_factoryrrrrVrr�rr)r!rrs
r)5r�r>r{r5r"ryr�r&r�r*�rrrrrrr	r
rrr
�logr�__all__r��ImportErrorr�fspathrx�AttributeErrorZBaseSelectorEventLoopr�hasattrr�r�Z
ReadTransportrNZ_FlowControlMixinZWriteTransportrTr�r�ZBaseSubprocessTransportrWrr�rrZBaseDefaultEventLoopPolicyrrrrrrr�<module>sn


O
F=On2

© 2025 UnknownSec
Web Design for Beginners | Anyleson - Learning Platform
INR (₹)
India Rupee
$
United States Dollar
Web Design for Beginners

Web Design for Beginners

in Design
Created by Linda Anderson
+2
5 Users are following this upcoming course
Course Published
This course was published already and you can check the main course
Course
Web Design for Beginners
in Design
4.25
1:45 Hours
8 Jul 2021
₹11.80

What you will learn?

Create any website layout you can imagine

Support any device size with Responsive (mobile-friendly) Design

Add tasteful animations and effects with CSS3

Course description

You can launch a new career in web development today by learning HTML & CSS. You don't need a computer science degree or expensive software. All you need is a computer, a bit of time, a lot of determination, and a teacher you trust. I've taught HTML and CSS to countless coworkers and held training sessions for fortune 100 companies. I am that teacher you can trust. 


Don't limit yourself by creating websites with some cheesy “site-builder" tool. This course teaches you how to take 100% control over your webpages by using the same concepts that every professional website is created with.


This course does not assume any prior experience. We start at square one and learn together bit by bit. By the end of the course you will have created (by hand) a website that looks great on phones, tablets, laptops, and desktops alike.


In the summer of 2020 the course has received a new section where we push our website live up onto the web using the free GitHub Pages service; this means you'll be able to share a link to what you've created with your friends, family, colleagues and the world!

Requirements

No prerequisite knowledge required

No special software required

Comments (0)

Report course

Please describe about the report short and clearly.

Share

Share course with your friends