a
    .=icê  ã                   @   s`   d dl Z d dlZd dlmZ d dlZG dd„ deƒZG dd„ dejj	ƒZ	G dd„ dejj
ƒZ
dS )	é    N)ÚForkingPicklerc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚConnectionWrapperz^Proxy class for _multiprocessing.Connection which uses ForkingPickler to
    serialize objectsc                 C   s
   || _ d S ©N)Úconn)Úselfr   © r   úl/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/torch/multiprocessing/queue.pyÚ__init__   s    zConnectionWrapper.__init__c                 C   s,   t  ¡ }t|tjƒ |¡ |  | ¡ ¡ d S r   )ÚioÚBytesIOr   ÚpickleÚHIGHEST_PROTOCOLÚdumpZ
send_bytesÚgetvalue)r   ÚobjÚbufr   r   r   Úsend   s    zConnectionWrapper.sendc                 C   s   |   ¡ }t |¡S r   )Z
recv_bytesr   Úloads)r   r   r   r   r   Úrecv   s    zConnectionWrapper.recvc                 C   s0   d| j v rt| j|ƒS td t| ƒjd¡ƒ‚d S )Nr   z!'{}' object has no attribute '{}')Ú__dict__Úgetattrr   ÚAttributeErrorÚformatÚtypeÚ__name__)r   Únamer   r   r   Ú__getattr__   s
    

ÿzConnectionWrapper.__getattr__N)r   Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r   r   r   r      s
   r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚQueuec                    sF   t t| ƒj|i |¤Ž t| jƒ| _t| jƒ| _| jj| _| jj| _	d S r   )
Úsuperr    r	   r   Ú_readerÚ_writerr   Z_sendr   Z_recv)r   ÚargsÚkwargs©Ú	__class__r   r   r	       s
    
zQueue.__init__)r   r   r   r	   Ú__classcell__r   r   r&   r   r       s   r    c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚSimpleQueuec                    s6   t | jtƒs$t| jƒ| _t| jƒ| _tt| ƒ ¡  d S r   )Ú
isinstancer"   r   r#   r!   r)   Ú_make_methods)r   r&   r   r   r+   *   s    zSimpleQueue._make_methods)r   r   r   r+   r(   r   r   r&   r   r)   (   s   r)   )r
   Zmultiprocessing.queuesÚmultiprocessingZmultiprocessing.reductionr   r   Úobjectr   Úqueuesr    r)   r   r   r   r   Ú<module>   s   
