
    .Ph                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z
mZmZ d dlmZ ddlmZ g dZ G d d	e
          Z	 G d
 de          ZdS )    N)util)FullQueueSimpleQueue	_sentinel)assert_spawning   )dumps)r   r   r   c                   N     e Zd Zd	 fd	Zd Zd Zd Zed             Zd Z	 xZ
S )
r   r   Nc                 \    t                                          ||           || _        d S )N)maxsizectxsuper__init__	_reducers)selfr   reducersr   	__class__s       d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/joblib/externals/loky/backend/queues.pyr   zQueue.__init__   s+    c222!    c           	          t          |            | j        | j        | j        | j        | j        | j        | j        | j        | j	        f	S N)
r   _ignore_epipe_maxsize_reader_writerr   _rlock_wlock_sem_opidr   s    r   __getstate__zQueue.__getstate__$   sH    MLLNKKIJ

 
	
r   c           
          |\	  | _         | _        | _        | _        | _        | _        | _        | _        | _        t          j
        dk    r|                                  d S |                                  d S )N)   	   )r   r   r   r   r   r   r   r    r!   sysversion_info_reset_after_forkr   states     r   __setstate__zQueue.__setstate__2   sq     
	
MLLNKKIJv%%KKMMMMMr   c                    t          j        d           | j                                         t	          j        t          j        | j        | j        | j	        | j
        | j        j        | j        | j        | j        | j        f	d          | _        d| j        _        t          j        d           | j                                         t          j        d           | j        t+          j                    k    }| j        sF|sDt          j        | j        t          j        t5          j        | j                  gd          | _        t          j        | t          j        | j        | j        gd	          | _        d S )
NzQueue._start_thread()QueueFeederThread)targetargsnameTzdoing self._thread.start()z... done self._thread.start())exitpriority
   )r   debug_bufferclear	threadingThreadr   _feed	_notempty_send_bytesr   r   closer   r   _on_queue_feeder_errorr    _threaddaemonstartr!   osgetpid_joincancelledFinalize_finalize_joinweakrefref_jointhread_finalize_close_close)r   created_by_this_processs     r   _start_threadzQueue._start_threadD   s]   
*+++ 	 '; ""+	
 %
 
 
 #
/000
2333 #'*	";" 	+B 	#}$T\**+	     D m!\4>*	
 
 
r   c	                 ^   t          j        d           |j        }	|j        }
|j        }| j        }t          }t          j        dk    r|j        }|j        }nd }	 	  |	             	 | s
 |              |
             n#  |
             w xY w	 	  |            }||u r t          j        d            |             d S t          ||          }| ||           n0 |             	  ||            |             n#  |             w xY w~~# t          $ r Y nw xY wn# t          $ r}|r%t          |dd          t          j        k    rY d }~d S t          j                    rt          j        d|            Y d }~d S |                                  |||           Y d }~nd }~ww xY wU)	Nz$starting thread to feed data to pipewin32Tz%feeder thread got sentinel -- exitingr   errnor   zerror in queue thread: )r   r6   acquirereleasewaitpopleftr   r'   platformr
   
IndexErrorBaseExceptiongetattrrR   EPIPE
is_exitinginfo)buffernotempty
send_bytes	writelockr>   r   ignore_epipeonerror	queue_semnacquirenreleasenwaitbpopleftsentinelwacquirewreleaseobjobj_es                      r   r;   zQueue._feedv   s2    	
9:::##><7"" (H (HHH*	$)$


!  HJJJJHHJJJJ&&hjj(?? J'NOOO!EGGG"F  %S8<<<#+&Jt,,,,$HJJJ+ *
4 0 0 0 (







%&& "   D  $ $ $ GAw$:$:ek$I$IFFFFF
 ?$$ $I;;;<<<FFFFF%%'''GAsOOOOOOOO$=*	$sx   
D &A= 2D =B		D -D <)D &C< 1D <DD 
DD DD 
F*)!F%*F%  F%%F*c                 6    ddl }|                                 dS )z
        Private API hook called when feeding data in the background thread
        raises an exception.  For overriding by concurrent.futures.
        r   N)	traceback	print_exc)r   rn   rl   rp   s       r   r?   zQueue._on_queue_feeder_error   s(    
 	r   )r   NN)__name__
__module____qualname__r   r#   r-   rN   staticmethodr;   r?   __classcell__r   s   @r   r   r      s        " " " " " "

 
 
  $/
 /
 /
d A$ A$ \A$F      r   r   c                   8     e Zd Zd fd	Zd Zd Zd Zd Z xZS )r   Nc                 Z    t                                          |           || _        d S )N)r   r   )r   r   r   r   s      r   r   zSimpleQueue.__init__   s+    S!!! "r   c                 j    | j                                          | j                                         d S r   )r   r>   r   r"   s    r   r>   zSimpleQueue.close   s0    r   c                 `    t          |            | j        | j        | j        | j        | j        fS r   )r   r   r   r   r   r   r"   s    r   r#   zSimpleQueue.__getstate__   s3    LLNKK
 	
r   c                 H    |\  | _         | _        | _        | _        | _        d S r   )r   r   r   r   r   r+   s     r   r-   zSimpleQueue.__setstate__   s)     	
LLNKKKKr   c                     t          || j                  }| j        | j                            |           d S | j        5  | j                            |           d d d            d S # 1 swxY w Y   d S )NrQ   )r
   r   r   r   r`   )r   rl   s     r   putzSimpleQueue.put   s    C$.111;L##C((((( - -'',,,- - - - - - - - - - - - - - - - - -s   A))A-0A-)NN)	rr   rs   rt   r   r>   r#   r-   r~   rv   rw   s   @r   r   r      sy        " " " " " "  

 
 
  - - - - - - -r   r   )rC   r'   rR   rH   r9   multiprocessingr   multiprocessing.queuesr   r   mp_Queuer   mp_SimpleQueuer   multiprocessing.contextr   	reductionr
   __all__ r   r   <module>r      s   
			 



                              4 3 3 3 3 3       +
*
*c c c c cH c c cL(- (- (- (- (-. (- (- (- (- (-r   