U
    O.e                     @   s   U d Z ddlZddlZddlZddlZddlmZmZ ee	Z
edjZeed< edjZeed< G dd	 d	ejjZed
ejf ed< e dkrddlZejZneZdS )z3Helpers for cross-plaform multiprocessing support.
    N)CallableTypeforkForkProcessspawnSpawnProcessc                       sH   e Zd ZdZ fddZ fddZ fddZdd	 Zd
d Z  Z	S )MacSafeQueuea   Multiprocessing queues do not have qsize attributes on MacOS.
    This is slower but more portable version of the multiprocessing Queue
    that adds a explicit counter

    Reference : https://github.com/keras-team/autokeras/commit/4ddd568b06b4045ace777bc0fb7bc18573b85a75
    c                    s4   d|krt  |d< t j|| t dd| _d S )Nctxir   )multiprocessingget_contextsuper__init__Value_counter)selfargskwargs	__class__ s/mounts/lovelace/software/anaconda3/envs/qiime2-shotgun-2023.9/lib/python3.8/site-packages/parsl/multiprocessing.pyr      s    zMacSafeQueue.__init__c              	      s8   t  j||}| j  | j jd7  _W 5 Q R X |S N   )r   putr   get_lockvaluer   r   r   xr   r   r   r   !   s    zMacSafeQueue.putc              	      s8   t  j||}| j  | j jd8  _W 5 Q R X |S r   )r   getr   r   r   r   r   r   r   r   (   s    zMacSafeQueue.getc                 C   s   | j jS Nr   r   r   r   r   r   qsize/   s    zMacSafeQueue.qsizec                 C   s
   | j j S r    r!   r"   r   r   r   empty2   s    zMacSafeQueue.empty)
__name__
__module____qualname____doc__r   r   r   r#   r$   __classcell__r   r   r   r   r      s   r   .
SizedQueueDarwin)r(   loggingr   Zmultiprocessing.queuesplatformtypingr   r   	getLoggerr%   loggerr   Processr   __annotations__r   queuesQueuer   systemr*   r   r   r   r   <module>   s   
&