
    Xjl                        U d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
 erd dlmZ d dlmZ d dlmZ e	def   Zd	ed
<   e	dee   f   Zd	ed<    G d d      Z G d de      Z	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 ddZdgZy)    )annotationsN)cached_property)TYPE_CHECKINGAny	AwaitableCallableUnion)	TypeAlias)Info)StrawberryField.r
   SyncExtensionResolverAsyncExtensionResolverc                  p    e Zd ZddZ	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 d	dZed
d       Zed
d       Zy)FieldExtensionc                     y N )selffields     r/var/www/html/myl_app/scheduler-service/venv/lib/python3.12/site-packages/strawberry/extensions/field_extension.pyapplyzFieldExtension.apply   s        c                    t        d      )Nz6Sync Resolve is not supported for this Field ExtensionNotImplementedErrorr   next_sourceinfokwargss        r   resolvezFieldExtension.resolve   s     "D
 	
r   c                    K   t        d      w)Nz7Async Resolve is not supported for this Field Extensionr   r   s        r   resolve_asynczFieldExtension.resolve_async   s      "E
 	
s   c                L    t        |       j                  t        j                  uS r   )typer!   r   r   s    r   supports_synczFieldExtension.supports_sync$   s    Dz!!)?)???r   c                L    t        |       j                  t        j                  uS r   )r%   r#   r   r&   s    r   supports_asynczFieldExtension.supports_async(   s    Dz''~/K/KKKr   N)r   r   returnNone)
r   r   r   r   r   r   r    r   r*   r   
r   r   r   r   r   r   r    r   r*   r   )r*   bool)	__name__
__module____qualname__r   r!   r#   r   r'   r)   r   r   r   r   r      s    
*
47
?C
OR
	

+
58
@D
PS
	
 @ @ L Lr   r   c                  ,    e Zd ZdZ	 	 	 	 	 	 	 	 	 	 ddZy)SyncToAsyncExtensionz^Helper class for mixing async extensions with sync resolvers.

    Applied automatically.
    c                   K    |||fi |S wr   r   r   s        r   r#   z"SyncToAsyncExtension.resolve_async3   s      VT,V,,s   Nr,   )r.   r/   r0   __doc__r#   r   r   r   r2   r2   -   s4    
-+-58-@D-PS-	-r   r2   c                @    | D cg c]  }|j                    c}S c c}w r   )r!   
extensions	extensions     r   _get_sync_resolversr9   9   s     0::)I:::   c                @    | D cg c]  }|j                    c}S c c}w r   )r#   r6   s     r   _get_async_resolversr<   ?   s     6@@	I##@@@r:   c                   | j                   sg S | j                   D cg c]  }|j                  r| }}dj                  |D cg c]  }|j                  j                   c}      }| j
                  r?t        |      dkD  rt        d| d| j                   d      t        | j                         S | j                   D cg c]  }|j                  r| }}t        |      dk(  rt        | j                         S d}d}| j                   D ]  }||v r n||v r|dz  }|dz  } t        |      |k(  r_t        t        j                  t        | j                   d|       t               j                   gt        | j                   |d                   S dj                  |D cg c]  }|j                  j                   c}      }t        d| d	| d
| j                   d      c c}w c c}w c c}w c c}w )a  Builds a list of resolvers for a field with extensions.

    Verifies that all of the field extensions for a given field support
    sync or async depending on the field resolver.

    Inserts a SyncToAsyncExtension to be able to use Async extensions on sync resolvers
    Throws a TypeError otherwise.

    Returns True if resolving should be async, False on sync resolving
    based on the resolver and extensions
    ,r   z"Cannot add sync-only extension(s) z  to the async resolver of Field z8. Please add a resolve_async method to the extension(s).   Nz#Cannot mix async-only extension(s) z with sync-only extension(s) z
 on Field zd. If possible try to change the execution order so that all sync-only extensions are executed first.)r7   r)   join	__class__r.   is_asynclen	TypeErrornamer<   r'   r9   list	itertoolschainr2   r#   )r   r8   non_async_extensionsnon_async_extension_namesnon_sync_extensionsfound_sync_extensionsfound_sync_only_extensionsasync_extension_namess           r   build_field_extension_resolversrO   E   sF    	 $)#3#39;S;S	  !$7KL)			%	%L! ~~#$q(45N4O P227** >IJ 
 $E$4$455 (-'7'7
#y?V?VI
 
 "#q(&u'7'788 !" &'")) 	'I//00*a/*!Q&!	' #$(BB'(8(89O:O(PQ)+99:()9)9:O:P)QR  !$;NOiY  ))O!
 12G1H I++D*E F

| $-.
 	
A 	M"
R Ps"   G$G$G)G.G.!G3)r7   list[FieldExtension]r*   zlist[SyncExtensionResolver])r7   rP   r*   zlist[AsyncExtensionResolver])r   r   r*   z:list[Union[SyncExtensionResolver, AsyncExtensionResolver]])
__future__r   rG   	functoolsr   typingr   r   r   r   r	   typing_extensionsr
   strawberry.typesr   strawberry.types.fieldr   r   __annotations__r   r   r2   r9   r<   rO   __all__r   r   r   <module>rY      s    "  % A A+%6 $,CH#5 y 5$,S)C.-@$A 	 AL L6	-> 	-;$; ;A$A!AW
W
?W
t 
r   