o
    tBhV                      @  s  U d dl mZ d dlmZmZmZmZ d dlmZ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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'm(Z( G d
d deZ)G dd deZ*dZ+de,d< e+ dZ-de,d< e+ dZ.de,d< dLddZ/edZ0dMdd Z1d!Z2de,d"< d#e2 dZ3de,d$< dNd)d*Z4eeef Z5d+e,d,< dOd3d4Z6dPd7d8Z7dQd:d;Z8	<dRdSdAdBZ9dTdDdEZ:dQdFdGZ;dUdJdKZ<d<S )V    )annotations)
NamedTupleSequenceTypeVarUnion)Final	TypeAlias)format_type)ARG_POSArgumentBlockClassDefContextSymbolTableTypeInfoVar)CheckerPluginInterfaceFunctionContextMethodContextMethodSigContext)add_method_to_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__ r*   r*   r/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/plugins/singledispatch.pyr"         
 r"   c                   @  r!   )RegisterCallableInfor   register_typer   singledispatch_objNr%   r*   r*   r*   r+   r-      r,   r-   z!functools._SingleDispatchCallabler   SINGLEDISPATCH_TYPEz	.registerSINGLEDISPATCH_REGISTER_METHODz	.__call__#SINGLEDISPATCH_CALLABLE_CALL_METHODtypr   returnSingledispatchTypeVars | Nonec                 C  s   t | jdkrt| j S d S )N   )lenargsr"   )r3   r*   r*   r+   get_singledispatch_info)   s   
r9   Tr8   list[list[T]]T | Nonec                 C  s   | r| d r| d d S dS )zMGet the element that corresponds to the first argument passed to the functionr   Nr*   )r8   r*   r*   r+   get_first_arg2   s   r=   _SingleDispatchRegisterCallableREGISTER_RETURN_CLASS
functools.REGISTER_CALLABLE_CALL_METHODapir   	type_argsSequence[Type]c                 C  s   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 )Nr@   	functoolszbuiltins.objectname__call__)r   r?   r   fullnamer   r   named_generic_typetyper   basesmroinfor   r   r   r   implementation_artifactr
   r   r   )rB   rC   defnrM   obj_typefunc_argr*   r*   r+   !make_fake_register_class_instance>   s   

rR   
_TypeAliasPluginContextctxmsgstrcontextContext | NoneNonec                 C  s&   |dur|}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)rX   rB   fail)rU   rV   rX   err_contextr*   r*   r+   r[   R   s   	r[   r   r   c                 C  s   t t| j}t|trDt|jdk rt| d|j | j	S |jd j
dds0t| d|j | j	S t | j	}t|ts<J | j|f7  _| 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   r7   	arg_kindsr[   
definitiondefault_return_typeis_positionalr   r8   )rU   	func_typer/   r*   r*   r+   'create_singledispatch_function_callbackb   s$   

rf   r   c                 C  s~   t | jtsJ tt| j}t |ttfr.| r.|j	d j
}t|| j}t| j|}|S t |tr<t| | j| |S | jS )z5Called for functools._SingleDispatchCallable.registerr   )r`   rJ   r   r    r=   r_   r   r   is_type_objitemsret_typer-   rR   rB   register_functionrc   )rU   first_arg_typer.   rC   register_callabler*   r*   r+    singledispatch_register_callback~   s   	
rm   Nr/   funcregister_argType | Nonec                 C  s   t |}t|tsdS t|}|du rdS t||}|du r dS |j}|jd }t||s>t| d	t
|t
||j dS dS )zRegister a functionNr   zGDispatch type {} must be subtype of fallback function first argument {})r    r`   r   r9   get_dispatch_typer$   r_   r   r[   formatr	   rb   )rU   r/   rn   ro   metadatadispatch_typer$   fallback_dispatch_typer*   r*   r+   rj      s*   



rj   r   c                 C  s    |d ur|S | j r| j d S d S )Nr   )r_   )rn   ro   r*   r*   r+   rq      s
   
rq   c                 C  sH   | j }t|tr!t|j }t| j}|dur!t| |j||j	 |S | j
S )z7Called on the function after passing a type to registerN)rJ   r`   r   r-   r8   r=   r_   rj   r/   r.   rc   )rU   rl   rC   rn   r*   r*   r+   4call_singledispatch_function_after_register_argument   s   


rv   r   r   c                 C  s0   t | jts	| jS t| j}|du r| jS |jS )z5Called for functools._SingleDispatchCallable.__call__N)r`   rJ   r   default_signaturer9   r$   )rU   rs   r*   r*   r+   %call_singledispatch_function_callback   s   
rx   )r3   r   r4   r5   )r8   r;   r4   r<   )rB   r   rC   rD   r4   r   )rU   rT   rV   rW   rX   rY   r4   rZ   )rU   r   r4   r   )rU   r   r4   r   )N)
rU   rT   r/   r   rn   r   ro   rp   r4   rZ   )rn   r   ro   rp   r4   rp   )rU   r   r4   r   )=
__future__r   typingr   r   r   r   typing_extensionsr   r   rS   mypy.messagesr	   
mypy.nodesr
   r   r   r   r   r   r   r   mypy.pluginr   r   r   r   mypy.plugins.commonr   mypy.subtypesr   
mypy.typesr   r   r   r   r   r   r   r   r    r"   r-   r0   r)   r1   r2   r9   r:   r=   r?   rA   rR   rT   r[   rf   rm   rj   rq   rv   rx   r*   r*   r*   r+   <module>   s:    (,





 
"
