a
    ÛEbw  ã                   @   s0   d dl Z d dlZd dlZd dlmZ dd„ ZdS )é    N)ÚSynchronousOnlyOperationc                    s,   ‡ fdd„}t ˆ ƒr$ˆ }d‰ ||ƒS |S dS )z•
    Decorator to mark functions as async-unsafe. Someone trying to access
    the function while in an async context will get an error message.
    c                    s   t  ˆ ¡‡ ‡fdd„ƒ}|S )Nc                     sB   t j d¡s4zt ¡  W n ty*   Y n
0 tˆƒ‚ˆ | i |¤ŽS )NZDJANGO_ALLOW_ASYNC_UNSAFE)ÚosÚenvironÚgetÚasyncioÚget_running_loopÚRuntimeErrorr   )ÚargsÚkwargs)ÚfuncÚmessage© úT/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/django/utils/asyncio.pyÚinner   s    z.async_unsafe.<locals>.decorator.<locals>.inner)Ú	functoolsÚwraps)r   r   ©r   )r   r   Ú	decorator   s    zasync_unsafe.<locals>.decoratorzKYou cannot call this from an async context - use a thread or sync_to_async.N)Úcallable)r   r   r   r   r   r   Úasync_unsafe   s    ÿr   )r   r   r   Zdjango.core.exceptionsr   r   r   r   r   r   Ú<module>   s   