
    hi                        U d dl mZ d dlmZ d dlmZmZm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 d dlmZ d dl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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,  G d de          Z- G d de          Z.d<dZ/ ed          Z0d=dZ1d>dZ2eeef         Z3d e4d!<   d?d(Z5d@d+Z6dAd-Z7	 dBdCd5Z8dDd7Z9dAd8Z:dEd;Z;d.S )F    )annotations)Sequence)
NamedTupleTypeVarUnion)	TypeAlias)format_type)ARG_POSArgumentBlockClassDefContextSymbolTableTypeInfoVar)Options)CheckerPluginInterfaceFunctionContextMethodContextMethodSigContext)add_method_to_class)$SINGLEDISPATCH_REGISTER_RETURN_CLASS)
is_subtype)	AnyTypeCallableTypeFunctionLikeInstanceNoneType
OverloadedType	TypeOfAnyget_proper_typec                  $    e Zd ZU ded<   ded<   dS )SingledispatchTypeVarsr    return_typer   fallbackN__name__
__module____qualname____annotations__     k/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypy/plugins/singledispatch.pyr$   r$      s*         r-   r$   c                  $    e Zd ZU ded<   ded<   dS )RegisterCallableInfor    register_typer   singledispatch_objNr'   r,   r-   r.   r0   r0       s*               r-   r0   typr   returnSingledispatchTypeVars | Nonec                R    t          | j                  dk    rt          | j         S d S )N   )lenargsr$   )r3   s    r.   get_singledispatch_infor:   %   s'    
38}}%sx004r-   Tr9   list[list[T]]T | Nonec                6    | r| d         r| d         d         S dS )zMGet the element that corresponds to the first argument passed to the functionr   Nr,   )r9   s    r.   get_first_argr?   .   s(     Q Awqz4r-   apir   	type_argsSequence[Type]c                   t          t          t          g                     }dt           |_        t	          t                      |d          }|                     dg           j        }t          |g           g|_	        ||g|_
        ||_        t          t          d          t          t          j                  d t"                    }t%          | |d|gt'                                 t          ||          S )Nz
functools.	functoolszbuiltins.objectname__call__)r   r   r   fullnamer   r   named_generic_typetyper   basesmroinfor   r   r   r!   implementation_artifactr
   r   r   )r@   rA   defnrL   obj_typefunc_args         r.   !make_fake_register_class_instancerQ   5   s     8%))DDDG!EGGDMKMM455D%%&7<<AH8R(()DJhDHDIFWY-N%O%OQUW^__HT:z8::FFFD)$$$r-   
_TypeAliasPluginContextctxmsgstrcontextContext | NoneNonec                T    ||}n| j         }| j                            ||           dS )a  Emit an error message.

    This tries to emit an error message at the location specified by `context`, falling back to the
    location specified by `ctx.context`. This is helpful when the only context information about
    where you want to put the error message may be None (like it is for `CallableType.definition`)
    and falling back to the location of the calling function is fine.N)rW   r@   fail)rT   rU   rW   err_contexts       r.   r[   r[   I   s4     kGLLk"""""r-   r   r    c                   t          t          | j                            }t          |t                    rt          |j                  dk     rt          | d|j                   | j	        S |j        d         
                    d          st          | d|j                   | j	        S t          | j	                  }t          |t                    sJ |xj        |fz  c_        | j	        S )z#Called for functools.singledispatch   z6Singledispatch function requires at least one argumentr   T)starzGFirst argument to singledispatch function must be a positional argument)r"   r?   	arg_types
isinstancer   r8   	arg_kindsr[   
definitiondefault_return_typeis_positionalr   r9   )rT   	func_typer2   s      r.   'create_singledispatch_function_callbackrg   Y   s    cm < <==I)\** 0y"##a''MyOc   **$Q'5545@@ 	+Y$  
 ** -S-DEE,h77777I</""r-   r   c                   t          | j        t                    sJ t          t	          | j                            }t          |t          t          f          rR|                                r>|j	        d         j
        }t          || j                  }t          | j        |          }|S t          |t                    r#t          | | j        || j        j                   |S | j        S )z5Called for functools._SingleDispatchCallable.registerr   )ra   rI   r   r"   r?   r`   r   r   is_type_objitemsret_typer0   rQ   r@   register_functionoptionsrd   )rT   first_arg_typer1   rA   register_callables        r.    singledispatch_register_callbackrp   t   s    ch)))))$]3=%A%ABBN.<"<== .B\B\B^B^  ',Q/8(AA	=cgyQQ  	NL	1	1 #sxIII
  ""r-   Nr2   funcrm   r   register_argType | Nonec           
     x   t          |          }t          |t                    sdS t          |          }|dS t	          ||          }|dS |j        }|j        d         }t          ||          sHt          | d	                    t          ||          t          ||                    |j                   dS dS )zRegister a functionNr   zGDispatch type {} must be subtype of fallback function first argument {})r"   ra   r   r:   get_dispatch_typer&   r`   r   r[   formatr	   rc   )	rT   r2   rq   rm   rr   metadatadispatch_typer&   fallback_dispatch_types	            r.   rl   rl      s     4  DdL)) &'9::H 	%dL99M 	 H%/2m%;<< U\\M733[AWY`5a5a  O	
 	
 	
 	
Fr-   r   c                6    ||S | j         r| j         d         S d S )Nr   )r`   )rq   rr   s     r.   ru   ru      s*    ~ !~a  4r-   c                    | j         }t          |t                    rMt          |j         }t          | j                  }|)t          | |j        || j	        j
        |j                   |S | j        S )z7Called on the function after passing a type to register)rI   ra   r   r0   r9   r?   r`   rl   r2   r@   rm   r1   rd   )rT   ro   rA   rq   s       r.   4call_singledispatch_function_after_register_argumentr|      sw    #X.. (*;*@A	S]++Y14)Ja   K""r-   r   r   c                    t          | j        t                    s| j        S t	          | j                  }|| j        S |j        S )z5Called for functools._SingleDispatchCallable.__call__)ra   rI   r   default_signaturer:   r&   )rT   rw   s     r.   %call_singledispatch_function_callbackr      sF    ch)) %$$&sx00H$$r-   )r3   r   r4   r5   )r9   r<   r4   r=   )r@   r   rA   rB   r4   r   )rT   rS   rU   rV   rW   rX   r4   rY   )rT   r   r4   r    )rT   r   r4   r    )N)rT   rS   r2   r   rq   r    rm   r   rr   rs   r4   rY   )rq   r   rr   rs   r4   rs   )rT   r   r4   r   )<
__future__r   collections.abcr   typingr   r   r   typing_extensionsr   rR   mypy.messagesr	   
mypy.nodesr
   r   r   r   r   r   r   r   mypy.optionsr   mypy.pluginr   r   r   r   mypy.plugins.commonr   mypy.plugins.constantsr   mypy.subtypesr   
mypy.typesr   r   r   r   r   r   r    r!   r"   r$   r0   r:   r;   r?   rQ   rS   r+   r[   rg   rp   rl   ru   r|   r   r,   r-   r.   <module>r      s   " " " " " " " $ $ $ $ $ $ - - - - - - - - - - 5 5 5 5 5 5 % % % % % % ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^             ` ` ` ` ` ` ` ` ` ` ` ` 3 3 3 3 3 3 G G G G G G $ $ $ $ $ $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    Z   
! ! ! ! !: ! ! !
    GCLL   % % % %" "/="@A A A A A# # # # # # # #6# # # #H !%" " " " "J   # # # #     r-   