U
    9%e                     @   s^   d dl Z d dlZd dlZd dlmZ G dd d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   Z/var/www/html/Darija-Ai-API/env/lib/python3.8/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 krt| j|S tdt| j dd S )Nr   'z ' object has no attribute 'conn')__dict__getattrr   AttributeError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                    s>   t  j|| t| j| _t| j| _| jj| _| jj| _d S r   )	superr	   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                    s2   t | jts$t| j| _t| j| _t   d S r   )
isinstancer"   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multiprocessingr   Zmultiprocessing.reductionr   r   queuesr    r)   r   r   r   r   <module>   s   	