
    $g*                    T   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"dS )    )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<   dS )WrappedHookr   	extensionzECallable[..., Union[AsyncContextManager[None], ContextManager[None]]]hookboolis_asyncN)__name__
__module____qualname____annotations__     ]/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/strawberry/extensions/context.pyr   r       s1         OOOONNNNNr!   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dS )+ExtensionContextManagerBase)hooksdeprecation_messagedefault_hookasync_exit_stack
exit_stackreturnNonec                F    d| j          d| j         d| j         d| _        d S )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__/   sH    << <%(_< <$'M< < < 	r!   strr/   r0   r-   r.   
extensionsList[SchemaExtension]c                    g | _         t          t          | j                  | _        |D ]3}|                     |          }|r| j                             |           4d S N)r%   getattrr   r/   r'   get_hookappend)selfr4   r   r   s       r"   __init__z$ExtensionContextManagerBase.__init__;   sf    (*
")/4>"J"J# 	( 	(I==++D (
!!$'''	( 	(r!   r   r   Optional[WrappedHook]c                (   t          || j        d           }t          || j        d           }|d up|d u}t          t          |          | j                  }|| j        ur|nd }|r|t          | d          |r8t          j        | j	        t          d           |                     |||          S |rt          j        |          r9t          j        t!          j        ||                    }t%          ||d          S t          j        |          r9t          j        t!          j        ||                    }t%          ||d          S t+          |          r|                     ||          S t          d| j         d| d	|          d S )
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 )r8   r-   r.   typer/   r'   
ValueErrorwarningswarnr0   DeprecationWarningfrom_legacyinspectisgeneratorfunction
contextlibcontextmanagertypes
MethodTyper   isasyncgenfunctionasynccontextmanagercallablefrom_callable)r;   r   on_starton_end	is_legacyhook_fncontext_managercontext_manager_asyncs           r"   r9   z$ExtensionContextManagerBase.get_hookC   s   9d&7>>D$4d;;D(>F$,>	")$y//4>"J"J$D,===''4 	A, # # #    	AM$24FSTUUUU##Ix@@@ 	*733 ",";$Wi88# # #'o    )'22 (2(F$Wi88) )% #'.Cd       >)))W===: : :I : :.5: :  
 tr!   NrR   Optional[Callable[[], None]]rS   r   c                    t                    st                    r+t          j        d	fd            }t          | |d          S t          j        d
fd            }t          | |d          S )Nr*   r   c                   K   rt                                  d {V  d W V   rt                                   d {V  d S d S r7   )r   rS   rR   s   r"   iteratorz9ExtensionContextManagerBase.from_legacy.<locals>.iteratorv   s~       2%hhjj111111111 0%ffhh///////////0 0r!   TrA   Iterator[None]c               3  H   K   r
              d V   r               d S d S r7   r    r[   s   r"   iterator_asyncz?ExtensionContextManagerBase.from_legacy.<locals>.iterator_async   sD       HJJJ FHHHHH r!   F)r*   r   r*   r]   r   rJ   rO   r   rK   )r   rR   rS   r\   r_   s    ``  r"   rG   z'ExtensionContextManagerBase.from_legacyn   s     x(( 	Y,?,G,G 	Y+0 0 0 0 0 0 ,+0 DQQQQ &      '& RWXXXXr!   func2Callable[[SchemaExtension], AwaitableOrValue[Any]]c                     t                    r+t          j        d	 fd            }t           |d          S t          j        d
 fd            }t           |d          S )Nr*   AsyncIterator[None]c                8   K                d {V  d W V  d S r7   r    r   rb   s   r"   r\   z;ExtensionContextManagerBase.from_callable.<locals>.iterator   s6      d9oo%%%%%%%r!   TrA   r]   c               3  *   K                d V  d S r7   r    rg   s   r"   r\   z;ExtensionContextManagerBase.from_callable.<locals>.iterator   s!      Yr!   F)r*   re   r`   ra   )r   rb   r\   s   `` r"   rQ   z)ExtensionContextManagerBase.from_callable   s    
 t$$ 	S+      ,+ DQQQQ &      '& ERRRRr!   c                "   t          j                    | _        | j                                         | j        D ]U}|j        r t          d|j         d| j         d          | j        	                    |
                                           Vd S )NzSchemaExtension hook .z" failed to complete synchronously.)rJ   	ExitStackr)   	__enter__r%   r   RuntimeErrorr   r/   enter_contextr   r;   r   s     r"   rl   z%ExtensionContextManagerBase.__enter__   s    $.00!!###J 	; 	;D} ;"8DN 8 8T^ 8 8 8  
 --diikk::::	; 	;r!   exc_typeOptional[Type[BaseException]]exc_valOptional[BaseException]exc_tbOptional[TracebackType]c                >    | j                             |||           d S r7   )r)   __exit__r;   rp   rr   rt   s       r"   rw   z$ExtensionContextManagerBase.__exit__   s$     	  7F;;;;;r!   c                X  K   t          j                    | _        | j                                         d {V  | j        D ]h}|j        r3| j                            |                                           d {V  <| j                            |                                           id S r7   )	rJ   AsyncExitStackr(   
__aenter__r%   r   enter_async_contextr   rn   ro   s     r"   r{   z&ExtensionContextManagerBase.__aenter__   s       * 9 ; ;#..000000000J 	A 	AD} A+??		LLLLLLLLLL%33DIIKK@@@@		A 	Ar!   c                N   K   | j                             |||           d {V  d S r7   )r(   	__aexit__rx   s       r"   r~   z%ExtensionContextManagerBase.__aexit__   s;       #--hHHHHHHHHHHHr!   )r*   r+   )r4   r5   r*   r+   )r   r   r*   r=   )NN)r   r   rR   rX   rS   rX   r*   r   )r   r   rb   rc   r*   r   )rp   rq   rr   rs   rt   ru   r*   r+   )r   r   r   	__slots__r2   r   r<   r9   staticmethodrG   rQ   rl   rw   r{   r~   r    r!   r"   r$   r$   &   s:        I
 
 
 
 NNN( ( ( () ) ) )V  26/3Y Y Y Y \YB S S S \S*; ; ; ;< < < <	A 	A 	A 	AI I I I I Ir!   r$   c                  .    e Zd Zej        j         ZdZdZdS )OperationContextManageron_request_starton_request_endN)r   r   r   r   on_operationr/   r-   r.   r    r!   r"   r   r      s#        ,5I%L"KKKr!   r   c                  .    e Zd Zej        j         ZdZdZdS )ValidationContextManageron_validation_starton_validation_endN)r   r   r   r   on_validater/   r-   r.   r    r!   r"   r   r      s#        +4I(L%KKKr!   r   c                  .    e Zd Zej        j         ZdZdZdS )ParsingContextManageron_parsing_starton_parsing_endN)r   r   r   r   on_parser/   r-   r.   r    r!   r"   r   r      s#        (1I%L"KKKr!   r   c                  .    e Zd Zej        j         ZdZdZdS )ExecutingContextManageron_executing_starton_executing_endN)r   r   r   r   
on_executer/   r-   r.   r    r!   r"   r   r      s#        *3I'L$KKKr!   r   )#
__future__r   rJ   rH   rL   rD   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$   r   r   r   r   r    r!   r"   <module>r      sM   " " " " " "        ' ' ' ' ' '                            2 1 1 1 1 1 F F F F F F F F :######999999    *   gI gI gI gI gI gI gI gIT# # # # #9 # # #& & & & &: & & &# # # # #7 # # #% % % % %9 % % % % %r!   