
    leJi$                         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dS )z%Code related to handling annotations.    N)isclassvaluereturnc                 d    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    ^/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/celery/utils/annotations.pyis_none_typer   	   s.    
'!!T

""EN""    
annotationc                 P   t          j        |           }|t           j        k    r"t          j        dk    r|t
          j        k    rdS t          j        |           }t          |          dk    rdS t          d |D                       }t          d |D                       }|r|S dS )zWGet the argument from an Optional[...] annotation, or None if it is no such annotation.r   N   c              3   4   K   | ]}t          |          V  d S Nr   .0args     r   	<genexpr>z#get_optional_arg.<locals>.<genexpr>   s*      ??S|C((??????r   c              3   8   K   | ]}t          |          |V  d S r   r   r   s     r   r   z#get_optional_arg.<locals>.<genexpr>   s/      GGC\#5F5FGCGGGGGGr   )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#3w#>#>6U_C\C\t,,J
:!t??J?????L GG:GGGGGH 4r   c                     dt           j        cxk    rdk     rn nt          | t          j                  rdS 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/   %   sN    
 !++++G+++++
:uGY0Z0Z+u:r   clsc                 @    t          |           o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/JJr   )__doc__r
   r   r   inspectr   Anyboolr   r)   r/   r   r3    r   r   <module>r9      s    + + 



        #
 #t # # # # 
    (FJ 4    Kfj Kt K K K K K K Kr   