
    Ih$                         d Z ddlZddlZddlZddlmZ dej                  defdZdej                  dej                  fdZ	dej                  defd	Z
dej                  d
edefdZy)z%Code related to handling annotations.    N)isclassvaluereturnc                 h    t         j                  dk  r| t        d      u S | t        j                  k(  S )z'Check if the given value is a NoneType.   
   N)sysversion_infotypetypesNoneType)r   s    Q/var/www/html/planif/env/lib/python3.12/site-packages/celery/utils/annotations.pyis_none_typer   	   s.    
'!T
""ENN""    
annotationc                 :   t        j                  |       }|t         j                  k7  r't        j                  dk\  r|t
        j                  k7  ryt        j                  |       }t        |      dk7  ryt        d |D              }t        d |D              }|r|S y)zWGet the argument from an Optional[...] annotation, or None if it is no such annotation.r   N   c              3   2   K   | ]  }t        |        y wNr   .0args     r   	<genexpr>z#get_optional_arg.<locals>.<genexpr>   s     ?S|C(?s   c              3   8   K   | ]  }t        |      r|  y wr   r   r   s     r   r   z#get_optional_arg.<locals>.<genexpr>   s     GC\#5FCGs   )typing
get_originUnionr
   r   r   	UnionTypeget_argslenanynext)r   origin
union_argshas_none_argtype_args        r   get_optional_argr)      s    z*F3#3#3w#>6U__C\,J
:!?J??L G:GGHr   c                     dt         j                  cxk  rdk  r(n t        |       S t        | t        j                        ryt        |       S )zTTest if a given annotation is a class that can be used in isinstance()/issubclass().)r   	   )r      F)r
   r   
isinstancer   GenericAliasr   )r   s    r   annotation_is_classr/   %   sB    
 !!+G+: 1;:uGYGY0Z:r   clsc                 4    t        |       xr t        | |      S )z4Test if a given annotation is of the given subclass.)r/   
issubclass)r   r0   s     r   annotation_issubclassr3   /   s    z*Jz*c/JJr   )__doc__r
   r   r   inspectr   Anyboolr   r)   r/   r   r3    r   r   <module>r9      s    + 
   #

 #t # 

 (FJJ 4 Kfjj Kt K Kr   