
    Xj3                       d dl mZ d dlZd dlZd dlZd dlm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 d dlmZmZmZmZ d dlmZ d dlmZmZmZmZm Z m!Z! d d	l"m#Z# d d
l$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ e	rd dlm0Z0 d dl1m2Z2 d dl3m4Z4 ejj                  ejl                  ejn                  ejp                  ejj                  ejl                  ejn                  fZ9 G d d      Z:ddZ;dgZ<y)    )annotationsN)abc)Enum)TYPE_CHECKINGAnyDict
ForwardRefListOptionalTupleTypeTypeVarUnioncast)	AnnotatedSelfget_args
get_origin)NotAStrawberryEnumError)StrawberryListStrawberryObjectDefinitionStrawberryOptionalStrawberryTypeVarget_object_definitionhas_object_definition)EnumDefinition)LazyType)
is_private)ScalarDefinition)UNSET)	eval_type
is_genericis_type_var)StrawberryType)StrawberryFieldStrawberryUnionc                     e Zd ZdZdd	 	 	 	 	 ddZd dZd!dZe	 d"	 	 	 	 	 d#d       Ze	d$d       Z
e
j                  d%d	       Z
d&d
Z	 	 	 	 d'dZd(dZd(dZd)dZd*dZd+dZd,dZd-dZd.dZd/dZed0d       Zed1d       Zed1d       Zed1d       Zed2d       Zed1d       Zed3d       Zed2d       Zed4d       Z ed5d       Z!y)6StrawberryAnnotationraw_annotation	namespace__resolve_cache__Nr,   c               .    || _         || _        d | _        y Nr*   )self
annotationr,   s      b/var/www/html/myl_app/scheduler-service/venv/lib/python3.12/site-packages/strawberry/annotation.py__init__zStrawberryAnnotation.__init__;   s     )"HL    c                p    t        |t              st        S | j                         |j                         k(  S r0   )
isinstancer)   NotImplementedresolve)r1   others     r3   __eq__zStrawberryAnnotation.__eq__F   s*    %!56!!||~00r5   c                4    t        | j                               S r0   )hashr9   r1   s    r3   __hash__zStrawberryAnnotation.__hash__L   s    DLLN##r5   c                F    | y t        | t              st        | |      S | S )Nr.   )r7   r)   r2   r,   s     r3   from_annotationz$StrawberryAnnotation.from_annotationO   s+     *&:;'
iHHr5   c                Z    	 | j                         S # t        $ r | j                  cY S w xY w)zHReturn evaluated type on success or fallback to raw (string) annotation.)evaluate	NameErrorr+   r>   s    r3   r2   zStrawberryAnnotation.annotationZ   s0    	'==?" 	' &&&	's    **c                     || _         d | _        y r0   )r+   r-   )r1   values     r3   r2   zStrawberryAnnotation.annotationd   s    #!%r5   c                    | j                   }t        |t              rt        |      }t	        || j
                  d      }|S )zEReturn evaluated annotation using `strawberry.util.typing.eval_type`.N)r+   r7   strr	   r!   r,   )r1   r2   evaled_types      r3   rD   zStrawberryAnnotation.evaluatej   s9    ((
j#&#J/J
DNNDAr5   c                    | j                  |      r | j                  | j                  |            S t        |      t        u r(t        |      ^}}| j                  |      \  }}|||z   fS |g fS r0   )_is_async_type_get_type_with_args_strip_async_typer   r   r   )r1   rJ   argsstripped_typestripped_argss        r3   rM   z(StrawberryAnnotation._get_type_with_argsu   sy     {+++D,B,B;,OPPk"i/!)+!6K$+/+C+CK+P(M= $"666Br5   c                \    | j                   | j                         | _         | j                   S )z)Return resolved (transformed) annotation.)r-   _resolver>   s    r3   r9   zStrawberryAnnotation.resolve   s(    !!)%)]]_D"%%%r5   c                   t        t        | j                               }t        |      r|S g }| j	                  |      \  }}| j                  |      r|S | j                  |      r| j                  |      S | j                  |      r.t        d t        |      D              r|S | j                  |      S | j                  |      r| j                  |      S | j                  ||      r| j                  |      S | j!                  ||      r| j#                  ||      S t%        |      s|t&        u r| j)                  t        t*        |            S | j-                  |      r|S |S )Nc              3  2   K   | ]  }t        |        y wr0   )r#   .0type_s     r3   	<genexpr>z0StrawberryAnnotation._resolve.<locals>.<genexpr>   s     I%;u%I   )r   r   rD   r   rM   _is_lazy_type_is_listcreate_list_is_graphql_genericanyr   create_concrete_type_is_enumcreate_enum_is_optionalcreate_optional	_is_unioncreate_unionr#   r   create_type_varr   _is_strawberry_type)r1   rJ   rO   s      r3   rS   zStrawberryAnnotation._resolve   sI   30k" 44[ATk*==%##K00##K0I8K3HII"",,[99 ==%##K00{D1''44^^K.$$[$77%)<''Wk(BCC%%k2 r5   c                    t         j                  |j                  j                     }|j                  | _        d | _        y r0   )sysmodulesorigin
__module____dict__r,   r-   )r1   fieldmodules      r3   set_namespace_from_fieldz-StrawberryAnnotation.set_namespace_from_field   s-    U\\445!%r5   c                j    t        |      r|j                  j                  |      S t        d|       )NzNot supported )r   __strawberry_definition__resolve_generic
ValueErrorr1   rJ   s     r3   r`   z)StrawberryAnnotation.create_concrete_type   s3     -88HHUU>+788r5   c                L    	 |j                   S # t        $ r t        |      w xY wr0   )_enum_definitionAttributeErrorr   rv   s     r3   rb   z StrawberryAnnotation.create_enum   s-    	7/// 	7)+66	7s    #c                |    t        |      ^}}t        || j                        j                         }t	        |      S )NrA   )r   r)   r,   r9   r   )r1   rJ   	item_type_of_types        r3   r]   z StrawberryAnnotation.create_list   s=     -	A& nn
 ') 	
 g&&r5   c                    t        |      }t        t        d |            }t        |   }t	        || j
                        j                         }t        |      S )Nc                B    | t        d       uxr | t        t              uS r0   )typer    )xs    r3   <lambda>z6StrawberryAnnotation.create_optional.<locals>.<lambda>   s    !4:-F!4;2F r5   rA   )r   tuplefilterr   r)   r,   r9   r   )r1   rJ   typesnon_optional_types
child_typer}   s         r3   rd   z$StrawberryAnnotation.create_optional   s_    %"F
 -.
&!nn
 ') 	
 "'**r5   c                    t        |      S r0   )r   rv   s     r3   rg   z$StrawberryAnnotation.create_type_var   s     --r5   c                   ddl m} t        ||      r|S t        |      }|s|f} |t	        d |D                    }|D cg c]  }t        ||      s| }}t        |      dkD  rt        j                  d       |rZ|d   }|j                  |_        |j                  |_	        |j                  |_
        |j                  |_        |j                  |_        |S c c}w )Nr   r&   c              3  2   K   | ]  }t        |        y wr0   )r)   rV   s     r3   rY   z4StrawberryAnnotation.create_union.<locals>.<genexpr>   s     "R5#7#>"RrZ   )type_annotations   zQDuplicate union definition detected. Only the first definition will be considered)strawberry.types.unionr'   r7   r   r   lenloggingwarninggraphql_namedescription
directives_source_file_source_line)r1   rJ   rO   r'   r   unionarg
union_argss           r3   rf   z!StrawberryAnnotation.create_union   s    : k?3%  NE""RE"RR
 &*NcZ_-McN
Nz?QOO?
 Q-C!$!1!1E #E"~~E!$!1!1E!$!1!1E! Os   CCc                ,    t        |dd       }|t        v S )N
__origin__)getattrASYNC_TYPES)clsr2   rl   s      r3   rL   z#StrawberryAnnotation._is_async_type  s    \48$$r5   c                D    t        |t              syt        |t              S NF)r7   r   
issubclassr   r   r2   s     r3   ra   zStrawberryAnnotation._is_enum  s     *d+*d++r5   c                    t        |d      r8t        |j                        x}r|j                  S t	        |j                        S y)Nr   F)hasattrr   r   is_graphql_genericr"   )r   r2   
definitions      r3   r^   z(StrawberryAnnotation._is_graphql_generic  sB    :|,2:3H3HIIzI!444j3344r5   c                "    t        |t              S r0   )r7   r   r   s     r3   r[   z"StrawberryAnnotation._is_lazy_type  s    *h//r5   c                b    | j                  ||      syt        |      }t        d |D              S )z5Returns True if the annotation is Optional[SomeType].Fc              3  6   K   | ]  }|t        d       u   y wr0   )r   rW   r   s     r3   rY   z4StrawberryAnnotation._is_optional.<locals>.<genexpr>-  s     2q1T
?2s   )re   r   r_   )r   r2   rO   r   s       r3   rc   z!StrawberryAnnotation._is_optional#  s2     }}Z.$ 2E222r5   c                    t        |      }t        |dg       }t        d |D              }|t        t        fv xs |t
        j                  u xs |S )z%Returns True if annotation is a List.__mro__c              3  ,   K   | ]  }|t         u   y wr0   )listr   s     r3   rY   z0StrawberryAnnotation._is_list.<locals>.<genexpr>4  s     8Aa4i8s   )r   r   r_   r   r   r   Sequence)r   r2   annotation_originannotation_mrois_lists        r3   r\   zStrawberryAnnotation._is_list/  sY     'z2 Y;888 4-/  CLL0	
r5   c                   ddl m} t        |t              ryt	        |      ryt        |t
              ryt        |      ryt        |t              ryt        |t              ryt        |t              ryt        ||      ryy)Nr   r&   TF)
r   r'   r7   r   _is_input_typer   r   r   r   r   )r   rJ   r'   s      r3   rh   z(StrawberryAnnotation._is_strawberry_type<  sv     	;k>2K(^4";/%?@%78)
 _5r5   c                    t         j                  dk\  rddlm} t	        ||      ryt        |dd      }|t        j                  u ryddlm	 t        fd|D              S )	z&Returns True if annotation is a Union.)   
   r   )	UnionTypeTr   Nr&   c              3  6   K   | ]  }t        |        y wr0   )r7   )rW   r   r'   s     r3   rY   z1StrawberryAnnotation._is_union.<locals>.<genexpr>m  s     D:c?3Ds   )rj   version_infor   r   r7   r   typingr   r   r'   r_   )r   r2   rO   r   r   r'   s        @r3   re   zStrawberryAnnotation._is_unionW  sW     w&'*i0
 $JdC,:DtDDDr5   c                     |j                   d   S )Nr   )__args__r   s     r3   rN   z&StrawberryAnnotation._strip_async_typeo  s    ""1%%r5   c                "    |j                         S r0   )resolve_typer   s     r3   _strip_lazy_typez%StrawberryAnnotation._strip_lazy_types  s    &&((r5   )r2   Union[object, str]r,   Optional[Dict[str, Any]]returnNone)r:   objectr   bool)r   intr0   )r2   r   r,   r   r   zOptional[StrawberryAnnotation])r   r   )rG   r   r   r   )r   r   )rJ   	Type[Any]r   zTuple[Type[Any], List[Any]])r   zUnion[StrawberryType, type])ro   r%   r   r   )rJ   r   r   r   )rJ   r   r   r   )rJ   r   r   r   )rJ   r   r   r   )rJ   r   r   r   )rJ   r   rO   z	list[Any]r   r'   )r2   r   r   r   )r2   r   r   r   )r2   r   rO   z	List[Any]r   r   )rJ   r   r   r   )r2   r   r   r   )r2   zLazyType[Any, Any]r   r   )"__name__rm   __qualname__	__slots__r4   r;   r?   staticmethodrB   propertyr2   setterrD   rM   r9   rS   rq   r`   rb   r]   rd   rg   rf   classmethodrL   ra   r^   r[   rc   r\   rh   re   rN   r    r5   r3   r)   r)   8   s   BI /3		M&	M ,		M
 
	M1$ BF'?	'  ' ' & &
	$	$&$L&9
7'+..#J % % , ,   0 0 	3 	3 

 

  4 E E. & & ) )r5   r)   c                F    t        |       sy| j                  j                  S r   )r   rs   is_input)rX   s    r3   r   r   }  s     '**333r5   )rX   r   r   r   )=
__future__r   r   rj   r   collectionsr   enumr   r   r   r   r	   r
   r   r   r   r   r   r   typing_extensionsr   r   r   r   +strawberry.exceptions.not_a_strawberry_enumr   strawberry.types.baser   r   r   r   r   r   strawberry.types.enumr   strawberry.types.lazy_typer   strawberry.types.privater   strawberry.types.scalarr   strawberry.types.unsetr    strawberry.utils.typingr!   r"   r#   r$   strawberry.types.fieldr%   r   r'   AsyncGeneratorAsyncIterableAsyncIteratorAsyncContextManagerr   r)   r   __all__r   r5   r3   <module>r      s    "  
       D C O  1 / / 4 ( F F466 



}) })J
4 "
"r5   