o
    tBh                     @  s  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mZmZmZ d dl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" d dl#m$Z$ d d	l%m&Z& d9ddZ'd:ddZ(d;ddZ)		d<d=d%d&Z*		d<d>d+d,Z+	-	-	-d?d@d3d4Z,dAd7d8Z-dS )B    )annotations)	TypeFixer)ARG_POSMDEFSYMBOL_FUNCBASE_TYPESArgumentBlockCallExprClassDef
ExpressionFuncDefJsonDictPassStmtRefExprSymbolTableNodeVar)CheckerPluginInterfaceClassDefContextSemanticAnalyzerPluginInterface)ALLOW_INCOMPATIBLE_OVERRIDEset_callable_name)try_getting_str_literals)CallableType
OverloadedTypeTypeVarTypedeserialize_typeget_proper_type)fill_typevars)get_unique_redefinition_namectxr   namestrdefaultboolreturnc                 C  s    t | jtrt| | j||S |S )zgReturn the bool argument for the decorator.

    This handles both @decorator(...) and @decorator.
    )
isinstancereasonr	   _get_bool_argument)r    r!   r#    r)   j/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/plugins/common.py_get_decorator_bool_argument%   s   r+   exprr	   c                 C  sD   t ||}|r | j|}|du r| jd| d| |S |S |S )z]Return the boolean value for an argument to a call or the
    default if it's not found.
    N"z!" argument must be True or False.)_get_argumentapi
parse_boolfail)r    r,   r!   r#   
attr_valueretr)   r)   r*   r(   0   s   
r(   callExpression | Nonec           	      C  s   t | jtsdS d}| jj}t |ttfr/|jr/t|j}t |tr(|j	d }nt |t
r/|}|s3dS ||}|s<dS |jsAJ tt| j| jD ]\}\}}|jdur`|s`||jkr`|  S ||jkri|  S qJdS )z0Return the expression for the specific argument.N)r&   calleer   noder   r   typer   r   itemsr   argument_by_namer!   	enumeratezip	arg_namesargspos)	r4   r!   callee_typecallee_nodecallee_node_typeargumenti	attr_namer2   r)   r)   r*   r.   >   s.   





r.   Nr?   list[Argument]return_typer   	self_typeType | Nonetvar_defTypeVarType | NoneNonec              	   C  s   t | j| j|||||d dS )zZ
    Adds a new method to a class.
    Deprecated, use add_method_to_class() instead.
    )r!   r?   rH   rI   rK   N)add_method_to_classr/   cls)r    r!   r?   rH   rI   rK   r)   r)   r*   
add_methodb   s   
rP   r/   8SemanticAnalyzerPluginInterface | CheckerPluginInterfacerO   r
   c                 C  sx  |j }||jv r|j| }|jrt|jtr|jj|j |p#t	|}t| t
r/| d}	n| dg }	ttd|dtg| }g g g }
}}|D ]}|jsTJ d|
|j ||jj ||j qKt|
||||	}|rv|g|_t||tt g}||_ t|||_|jd | |_|j|_||jv rt||j}|j| |j|< tt |dd|j|< |j!jj| dS )z(Adds a new method to a class definition.zbuiltins.functionselfNz"All arguments must be fully typed..T)plugin_generated)"infonamesrT   r&   r8   r   defsbodyremover   r   
named_typenamed_generic_typer   r   r   type_annotationappendvariabler!   kindr   	variablesr   r   r   r9   fullname	_fullnameliner   r   r   defn)r/   rO   r!   r?   rH   rI   rK   rU   symfunction_type	arg_typesr>   	arg_kindsarg	signaturefuncr_namer)   r)   r*   rN   y   s:   




rN   Fr   typfinalno_serializeoverride_allow_incompatiblec           
      C  s   |j }||jv rt||j}|j| |j|< t||}	||	_ ||	_|tv r)d|	_n||	_|jd | |	_t	t
|	d|d|j|< dS )z
    Adds a new attribute to a class definition.
    This currently only generates the symbol table entry and no corresponding AssignmentStatement
    TrS   )rT   ro   N)rU   rV   r   r   is_finalr   allow_incompatible_overridera   rb   r   r   )
r/   rO   r!   rm   rn   ro   rp   rU   rl   r8   r)   r)   r*   add_attribute_to_class   s   

rs   datastr | JsonDictc                 C  s    t | }|t|jdd |S )NF)allow_missing)r   acceptr   modules)rt   r/   rm   r)   r)   r*   deserialize_and_fixup_type   s   ry   )r    r   r!   r"   r#   r$   r%   r$   )
r    r   r,   r	   r!   r"   r#   r$   r%   r$   )r4   r	   r!   r"   r%   r5   )NN)r    r   r!   r"   r?   rG   rH   r   rI   rJ   rK   rL   r%   rM   )r/   rQ   rO   r
   r!   r"   r?   rG   rH   r   rI   rJ   rK   rL   r%   rM   )FFF)r/   r   rO   r
   r!   r"   rm   r   rn   r$   ro   r$   rp   r$   r%   rM   )rt   ru   r/   r   r%   r   ).
__future__r   
mypy.fixupr   
mypy.nodesr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   mypy.pluginr   r   r   mypy.semanalr   r   mypy.typeopsr   
mypy.typesr   r   r   r   r   r   mypy.typevarsr   	mypy.utilr   r+   r(   r.   rP   rN   rs   ry   r)   r)   r)   r*   <module>   s.    @ 


);#