
    g                         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y)    N)util)FullQueueSimpleQueue	_sentinel)assert_spawning   )dumps)r   r   r   c                   H     e Zd Zd fd	Zd Zd Zd Zed        Zd Z	 xZ
S )r   c                 6    t         |   ||       || _        y )N)maxsizectxsuper__init__	_reducers)selfr   reducersr   	__class__s       Y/var/www/openai/venv/lib/python3.12/site-packages/joblib/externals/loky/backend/queues.pyr   zQueue.__init__   s    c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__$   sU    MMLLLLNNKKKKIIJJ

 
	
r   c           
          |\	  | _         | _        | _        | _        | _        | _        | _        | _        | _        t        j                  dk\  r| j                          y | j                          y )N)   	   )r   r   r   r   r   r   r   r    r!   sysversion_info_reset_after_forkr   states     r   __setstate__zQueue.__setstate__2   s]     
	
MLLNKKIJv%KKMr   c                    t        j                  d       | j                  j                          t	        j
                  t        j                  | j                  | j                  | j                  | j                  | j                  j                  | j                  | j                  | j                  | j                   f	d      | _        d| j"                  _        t        j                  d       | j"                  j'                          t        j                  d       | j(                  t+        j,                         k(  }| j.                  sV|sTt        j0                  | j"                  t        j2                  t5        j6                  | j"                        gd      | _        t        j0                  | t        j:                  | j                  | j                  gd	      | _        y )
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   sR   

*+ 	 '';;  """"++		
 %
 #

/0

23 #'**		";""+B#}}$$T\\*+	 D mm!!\\4>>*	
r   c	                 >   t        j                  d       |j                  }	|j                  }
|j                  }| j
                  }t        }t        j                  dk7  r|j                  }|j                  }nd }	 	  |	        	 | s |         |
        	 	  |       }||u rt        j                  d        |        y t        ||      }|	 ||       n |        	  ||                ~~Z#  |
        w xY w#          w xY w# t        $ r Y nw xY wn# t        $ ry}|r#t        |dd      t        j                  k(  rY d }~y t        j                         rt        j                   d|        Y d }~y |j                           ||       Y d }~nd }~ww xY w$)Nz$starting thread to feed data to pipewin32z%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   s|    	

9:####>><<7" ((H ((HH)$
!J&j(? JJ'NO!G"  %S8<#+&t,$J+ *4 0 (
%  J$ !)
 "   $GAw$:ekk$I
 ??$II 7s;<%%'AsOO$= sx   <D 	C0 D (D >D C< &
D 0	C99D <	DD 	DD DD 	F! F,F7FFc                 ,    ddl }|j                          y)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      s4    "

$/
d 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   c                 4    t         |   |       || _        y )N)r   r   )r   r   r   r   s      r   r   zSimpleQueue.__init__   s    S! "r   c                 l    | j                   j                          | j                  j                          y r   )r   r>   r   r"   s    r   r>   zSimpleQueue.close   s"    r   c                     t        |        | j                  | j                  | j                  | j                  | j
                  fS r   )r   r   r   r   r   r   r"   s    r   r#   zSimpleQueue.__getstate__   s7    LLLLNNKKKK
 	
r   c                 F    |\  | _         | _        | _        | _        | _        y r   )r   r   r   r   r   r+   s     r   r-   zSimpleQueue.__setstate__   s%     	
LLNKKr   c                     t        || j                        }| j                  | j                  j	                  |       y | j                  5  | j                  j	                  |       d d d        y # 1 sw Y   y xY w)NrQ   )r
   r   r   r   r`   )r   rl   s     r   putzSimpleQueue.put   sQ    C$..1;;LL##C('', s   A11A:)NN)	rr   rs   rt   r   r>   r#   r-   r~   rv   rw   s   @r   r   r      s    "

-r   r   )rC   r'   rR   rH   r9   multiprocessingr   multiprocessing.queuesr   r   mp_Queuer   mp_SimpleQueuer   multiprocessing.contextr   	reductionr
   __all__ r   r   <module>r      sM    
 
       4  +cH cL(-. (-r   