HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/billiard/__pycache__/queues.cpython-310.pyc
o

!we�1�@s�ddlZddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
ddlmZddl
mZmZddlmZmZmZmZmZmZdd	lmZgd
�ZGdd�d�Ze�ZGd
d�de�ZGdd�d�ZGdd�de�ZdS)�N�)�
connection)�context)�	get_errno)�	monotonic)�Empty�Full)�debug�error�info�Finalize�register_after_fork�
is_exiting)�ForkingPickler)�Queue�SimpleQueue�
JoinableQueuec@s�eZdZdZd)dd�Zdd�Zdd�Zd	d
�Zd*d
d�Zd*dd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zed#d$��Zed%d&��Zed'd(��ZdS)+rz4
    Queue type using a pipe, buffer and thread
    rcOs�z|d}Wntytd��w|dkrddlm}||_tjdd�\|_|_|�	�|_
t��|_
tjdkr<d|_n|�	�|_|�|�|_d|_|��tjdkr[t|tj�dSdS)	N�ctxz-missing 1 required keyword-only argument: ctxrr)�
SEM_VALUE_MAXF��duplex�win32)�KeyError�	TypeError�synchronizer�_maxsizer�Pipe�_reader�_writer�Lock�_rlock�os�getpid�_opid�sys�platform�_wlock�BoundedSemaphore�_sem�
_ignore_epipe�_after_forkr
r��self�maxsize�args�kwargsr�r0�H/home/arjun/projects/env/lib/python3.10/site-packages/billiard/queues.py�__init__#s(�




�zQueue.__init__cCs.t�|�|j|j|j|j|j|j|j|j	fS�N)
r�assert_spawningr)rrrr r&r(r#�r,r0r0r1�__getstate__<s
�zQueue.__getstate__c	Cs0|\|_|_|_|_|_|_|_|_|��dSr3)	r)rrrr r&r(r#r*�r,�stater0r0r1�__setstate__As�zQueue.__setstate__cCsvtd�t�t���|_t��|_d|_d|_	d|_
d|_d|_|j
j|_|jj|_|j
j|_|jj|_|jj|_dS)NzQueue._after_fork()F)r	�	threading�	Conditionr�	_notempty�collections�deque�_buffer�_thread�_jointhread�_joincancelled�_closed�_closer�send�_send_bytesr�recv�_recv�
send_bytes�
recv_bytes�_recv_bytes�poll�_pollr5r0r0r1r*Fs




zQueue._after_forkTNcCsp|jrJ�|j�||�st�|j�|jdur|��|j�|�|j�	�Wd�dS1s1wYdSr3)
rCr(�acquirerr<r@�
_start_threadr?�append�notify�r,�obj�block�timeoutr0r0r1�putUs

"�z	Queue.putcCs�|r#|dur#|j�|��}Wd�n1swY|j��n@|r*t�|}|j�||�s3t�z)|rG|t�}|dksD|�|�sFt�n|��sMt�|��}|j��W|j��n|j��wt�	|�S)Nr)
r rKr(�releaserrNrrMr�loads)r,rTrU�res�deadliner0r0r1�get`s*
�

�
z	Queue.getcCs|j|jj��Sr3)rr(�_semlock�
_get_valuer5r0r0r1�qsizeyszQueue.qsizecC�
|��Sr3�rMr5r0r0r1�empty~�
zQueue.emptycCs|jj��Sr3)r(r\�_is_zeror5r0r0r1�full��z
Queue.fullcCs
|�d�S�NF)r[r5r0r0r1�
get_nowait�rbzQueue.get_nowaitcCs|�|d�Srf)rV�r,rSr0r0r1�
put_nowait�rezQueue.put_nowaitcCsLd|_z|j��W|j}|rd|_|�dSdS|j}|r%d|_|�ww)NT)rCr�closerD)r,rjr0r0r1rj�s
���zQueue.closecCs(td�|js	J�|jr|��dSdS)NzQueue.join_thread())r	rCrAr5r0r0r1�join_thread�s

�zQueue.join_threadcCs4td�d|_z|j��WdStyYdSw)NzQueue.cancel_join_thread()T)r	rBrA�cancel�AttributeErrorr5r0r0r1�cancel_join_thread�s�zQueue.cancel_join_threadcCs�td�|j��tjtj|j|j|j|j	|j
j|jfdd�|_
d|j
_td�|j
��td�|jt��k}|jsM|sMt|j
tjt�|j
�gdd�|_t|tj|j|jgd	d�|_dS)
NzQueue._start_thread()�QueueFeederThread)�targetr.�nameTzdoing self._thread.start()z... done self._thread.start()���)�exitpriority�
)r	r?�clearr:�Threadr�_feedr<rFr&rrjr)r@�daemon�startr#r!r"rBr�_finalize_join�weakref�refrA�_finalize_closerD)r,�created_by_this_processr0r0r1rO�s2
��

�
�zQueue._start_threadcCs6td�|�}|dur|��td�dStd�dS)Nzjoining queue threadz... queue thread joinedz... queue thread already dead)r	�join)�twr�threadr0r0r1rz�szQueue._finalize_joincCsDtd�|�|�t�|��Wd�dS1swYdS)Nztelling queue thread to quit)r	rP�	_sentinelrQ)�buffer�notemptyr0r0r1r}�s


"�zQueue._finalize_closecCs�td�|j}|j}|j}|j}	t}
tjdkr|j}|j}nd}zQ	|�z
|s+|�W|�n|�wz3	|	�}
|
|
urHtd�|�WWdSt�	|
�}
|durV||
�n|�z	||
�W|�n|�wq6t
ypYnwq"ty�}zD|r�t|�t
jkr�WYd}~dSzt�r�td|dd�ntd|dd�s�ddl}|��Wn	ty�YnwWYd}~dSWYd}~dSd}~ww)	Nz$starting thread to feed data to piperrz%feeder thread got sentinel -- exitingzerror in queue thread: %rT)�exc_infor)r	rNrW�wait�popleftr�r$r%r�dumps�
IndexError�	Exceptionr�errno�EPIPErrr
�	traceback�	print_exc)r�r�rI�	writelockrj�ignore_epipe�nacquire�nrelease�nwait�bpopleft�sentinel�wacquire�wreleaserS�excr�r0r0r1rw�sn
�


��������zQueue._feed�r�TN)�__name__�
__module__�__qualname__�__doc__r2r6r9r*rVr[r^rardrgrirjrkrnrO�staticmethodrzr}rwr0r0r0r1rs.



&
	
rc@sDeZdZdZddd�Zdd�Zdd�Zddd�Zd
d�Zdd�Z	d
S)rz�
    A queue type which also supports join() and task_done() methods

    Note that if you do not call task_done() for each finished task then
    eventually the counter's semaphore may overflow causing Bad Things
    to happen.
    rcOsNz|d}Wntytd��wtj|||d�|�d�|_|��|_dS)Nrz(missing 1 required keyword argument: ctx)rr)rrrr2�	Semaphore�_unfinished_tasksr;�_condr+r0r0r1r2"s�zJoinableQueue.__init__cCst�|�|j|jfSr3)rr6r�r�r5r0r0r1r6+szJoinableQueue.__getstate__cCs,t�||dd��|dd�\|_|_dS)N���)rr9r�r�r7r0r0r1r9.szJoinableQueue.__setstate__TNc	Cs�|jrJ�|j�||�st�|j�=|j�!|jdur|��|j�	|�|j
��|j��Wd�n1s9wYWd�dSWd�dS1sQwYdSr3)
rCr(rNrr<r�r@rOr?rPr�rWrQrRr0r0r1rV2s


��"�zJoinableQueue.putcCsf|j�&|j�d�std��|jj��r!|j��Wd�dSWd�dS1s,wYdS)NFz!task_done() called too many times)r�r�rN�
ValueErrorr\rc�
notify_allr5r0r0r1�	task_done?s�"�zJoinableQueue.task_donecCsR|j�|jj��s|j��Wd�dSWd�dS1s"wYdSr3)r�r�r\rcr�r5r0r0r1rFs�"�zJoinableQueue.joinr�r�)
r�r�r�r�r2r6r9rVr�rr0r0r0r1rs
	

rc@sZeZdZdZddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�_SimpleQueuez<
    Simplified Queue type -- really just a locked pipe
    FNcCs2tjd||d�\|_|_|jj|_d|_|_dS)NF)r�	rnonblock�	wnonblock)rrrrrLrMr r&)r,r�r�rr0r0r1r2Qs
�
z_SimpleQueue.__init__cCr_r3r`r5r0r0r1raXrbz_SimpleQueue.emptycCst�|�|j|j|j|jfSr3)rr4rrr r&r5r0r0r1r6[s
z_SimpleQueue.__getstate__cCs|\|_|_|_|_dSr3)rrr r&r7r0r0r1r9_sz_SimpleQueue.__setstate__cCs
|j��Sr3)rrJr5r0r0r1�get_payloadbrbz_SimpleQueue.get_payloadcCs|j�|�dSr3)rrI�r,�valuer0r0r1�send_payloadesz_SimpleQueue.send_payloadcCst�|���Sr3)rrXr�r5r0r0r1r[hsz_SimpleQueue.getcCs|�t�|��dSr3)r�rr�rhr0r0r1rVlsz_SimpleQueue.putcCsV|jdurz
|j��Wd|_nd|_w|jdur)z|j��Wd|_dSd|_wdSr3)rrjrr5r0r0r1rjps

�z_SimpleQueue.close)FFN)
r�r�r�r�r2rar6r9r�r�r[rVrjr0r0r0r1r�Ls
r�c@s$eZdZdd�Zdd�Zdd�ZdS)rcOsdz|d}Wntytd��wtjdd�\|_|_|��|_tj	dkr-|��|_
dSd|_
dS)Nrz&missing required keyword argument: ctxFrr)rrrrrrrr r$r%r&)r,r.r/rr0r0r1r2�s�
"zSimpleQueue.__init__cCs4|j�
|j��Wd�S1swYdSr3)r rrJr5r0r0r1r��s$�zSimpleQueue.get_payloadcCsR|jdur
|j�|�dS|j�|j�|�Wd�dS1s"wYdSr3)r&rrIr�r0r0r1r��s

"�zSimpleQueue.send_payloadN)r�r�r�r2r�r�r0r0r0r1r~s	r) r$r!r:r=r{r��rr�compatr�timer�queuerr�utilr	r
rrr
r�	reductionr�__all__r�objectr�rr�rr0r0r0r1�<module>s(	 x32