
    ¯wg                         d dl Z d dlZd dlZd dlmZ  G d d      Z G d dej                  j                        Z G d dej                  j                        Z	y)	    N)ForkingPicklerc                   (    e Zd ZdZd Zd Zd Zd Zy)ConnectionWrapperz_Proxy class for _multiprocessing.Connection which uses ForkingPickler for object serialization.c                     || _         y N)conn)selfr   s     `/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/multiprocessing/queue.py__init__zConnectionWrapper.__init__   s	    	    c                     t        j                         }t        |t        j                        j                  |       | j                  |j                                y r   )ioBytesIOr   pickleHIGHEST_PROTOCOLdump
send_bytesgetvalue)r	   objbufs      r
   sendzConnectionWrapper.send   s:    jjlsF33499#>'r   c                 L    | j                         }t        j                  |      S r   )
recv_bytesr   loads)r	   r   s     r
   recvzConnectionWrapper.recv   s    oo||C  r   c                     d| j                   v rt        | j                  |      S t        dt	        |       j
                   d      )Nr   'z ' object has no attribute 'conn')__dict__getattrr   AttributeErrortype__name__)r	   names     r
   __getattr__zConnectionWrapper.__getattr__   s?    T]]"499d++qd!4!4 55UVWWr   N)r"   
__module____qualname____doc__r   r   r   r$    r   r
   r   r      s    i(
!Xr   r   c                        e Zd Z fdZ xZS )Queuec                     t        |   |i | t        | j                        | _        t        | j                        | _        | j                  j
                  | _        | j                  j                  | _        y r   )	superr   r   _reader_writerr   _sendr   _recv)r	   argskwargs	__class__s      r
   r   zQueue.__init__   sW    $)&)*;DLL*I*;DLL*I\\&&
\\&&
r   )r"   r%   r&   r   __classcell__r3   s   @r
   r*   r*      s    ' 'r   r*   c                        e Zd Z fdZ xZS )SimpleQueuec                     t        | j                  t              s4t        | j                        | _        t        | j                        | _        t        |           y r   )
isinstancer-   r   r.   r,   _make_methods)r	   r3   s    r
   r:   zSimpleQueue._make_methods'   s=    $,,(9:.?.MDL.?.MDLr   )r"   r%   r&   r:   r4   r5   s   @r
   r7   r7   &   s       r   r7   )
r   multiprocessing.queuesmultiprocessingr   multiprocessing.reductionr   r   queuesr*   r7   r(   r   r
   <module>r?      sM    	   4X X*'O""(( ' /((44  r   