U e5db�@s�dZdddgZddlZddlZddlZddd�Zddd�Zejje_ejje_Gd d�dej�Z d d �Z d d �Z e dkr~e �dS)zUPython interface for the 'lsprof' profiler. Compatible with the 'profile' module. �run�runctx�Profile�N�����cCst�t��|||�S�N)� _pyprofile�_Utilsrr)� statement�filename�sort�r � /usr/lib64/python3.8/cProfile.pyrscCst�t��|||||�Sr)rrrr)r �globals�localsr r r r r rs�c@s`eZdZdZddd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z de _ dd�Z dd�Z dS)ra`Profile(timer=None, timeunit=None, subcalls=True, builtins=True) Builds a profiler object using the specified timer function. The default timer is a fast built-in one based on real time. For custom timer functions returning integers, timeunit can be a float specifying a scale (i.e. how long each integer unit is, in seconds). rcCs$ddl}|�|����|���dS�Nr)�pstats�StatsZ strip_dirsZ sort_stats� print_stats)�selfr rr r r r)szProfile.print_statsc Cs8ddl}t|d��}|��|�|j|�W5QRXdS)Nr�wb)�marshal�open� create_stats�dump�stats)r�filer�fr r r � dump_stats-s zProfile.dump_statscCs|��|��dSr)�disable�snapshot_stats�rr r r r3szProfile.create_statsc Cs,|��}i|_i}|D]P}t|j�}|j}||j}|j}|j}i} | |t|j�<||||| f|j|<q|D]�}|j rlt|j�}|j D]�} z|t| j�} Wnt k r�Yq�YnX| j}|| j}| j}| j}|| k�r| |} || d7}|| d7}|| d7}|| d7}||||f| |<q�qldS)Nr���) Zgetstatsr�label�codeZ callcountZ reccallcountZ inlinetimeZ totaltime�idZcalls�KeyError) r�entriesZ callersdicts�entry�funcZncZccZttZctZcallersZsubentry�prevr r r r7s>           zProfile.snapshot_statscCsddl}|j}|�|||�Sr)�__main__�__dict__r)r�cmdr,�dictr r r r]sz Profile.runcCs(|��zt|||�W5|��X|Sr)�enabler�exec)rr.rrr r r rbs  zProfile.runctxcOs�t|�dkr|^}}}nV|s&td��nHd|krZ|�d�}|^}}ddl}|jdtdd�ntdt|�d��|��z|||�W�S|��XdS) Nr"z:descriptor 'runcall' of 'Profile' object needs an argumentr*rz0Passing 'func' as keyword argument is deprecated)� stacklevelz7runcall expected at least 1 positional argument, got %dr!)�len� TypeError�pop�warnings�warn�DeprecationWarningr0r)�args�kwrr*r6r r r �runcallks&    � �zProfile.runcallz($self, func, /, *args, **kw)cCs |��|Sr)r0r r r r � __enter__�szProfile.__enter__cGs |��dSr)r)r�exc_infor r r �__exit__�szProfile.__exit__N)r)�__name__� __module__� __qualname__�__doc__rrrrrrr;�__text_signature__r<r>r r r r rs & cCs(t|t�rdd|fS|j|j|jfSdS)N�~r)� isinstance�str� co_filename�co_firstlineno�co_name)r%r r r r$�s  r$c Cs�ddl}ddl}ddl}ddl}ddlm}d}||d�}d|_|jdddd dd �|jd d d ddt|j j �d�|jdddddd�|j dd�s�|� �|� d�|��\}}||j dd�<|jdk r�|j�|j�|_t|�dk�r�|j�rd} |j|dd�} nR|d} |j�d|j�| ��t�| ��} t| ��| d�} W5QRX| dddd�} zt| | d|j|j�Wn6tk �r�} zd|_|� | j�W5d} ~ XYnXn|� �|S)Nr)� OptionParserzNcProfile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg] ...)�usageFz-oz --outfile�outfilezSave stats to )�dest�help�defaultz-sz--sortr z?Sort order when printing to stdout, based on pstats.Stats classr)rMrNrO�choicesz-m�module� store_truezProfile a library module)rM�actionrNrOr!r"z(run_module(modname, run_name='__main__'))� run_module�modnamer1r,)�__file__r?� __package__� __cached__) �os�sys�runpyrZoptparserJZallow_interspersed_argsZ add_option�sortedrZsort_arg_dict_default�argvZ print_usage�exit� parse_argsrL�path�abspathr3rQrT�insert�dirname�io� open_code�compile�readrr �BrokenPipeError�stdout�errno)rYrZr[rrJrK�parserZoptionsr9r%ZglobsZprogname�fp�excr r r �main�sd   �  � �   � � rnr,)Nr)Nr) rB�__all__Z_lsprofrdZprofilerrrZProfilerrr$rnr?r r r r �s     o;