o
    ADi
                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	Z	d dl
mZmZmZ d dlZd dlmZ e	jG dd dZdddZeejeef ZdS )    )annotationsN)AsyncGenerator)	AnnotatedCallable)DependsFastAPIRequest)_KEY_REGISTRYc                   @  sT   e Zd ZU dZded< ejedZded< eje	j
dZded< ejdddZdS )lifespanat  
    Make a FastAPI lifespan *svcs*-aware.

    Makes sure that the registry is available to the decorated lifespan
    function as a second parameter and that the registry is closed when the
    application exists.

    Async generators are automatically wrapped into an async context manager.

    Args:
        lifespan: The lifespan function to make *svcs*-aware.
    a?  Callable[[FastAPI, svcs.Registry], contextlib.AbstractAsyncContextManager[dict[str, object]]] | Callable[[FastAPI, svcs.Registry], contextlib.AbstractAsyncContextManager[None]] | Callable[[FastAPI, svcs.Registry], AsyncGenerator[dict[str, object], None]] | Callable[[FastAPI, svcs.Registry], AsyncGenerator[None, None]]	_lifespan)factoryzdict[str, object]_statezsvcs.Registryregistryappr   return'AsyncGenerator[dict[str, object], None]c              
   C s   t | jrt| j}n| j}| j4 I d H ; ||| j4 I d H }|p'i | _| j| jt< | jV  W d   I d H  n1 I d H sCw   Y  W d   I d H  d S 1 I d H sYw   Y  d S )N)inspectisasyncgenfunctionr   
contextlibasynccontextmanagerr   r   r	   )selfr   cmstate r   E/var/www/Datamplify/venv/lib/python3.10/site-packages/svcs/fastapi.py__call__6   s   &

Xzlifespan.__call__N)r   r   r   r   )__name__
__module____qualname____doc____annotations__attrsfielddictr   svcsRegistryr   r   r   r   r   r   r   r   r
      s   
 r
   requestr   r   $AsyncGenerator[svcs.Container, None]c              	   C sT   t t| jt4 I dH }|V  W d  I dH  dS 1 I dH s#w   Y  dS )z
    A FastAPI `dependency
    <https://fastapi.tiangolo.com/tutorial/dependencies/>`_ that provides you
    with a request-scoped container.

    Yields:
        A :class:`svcs.Container` that is cleaned up after the request.
    N)r$   	Containergetattrr   r	   )r&   contr   r   r   	containerH   s   	.r+   )r&   r   r   r'   )
__future__r   r   r   collections.abcr   typingr   r   r!   fastapir   r   r   r$   
svcs._corer	   definer
   r+   r(   DepContainerr   r   r   r   <module>   s   
1