o
    i|                     @   s"   d dl Z d dlZG dd dZdS )    Nc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	CallbackzA callback is when synchronized call needs to call outside functions passed into it.

    Currently only supports non-generator functions.c                 C   s   || _ || _d S N)_synchronizer_f)selfsynchronizerf r	   J/home/ubuntu/.local/lib/python3.10/site-packages/synchronicity/callback.py__init__
   s   
zCallback.__init__c                 C   sj   | j |i |}t|r!zt }||W |  S |  w t|r*tdt	|r3td|S )Nz"Async generators are not supportedzGenerators are not supported)
r   inspectiscoroutineasyncionew_event_looprun_until_completeclose
isasyncgenRuntimeErrorisgenerator)r   argskwargsresloopr	   r	   r
   _invoke   s   



zCallback._invokec                    sF   | j |}| j |}t }|d | j||I d H }| j |S r   )r   _translate_outr   get_event_looprun_in_executorr   _translate_in)r   r   r   r   r   r	   r	   r
   __call__   s   zCallback.__call__N)__name__
__module____qualname____doc__r   r   r   r	   r	   r	   r
   r      s
    r   )r   r   r   r	   r	   r	   r
   <module>   s    