
    "e                         d dl mZ 	 d dlZd e_        d dlZd dlmZmZ d dl	m
Z
 d dlmZ  G d de      Zdd	Zd
 Z G d de      Zd Zd Z G d de      Zd Zd Zd Zy# e$ r Y Ww xY w)    )	pydev_logNc                       y N )argss    A/usr/lib/python3/dist-packages/_pydevd_bundle/pydevd_signature.py<lambda>r	      s        )CMD_SIGNATURE_CALL_TRACE
NetCommand)
pydevd_xml)get_clsname_for_codec                   &    e Zd Zd Zd ZddZd Zy)	Signaturec                 J    || _         || _        g | _        g | _        d | _        y r   )filenamer   args_strreturn_type)selfr   r   s      r   __init__zSignature.__init__   s&    			r
   c                 ~    | j                   j                  ||f       | j                  j                  |d|       y )N:)r   appendr   )r   r   types      r   add_argzSignature.add_arg   s/    		$&d34r
   c                     g | _         |j                  }|j                  }t        d|j                        D ]3  }|j
                  |   }t        ||   |      }| j                  ||       5 y )Nr   	recursive)r   f_codef_localsrangeco_argcountco_varnamesget_type_of_valuer   )r   framer   codelocalsir   
class_names           r   set_argszSignature.set_args   se    	||q$**+ 	+A##A&D*6$<9MJLLz*		+r
   c                 r    | j                   d| j                  ddj                  | j                        dS )N (, ))r   r   joinr   r   s    r   __str__zSignature.__str__)   s$    "iiDIIdmm4LMMr
   N)F)__name__
__module____qualname__r   r   r+   r3   r   r
   r   r   r      s     5
+Nr
   r   c           	      b   t        |       }|j                  }|dk(  r| j                  }|j                  }t        |d      r+|j                  r|j                  |vr|j                  d|}|dk(  r*d}t        |       dkD  rr|dt        | d         z  z  }|S |d	k(  rPd
}t        |       dkD  r>r<| j                         D ])  \  }}|dt        |      dt        |      dz  } |S  |S |dk(  r9d}t        |       dkD  r)r'|dz  }|dj                  fd| D              z  }|dz  }|S )Ninstancer5   .listListr   z[%s]r   dictDict[r/   ]tupleTuplec              3   8   K   | ]  }t        |         yw)r   N)r%   ).0vr   s     r   	<genexpr>z$get_type_of_value.<locals>.<genexpr>J   s     #]RS$5a9$M$M#]s   )	r   r4   	__class__hasattrr5   lenr%   itemsr1   )valueignore_module_namer   tpr*   krD   s     `    r   r%   r%   -   sK   	eBJZ__[[
r< R]]r}}L^7^ "z:
V
u:>i&#4U1X#SSSJV
u:>i++- A,=a9,U,=a9,UW W
	 W
u:>i#J$))#]W\#]]]J#Jr
   c                     t         j                  j                  |       }t         j                  j                  |      \  }}|S )z+Return a plausible module name for the path)ospathbasenamesplitext)rP   basefilenameexts       r   _modnamerV   P   s3    77D!DGG$$T*MHcOr
   c                        e Zd Zd ZddZd Zy)SignatureFactoryc                 0    i | _         t               | _        y r   )_caller_cacheCallSignatureCachecacher2   s    r   r   zSignatureFactory.__init__Y   s    ')
r
   c                     	 | j                  |      \  }}}t        ||      }|r|j                  |d       |S #  t        j                          Y y xY w)NTr   )file_module_function_ofr   r+   r   	exception)r   r&   rT   	with_args_
modulenamefuncname	signatures           r   create_signaturez!SignatureFactory.create_signature]   sY    	"&*&B&B5&I#Az8!(H5I""5D"9	"!s	   7: Ac                 <   |j                   }|j                  }|rt        |      }nd }|j                  }d }|| j                  v r| j                  |   <| j                  |   }n,d | j                  |<   t        ||      }||| j                  |<   ||d|}|||fS )Nr9   )r    co_filenamerV   co_namerZ   r   )r   r&   r'   rT   rb   rc   clsnames          r   r^   z(SignatureFactory.file_module_function_ofg   s    ||##!(+JJ<<4%%%!!$'3,,T2'+Dt$*47G"
 ,3""4(")84HX--r
   N)T)r4   r5   r6   r   re   r^   r   r
   r   rX   rX   W   s    *".r
   rX   c           	          | j                   | j                  dj                  | j                  D cg c]  }|d   	 c}      fS c c}w )Nr-      )r   r   r1   r   )rd   args     r   get_signature_inform      s6    >>9>>388y~~4VSV4V+WWW4Vs   Ac                 `    | j                   }|j                  | j                  |j                  fS r   )r    rh   f_linenorg   )r&   cos     r   get_frame_inforq      s$    	B::u~~r~~55r
   c                       e Zd Zd Zd Zd Zy)r[   c                     i | _         y r   )r\   r2   s    r   r   zCallSignatureCache.__init__   s	    
r
   c                     t        |      \  }}}| j                  j                  |i       }|j                  |i       }d ||<   y r   )rm   r\   
setdefault)r   rd   rT   r   	args_typecalls_from_file
name_callss          r   addzCallSignatureCache.add   sE    $6y$A!$	**//"=$//b9
 $
9r
   c                     t        |      \  }}}|| j                  j                  |i       j                  |i       v ryyNTF)rm   r\   get)r   rd   rT   r   rv   s        r   is_in_cachezCallSignatureCache.is_in_cache   s=    $6y$A!$	

x488rBBr
   N)r4   r5   r6   r   ry   r}   r   r
   r   r[   r[      s    %r
   r[   c           
      6   dg}|j                  dt        j                  | j                        dt        j                  | j                        d       | j
                  D ]F  }|j                  dt        j                  |d         dt        j                  |d         d	       H | j                  1|j                  d
t        j                  | j                        z         |j                  d       dj                  |      }t        t        d|      S )Nz<xml>z<call_signature file="z" name="z">z<arg name="r   z" type="rk   z"></arg>z<return type="%s"></return>z</call_signature></xml> )
r   r   make_valid_xml_valuer   r   r   r   r1   r   r   )rd   cmdTextListrl   cmdTexts       r   create_signature_messager      s+   )KA`A`ajaoaoApr|  sR  sR  S\  Sa  Sa  sb  c  d~~ S
@_@_`cde`f@gis  jI  jI  JM  NO  JP  jQ  R  	SS (8J<[<[\e\q\q<rst01ggk"G.7;;r
   c                    | j                   r| j                  |      r| j                   j                  ||      }|| j                   j                  p| j                   j                  j	                  |      sJ| j                   j                  j                  |       | j                  j                  t        |             yy| j                  j                  t        |             yyr{   )	signature_factoryin_project_scopere   r\   r}   ry   writeradd_commandr   )dbgr&   rT   rd   s       r   send_signature_call_tracer      s    
!5!5e!<))::5(K	 $$**6,,22>>yI))//33I>JJ**+CI+NO !

&&'?	'JKr
   c                     | j                   rf| j                  |      rU| j                   j                  ||d      }t        |d      |_        | j
                  j                  t        |             yy)NF)r`   Tr   )r   r   re   r%   r   r   r   r   )r   r&   rT   return_valuerd   s        r   send_signature_return_tracer      sc    
!5!5e!<))::5(V[:\	 1,$ O	

7	BCr
   ))__main____builtin__builtinsF)_pydev_bundler   trace_warnImportErrorrO   _pydevd_bundle.pydevd_commr   r   _pydevd_bundler   _pydevd_bundle.pydevd_utilsr   objectr   r%   rV   rX   rm   rq   r[   r   r   r   r   r
   r   <module>r      s    #% %EK 	 K % <N N: F*.v *.ZX6
 $< $y  		s   A$ $A,+A,