
    Xj*                    .   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ e	rd dlmZ d dlmZ  G d	 d
e      Z G d d      Z G d de      Z G d de      Z  G d de      Z! G d de      Z"y)    )annotationsN)iscoroutinefunction)TYPE_CHECKINGAnyAsyncContextManagerAsyncIteratorCallableContextManagerIteratorList
NamedTupleOptionalTypeUnion)SchemaExtension)AwaitableOrValueawait_maybe)TracebackType)Hookc                  ,    e Zd ZU ded<   ded<   ded<   y)WrappedHookr   	extensionzECallable[..., Union[AsyncContextManager[None], ContextManager[None]]]hookboolis_asyncN)__name__
__module____qualname____annotations__     j/var/www/html/myl_app/scheduler-service/venv/lib/python3.12/site-packages/strawberry/extensions/context.pyr   r       s    
OONr!   r   c                      e Zd ZU dZddZded<   ded<   ded<   ded<   ddZdd	Ze	 	 d	 	 	 	 	 	 	 dd       Z	e	 	 	 	 	 	 dd       Z
ddZ	 	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZy
)ExtensionContextManagerBase)hooksdeprecation_messagedefault_hookasync_exit_stack
exit_stackc                b    d| j                    d| j                   d| j                   d| _        y )Nz#Event driven styled extensions for z or z are deprecated, use z instead)LEGACY_ENTERLEGACY_EXIT	HOOK_NAMEDEPRECATION_MESSAGE)clss    r"   __init_subclass__z-ExtensionContextManagerBase.__init_subclass__/   s6    1 S__$5#CMM?(< 	r!   strr-   r.   r+   r,   c                    g | _         t        t        | j                        | _        |D ]1  }| j                  |      }|s| j                   j                  |       3 y N)r%   getattrr   r-   r'   get_hookappend)self
extensionsr   r   s       r"   __init__z$ExtensionContextManagerBase.__init__;   sN    (*
")/4>>"J# 	(I==+D

!!$'	(r!   c                   t        || j                  d       }t        || j                  d       }|d uxs |d u}t        t        |      | j                        }|| j
                  ur|nd }|r|t        | d      |r9t        j                  | j                  t        d       | j                  |||      S |rt        j                  |      r7t        j                  t!        j"                  ||            }t%        ||d      S t        j&                  |      r7t        j(                  t!        j"                  ||            }t%        ||d      S t+        |      r| j-                  ||      S t        d| j                   d| d	|      y )
NzG defines both legacy and new style extension hooks for {self.HOOK_NAME}   )
stacklevelFr   r   r   TzHook z on z must be callable, received )r4   r+   r,   typer-   r'   
ValueErrorwarningswarnr.   DeprecationWarningfrom_legacyinspectisgeneratorfunction
contextlibcontextmanagertypes
MethodTyper   isasyncgenfunctionasynccontextmanagercallablefrom_callable)r7   r   on_starton_end	is_legacyhook_fncontext_managercontext_manager_asyncs           r"   r5   z$ExtensionContextManagerBase.get_hookC   s   9d&7&7>D$4$4d;D(>F$,>	")$y/4>>"J$D,=,=='4,+ # #  MM$224FSTU##Ix@@**73",";";$$Wi8# #'o  ))'2(2(F(F$$Wi8)% #'.Cd   )))W=='tI; 7..5[: 
 r!   Nc                    t              st              r(t        j                  dfd       }t        | |d      S t        j                  dfd       }t        | |d      S )Nc                   K   rt                       d {    d   rt                        d {    y y 7 %7 wr3   )r   rO   rN   s   r"   iteratorz9ExtensionContextManagerBase.from_legacy.<locals>.iteratorv   s@     %hj111%fh/// 	 2
 0s   A?AAAATr=   c               3  <   K   r         d   r          y y wr3   r    rV   s   r"   iterator_asyncz?ExtensionContextManagerBase.from_legacy.<locals>.iterator_async   s     JH s   F)returnr   rZ   zIterator[None]r   rF   rK   r   rG   )r   rN   rO   rW   rY   s    ``  r"   rC   z'ExtensionContextManagerBase.from_legacyn   sj     x(,?,G++0 ,0 DQQ && ' RWXXr!   c                     t              r(t        j                  d fd       }t         |d      S t        j                  d fd       }t         |d      S )Nc                <   K            d {    d  y 7 
wr3   r    r   funcs   r"   rW   z;ExtensionContextManagerBase.from_callable.<locals>.iterator   s     9o%% &s   Tr=   c               3  &   K            d  y wr3   r    r_   s   r"   rW   z;ExtensionContextManagerBase.from_callable.<locals>.iterator   s     Ys   F)rZ   zAsyncIterator[None]r[   r\   )r   r`   rW   s   `` r"   rM   z)ExtensionContextManagerBase.from_callable   sa    
 t$++ , DQQ && ' ERRr!   c                B   t        j                         | _        | j                  j                          | j                  D ]]  }|j
                  r&t        d|j                   d| j                   d      | j                  j                  |j                                _ y )NzSchemaExtension hook .z" failed to complete synchronously.)rF   	ExitStackr)   	__enter__r%   r   RuntimeErrorr   r-   enter_contextr   r7   r   s     r"   re   z%ExtensionContextManagerBase.__enter__   s    $..0!!#JJ 	;D}}"+DNN+;1T^^<L M8 8 
 --diik:	;r!   c                >    | j                   j                  |||       y r3   )r)   __exit__r7   exc_typeexc_valexc_tbs       r"   rj   z$ExtensionContextManagerBase.__exit__   s     	  7F;r!   c                z  K   t        j                         | _        | j                  j                          d {    | j                  D ]i  }|j
                  r2| j                  j                  |j                                d {    A| j                  j                  |j                                k y 7 }7 3wr3   )	rF   AsyncExitStackr(   
__aenter__r%   r   enter_async_contextr   rg   rh   s     r"   rq   z&ExtensionContextManagerBase.__aenter__   s      * 9 9 ;##..000JJ 	AD}}++??		LLL%%33DIIK@		A 	1 Ms"   7B;B7AB;B92B;9B;c                Z   K   | j                   j                  |||       d {    y 7 wr3   )r(   	__aexit__rk   s       r"   rt   z%ExtensionContextManagerBase.__aexit__   s&      ##--hHHHs   !+)+)rZ   None)r8   zList[SchemaExtension]rZ   ru   )r   r   rZ   zOptional[WrappedHook])NN)r   r   rN   Optional[Callable[[], None]]rO   rv   rZ   r   )r   r   r`   z2Callable[[SchemaExtension], AwaitableOrValue[Any]]rZ   r   )rl   zOptional[Type[BaseException]]rm   zOptional[BaseException]rn   zOptional[TracebackType]rZ   ru   )r   r   r   	__slots__r0   r   r9   r5   staticmethodrC   rM   re   rj   rq   rt   r    r!   r"   r$   r$   &   s   I
 N()V  26/3Y"Y.Y -Y 
	Y YB S"S@S 
S S*;</< )< (	<
 
<	AI/I )I (	I
 
Ir!   r$   c                  @    e Zd Zej                  j                   ZdZdZy)OperationContextManageron_request_starton_request_endN)r   r   r   r   on_operationr-   r+   r,   r    r!   r"   rz   rz      s    ,,55I%L"Kr!   rz   c                  @    e Zd Zej                  j                   ZdZdZy)ValidationContextManageron_validation_starton_validation_endN)r   r   r   r   on_validater-   r+   r,   r    r!   r"   r   r      s    ++44I(L%Kr!   r   c                  @    e Zd Zej                  j                   ZdZdZy)ParsingContextManageron_parsing_starton_parsing_endN)r   r   r   r   on_parser-   r+   r,   r    r!   r"   r   r      s    ((11I%L"Kr!   r   c                  @    e Zd Zej                  j                   ZdZdZy)ExecutingContextManageron_executing_starton_executing_endN)r   r   r   r   
on_executer-   r+   r,   r    r!   r"   r   r      s    **33I'L$Kr!   r   )#
__future__r   rF   rD   rH   r@   asyncior   typingr   r   r   r   r	   r
   r   r   r   r   r   r   strawberry.extensionsr   strawberry.utils.await_mayber   r   r   $strawberry.extensions.base_extensionr   r   r$   rz   r   r   r   r    r!   r"   <module>r      s    "     '    2 F#9* gI gIT#9 #&: &#7 #%9 %r!   