����JFIF���������
1#@!#!123s
D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
proc
/
self
/
root
/
usr
/
lib64
/
python3.8
/
__pycache__
/
Filename :
trace.cpython-38.pyc
back
Copy
U ����e5d�t����������������������@���s����d�Z�ddgZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddlZddlZddl mZ�ddlZdZG�dd��d�Zd d ��Zdd��ZG�d d��d�Zdd��Zdd��Zddd�Zdd��ZG�dd��d�Zdd��Zedkr�e���dS�)a���program/module to trace Python program or function execution Sample use, command line: trace.py -c -f counts --ignore-dir '$prefix' spam.py eggs trace.py -t --ignore-dir '$prefix' spam.py eggs trace.py --trackcalls spam.py eggs Sample use, programmatically import sys # create a Trace object, telling it what to ignore, and whether to # do tracing or line-counting or both. tracer = trace.Trace(ignoredirs=[sys.base_prefix, sys.base_exec_prefix,], trace=0, count=1) # run the new command using the given tracer tracer.run('main()') # make a report, placing output in /tmp r = tracer.results() r.write_results(show_missing=True, coverdir="/tmp") �Trace�CoverageResults�����N)� monotonicz#pragma NO COVERc�������������������@���s���e�Zd�Zddd�Zdd��ZdS�)�_IgnoreNc�����������������C���s:���|s t���nt�|�|�_|sg�ndd��|D��|�_ddi|�_d�S�)Nc�����������������S���s���g�|�]}t�j�|��qS���)�os�path�normpath��.0�dr���r����/usr/lib64/python3.8/trace.py� <listcomp>H���s����z$_Ignore.__init__.<locals>.<listcomp>z<string>����)�set�_mods�_dirs�_ignore)�self�modules�dirsr���r���r ����__init__F���s �����z_Ignore.__init__c�����������������C���s����||�j�kr|�j�|�S�||�jkr,d|�j�|<�dS�|�jD�]"}|�|d��r2d|�j�|<��dS�q2|d�krld|�j�|<�dS�|�jD�]$}|�|tj��rrd|�j�|<��dS�qrd|�j�|<�dS�)Nr����.r���)r���r���� startswithr���r����sep)r����filename� modulename�modr���r���r���r ����namesL���s$���� z _Ignore.names)NN)�__name__� __module__�__qualname__r���r���r���r���r���r ���r���E���s��� r���c�����������������C���s ���t�j�|��}t�j�|�\}}|S�)z-Return a plausible module name for the patch.)r���r����basename�splitext)r����baser����extr���r���r ����_modnamew���s����r&���c�����������������C���s����t�j�|��}d}tjD�]@}t�j�|�}|�|�r|t|��t�jkrt|�t|�kr|}q|rr|�t|�d�d��}n|�}t�j�|�\}}|�t�jd�}t�j r�|�t�j d�}t�j� |�\}}|�d�S�)z,Return a plausible module name for the path.��r���Nr���)r���r����normcase�sysr����lenr���� splitdrive�replace�altsepr#����lstrip)r���ZcomparepathZlongest�dirr$���Zdriver���r%���r���r���r ����_fullmodname~���s ���� r0���c�������������������@���s:���e�Zd�Zddd�Zdd��Zdd��Zdd d�Zddd �ZdS�)r���Nc�������������� ���C���s����||�_�|�j�d�kri�|�_�|�j����|�_||�_|�jd�kr8i�|�_|�j���|�_||�_|�jd�krZi�|�_|�j���|�_||�_||�_|�jr�z@t|�jd��}t� |�\}}}W�5�Q�R�X�|�� |��|||���W�n@�tt tfk r��}�ztd|�j|f�tjd��W�5�d�}~X�Y�nX�d�S�)N�rbzSkipping counts file %r: %s��file)�counts�copyZcounter�calledfuncs�callers�infile�outfile�open�pickle�load�update� __class__�OSError�EOFError� ValueError�printr)����stderr)r���r4���r6���r8���r7���r9����f�errr���r���r ���r�������s2���� ��zCoverageResults.__init__c�����������������C���s���|��d�o|�d�S�)z_Return True if the filename does not refer to a file we want to have reported. �<�>)r����endswith)r���r���r���r���r ����is_ignored_filename����s����z#CoverageResults.is_ignored_filenamec����������� ������C���sn���|�j�}|�j}|�j}|j�}|j}|j}|D�]}|�|d�||��||<�q(|D�]}d||<�qJ|D�]}d||<�q\dS�)z.Merge in the data from another CoverageResultsr���r���N)r4���r6���r7����get) r����otherr4���r6���r7���Zother_countsZother_calledfuncsZ other_callers�keyr���r���r ���r=�������s���� zCoverageResults.updateTFc�����������"��� ���C���s���|�j�r@t���td��|�j�}t|�D�]\}}}td|||f���q"|�jr�t���td��d�}} t|�j�D�]h\\} }}\} }}| |kr�t���td| d��| }d} | | kr�| | kr�td| ��| } td||||f���qfi�}|�jD�].\}}|�|i���}||<�|�j||f�||<�q�i�}|���D��]\}}|��|��r0�q|�d��rH|d d ��}|d k�rpt j �t j �|��}t |�}n$|}t j �|��s�t �|��t|�}|�r�t|�}ni�}t�|�}t j �||d��}t|d��}t�|j�\}}W�5�Q�R�X�|��|||||�\}}|�r|�rtd |�|��}||||f||<��q|�rt|�rttd��t|�D�]&}||�\}}}}td||�����qL|�j�r�z6t|�jd�� } t�|�j|�j�|�jf| d��W�5�Q�R�X�W�n6�tk �r��}!�ztd|!�tj d��W�5�d }!~!X�Y�nX�d S�)af�� Write the coverage results. :param show_missing: Show lines that had no hits. :param summary: Include coverage summary per module. :param coverdir: If None, the results of each module are placed in its directory, otherwise it is included in the directory specified. zfunctions called:z*filename: %s, modulename: %s, funcname: %szcalling relationships:r'���z***z -->z %s.%s -> %s.%sz.pycN���z.coverr1����d���zlines cov% module (path)z%5d %3d%% %s (%s)�wbr���z"Can't save counts files because %sr2���)!r6���rB����sortedr7���r4���rJ����itemsrI���rH���r���r����dirname�abspathr&����exists�makedirsr0����_find_executable_linenos� linecache�getlines�joinr:����tokenize�detect_encoding�readline�write_results_file�intr9���r;����dumpr?���r)���rC���)"r���Zshow_missing�summary�coverdirZcallsr���r����funcnameZlastfileZ lastcfileZpfileZpmodZpfunc�cfileZcmodZcfuncZper_file�lineno� lines_hitZsums�countr/����lnotab�sourceZ coverpath�fp�encoding�_�n_hits�n_linesZpercent�mrD���rE���r���r���r ���� write_results����s����� �� �����zCoverageResults.write_resultsc�������������� ���C���s����zt�|d|d�}W�n>�tk rP�}�z td||f�tjd��W�Y��dS�d}~X�Y�nX�d}d} |���t|d�D�]r\} }| |kr�|�d || ����| d7�} |d7�}n.| |kr�t|kr�|�d ��|d7�}n |�d��|�|�d���qjW�5�Q�R�X�| |fS�) z'Return a coverage results file in path.�w�rj���z3trace: Could not open %r for writing: %s - skippingr2���)r���r���Nr���r���z%5d: z>>>>>> z ����) r:���r?���rB���r)���rC���� enumerate�write�PRAGMA_NOCOVER� expandtabs)r���r����linesrg���re���rj���r9���rE���rm���rl���rd����liner���r���r ���r]���)��s.������ z"CoverageResults.write_results_file)NNNNN)TFN)N)r���r ���r!���r���rI���r=���ro���r]���r���r���r���r ���r�������s�������� \c�����������������C���s,���i�}t��|��D�]\}}||krd||<�q|S�)z:Return dict where keys are lines in the line number table.r���)�disZfindlinestarts)�code�strs�linenosrk���rd���r���r���r ����_find_lines_from_codeI��s ���� r}���c�����������������C���s4���t�|�|�}|�jD�]}t�|�r|�t||���q|S�)z<Return lineno dict for all code objects reachable from code.)r}���� co_consts�inspectZiscoder=����_find_lines)rz���r{���r|����cr���r���r ���r����S��s ���� r����c�������������� ���C���s����i�}t�j}t|�|d��j}t�|j�}|D�]R\}}}} } |t�jkrv|t�jkrv|\}}| \} }t|| d��D�]}d||<�qh|}q(W�5�Q�R�X�|S�)z�Return a dict of possible docstring positions. The dict maps line numbers to strings. There is an entry for line that contains only a string or a part of a triple-quoted string. rq���r���)�token�INDENTr:���rZ����generate_tokensr\����STRING�range)r���rj���r���Z prev_ttyperD����tokZttypeZtstr�start�endrx���ZslineZscolZelineZecol�ir���r���r ���� _find_strings_��s���� r����c�������������� ���C���s����z(t��|���}|���}|j}W�5�Q�R�X�W�n@�tk rh�}�z"td|�|f�tjd��i��W�Y��S�d}~X�Y�nX�t||�d�}t |�|�}t ||�S�)zAReturn dict where keys are line numbers in the line number table.z%Not printing coverage data for %r: %sr2���N�exec)rZ���r:����readrj���r?���rB���r)���rC����compiler����r����)r���rD����progrj���rE���rz���r{���r���r���r ���rV���v��s������ rV���c���������������� ���@���sv���e�Zd�Zddd�Zdd ��Zd d d�Zdd ��Zde_dd��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��ZdS�)!r���r���r���r���NFc ����������� ������C���s����||�_�||�_t||�|�_i�|�_i�|�_d|�_||�_i�|�_i�|�_ i�|�_ d|�_| rTt��|�_|rb|�j |�_nZ|rp|�j|�_nL|r�|r�|�j|�_|�j|�_n2|r�|�j|�_|�j|�_n|r�|�j|�_|�j|�_nd|�_dS�)ax�� @param count true iff it should count number of times each line is executed @param trace true iff it should print out each line that is being counted @param countfuncs true iff it should just output a list of (filename, modulename, funcname,) for functions that were called at least once; This overrides `count' and `trace' @param ignoremods a list of the names of modules to ignore @param ignoredirs a list of the names of directories to ignore all of the (recursive) contents of @param infile file from which to read stored counts to be added into the results @param outfile file in which to write the results @param timing true iff timing information be displayed r���Nr���)r8���r9���r����ignorer4���Zpathtobasename� donothing�trace�_calledfuncs�_callers� _caller_cache� start_time�_time�globaltrace_trackcallers�globaltrace�globaltrace_countfuncs�globaltrace_lt�localtrace_trace_and_count� localtrace�localtrace_trace�localtrace_count) r���rf���r����� countfuncs�countcallers� ignoremods� ignoredirsr8���r9����timingr���r���r ���r������s6���� zTrace.__init__c�����������������C���s ���dd�l�}|j}|��|||��d�S�)Nr���)�__main__�__dict__�runctx)r����cmdr�����dictr���r���r ����run���s����z Trace.runc�������������� ���C���sh���|d�kri�}|d�kri�}|�j�s6t�|�j��t�|�j��zt|||��W�5�|�j�sbt�d���t�d���X�d�S�)N)r����� threading�settracer����r)���r����)r���r�����globals�localsr���r���r ���r�������s������ zTrace.runctxc��������������� ���O���s����t�|��dkr|�^}}}�nV|�s&td��nHd|krZ|�d�}|�^}}�dd�l}|jdtdd��ntdt�|��d����d�}|js�t�|j ��z||�|�}W�5�|js�t�d���X�|S�) N����z8descriptor 'runfunc' of 'Trace' object needs an argument�funcr���z0Passing 'func' as keyword argument is deprecated)� stacklevelz7runfunc expected at least 1 positional argument, got %dr���) r*���� TypeError�pop�warnings�warn�DeprecationWarningr����r)���r����r����)�args�kwr���r����r�����resultr���r���r ����runfunc���s.���� �� �z Trace.runfuncz($self, func, /, *args, **kw)c����������� ������C���s����|j�}|j}|rt|�}nd�}|j}d�}||�jkrL|�j|�d�k r�|�j|�}n�d�|�j|<�dd��t�|�D��}t|�dkr�dd��t�|d��D��}t|�dkr�dd��t�|d��D��} t| �dkr�| d�j}||�j|<�|d�k r�d||f�}|||fS�)Nc�����������������S���s���g�|�]}t��|�r|�qS�r���)r���Z isfunction)r���rD���r���r���r ���r������s���� �z1Trace.file_module_function_of.<locals>.<listcomp>r���c�����������������S���s���g�|�]}t�|t�r|�qS�r���)� isinstancer����r ���r���r���r ���r������s���� �r���c�����������������S���s���g�|�]}t�|d��r|�qS�)� __bases__)�hasattr)r���r����r���r���r ���r������s���� �z%s.%s) �f_code�co_filenamer&����co_namer�����gcZ get_referrersr*���r���) r����framerz���r���r���rb���ZclsnameZfuncsZdicts�classesr���r���r ����file_module_function_of���s,���� zTrace.file_module_function_ofc�����������������C���s0���|dkr,|���|�}|���|j�}d|�j||f<�dS�)zkHandler for call events. Adds information about who called who to the self._callers dict. �callr���N)r�����f_backr����)r���r�����why�arg� this_funcZparent_funcr���r���r ���r���� ��s���� zTrace.globaltrace_trackcallersc�����������������C���s ���|dkr|���|�}d|�j|<�dS�)zoHandler for call events. Adds (filename, modulename, funcname) to the self._calledfuncs dict. r����r���N)r����r����)r���r����r����r����r����r���r���r ���r������s���� zTrace.globaltrace_countfuncsc�����������������C���sj���|dkrf|j�}|j�dd�}|rbt|�}|dk rf|�j�||�}|sf|�jrZtd||jf���|�j S�ndS�dS�)z�Handler for call events. If the code block being entered is to be ignored, returns `None', else returns self.localtrace. r�����__file__Nz! --- modulename: %s, funcname: %s) r����� f_globalsrJ���r&���r����r���r����rB���r����r����)r���r����r����r����rz���r���r���Z ignore_itr���r���r ���r����!��s�����zTrace.globaltrace_ltc�����������������C���s����|dkr~|j�j}|j}||f}|�j�|d�d�|�j|<�|�jrTtdt��|�j��dd��tj � |�}td||t�||�f�dd��|�j S�) Nrx���r���r����%.2f� �r����� %s(%d): %sr'���)r����r�����f_linenor4���rJ���r����rB���r����r���r���r"���rW����getliner����)r���r����r����r����r���rd���rL����bnamer���r���r ���r����8��s���� ��z Trace.localtrace_trace_and_countc�����������������C���sd���|dkr^|j�j}|j}|�jr4tdt��|�j��dd��tj�|�}td||t � ||�f�dd��|�jS�)Nrx���r����r����r����r����r'���)r����r����r����r����rB���r����r���r���r"���rW���r����r����)r���r����r����r����r���rd���r����r���r���r ���r����G��s���� ��zTrace.localtrace_tracec�����������������C���s<���|dkr6|j�j}|j}||f}|�j�|d�d�|�j|<�|�jS�)Nrx���r���r���)r����r����r����r4���rJ���r����)r���r����r����r����r���rd���rL���r���r���r ���r����T��s����zTrace.localtrace_countc�����������������C���s���t�|�j|�j|�j|�j|�jd�S�)N)r8���r9���r6���r7���)r���r4���r8���r9���r����r����)r���r���r���r ����results\��s ���� �z Trace.results) r���r���r���r���r���r���NNF)NN)r���r ���r!���r���r����r����r�����__text_signature__r����r����r����r����r����r����r����r����r���r���r���r ���r������s&������������� 2 ) c���������������������s���dd�l�}�|����}|jdddd��|�dd�}|jdd d dd��|jd dd dd��|jddd dd��|jddd dd��|�d�}|���}|jddd dd��|jddd dd��|jdddd ��|jd!d"d#d ��|jd$d%d d&d��|jd'd(d d)d��|jd*d+d d,d��|�d-d.�}|jd/d0g�d1d2��|jd3d0g�d4d2��|jd5d d6d7d2��|jd8d9d:d;��|jd<|�jd=d;��|���}|j�r�t� d>��t� d?������fd@dA��dBdC��|j D��|_ �fdDdC�|jD��|_|j�r�|j�s�|� dE��t|j|jdF�}|�|j|j|j�S�t|j|j|j|jg��s |� dG��|j�rB|j�s8|j�rB|� dH��|j�r\|j�s\|� dI��|jd�k�rr|� dJ��t|j|j|j|j|j |j|j|j|jdK� }z�|j�r�dd�l}|j}|�|�\} } }|jf|j�t _!dL|j| j"| j#| d�dM�}n^|jf|j�t _!t$j%�&|j�t j%d<�t'�(|j��} t)| �*��|jdN�}W�5�Q�R�X�|jdLd�d�dO�}|�+|||��W�nP�t,k �r��}�zt �-dPt j!d�|f���W�5�d�}~X�Y�n�t.k �r����Y�nX�|�/��}|j0�s�|�|j|j|j��d�S�)QNr���z --version�versionz trace 2.0)�actionr����zMain optionsz(One of these (or --report) must be givenz-cz--count� store_truez�Count the number of times each line is executed and write the counts to <module>.cover for each module executed, in the module's directory. See also --coverdir, --file, --no-report below.)r�����helpz-tz--tracez3Print each line to sys.stdout before it is executedz-lz--listfuncsz�Keep track of which functions are executed at least once and write the results to sys.stdout after the program exits. Cannot be specified alongside --trace or --count.z-Tz--trackcallsz^Keep track of caller/called pairs and write the results to sys.stdout after the program exits.Z Modifiersz-rz--reportz�Generate a report from a counts file; does not execute any code. --file must specify the results file to read, which must have been created in a previous run with --count --file=FILEz-Rz--no-reportz^Do not generate the coverage report files. Useful if you want to accumulate over several runs.z-fz--filez+File to accumulate counts over several runs)r����z-Cz --coverdirz�Directory where the report files go. The coverage report for <package>.<module> will be written to file <dir>/<package>/<module>.coverz-mz --missingz?Annotate executable lines that were not executed with ">>>>>> "z-sz --summaryz\Write a brief summary for each file to sys.stdout. Can only be used with --count or --reportz-gz--timingzQPrefix each line with the time since the program started. Only used while tracingZFilterszCan be specified multiple timesz--ignore-module�appendzqIgnore the given module(s) and its submodules (if it is a package). Accepts comma separated list of module names.)r�����defaultr����z--ignore-dirzWIgnore files in the given directory (multiple directories can be joined by os.pathsep).z--moduleFzTrace a module. �progname�?zfile to run as main program)�nargsr����� argumentszarguments to the programZstdlibZ platstdlibc��������������������s4���t�j�t�j�|���}�|��d���d���}�t�j�|��S�)Nz$prefixz$exec_prefix)r���r���� expanduser� expandvarsr,���r ���)�s)�_exec_prefix�_prefixr���r ����parse_ignore_dir���s����zmain.<locals>.parse_ignore_dirc�����������������S���s$���g�|�]}|��d��D�]}|����qqS�)�,)�split�strip)r���r����r���r���r���r ���r������s������zmain.<locals>.<listcomp>c��������������������s&���g�|�]}|��tj�D�]}��|��qqS�r���)r����r����pathsep)r���r����r����)r����r���r ���r������s������z-r/--report requires -f/--file)r8���r9���zLmust specify one of --trace, --count, --report, --listfuncs, or --trackcallsz8cannot specify both --listfuncs and (--trace or --count)z3--summary can only be used with --count or --reportz3progname is missing: required with the main options)r����r����r����r����r8���r9���r����r����)r���r�����__package__� __loader__�__spec__� __cached__r����)r����r���r����r����zCannot run file %r because: %s)1�argparse�ArgumentParser�add_argumentZadd_argument_groupZadd_mutually_exclusive_groupZ REMAINDER� parse_argsZ ignore_dir� sysconfigZget_pathZ ignore_moduleZreportr3����errorr���ro���Zmissingr`���ra����anyr����rf���Z listfuncsZ trackcallsr����r���r�����module�runpyZ_get_module_detailsr����r����r)����argv�parent�loaderr���r���rR����io� open_coder����r����r����r?����exit� SystemExitr����Z no_report)r�����parserZgrpZ_grpZoptsr�����tr����Zmodule_nameZmod_nameZmod_specrz���Zglobsri���rE���r���)r����r����r����r ����mainb��s������ � � � � � ��� � � �� � � �� � � � ����� �(r����r����)N)�__doc__�__all__r����rW���r���r)���r����r����rZ���r���r����ry���r;����timer���r����r����ru���r���r&���r0���r���r}���r����r����rV���r���r����r���r���r���r���r ����<module>���s<���2�0 �_�