Edit File: tracemalloc.cpython-36.opt-1.pyc
3 � \A������������������@���s��d�dl�mZmZ�d�dlmZ�d�dlZd�dlZd�dlZd�dl Z d�dl T�d�dl mZmZ�dd��Z G�dd ��d �ZG�d d��d�Zdd ��ZeG�dd��d��ZeG�dd��de��Zdd��ZG�dd��d�ZG�dd��de�Zdd��ZG�dd��d�ZG�dd��de�ZG�dd��de�ZG�d d!��d!�Zd"d#��ZdS�)$�����)�Sequence�Iterable)�total_orderingN)�*)�_get_object_traceback�_get_tracesc�������������C���sz���xtd D�]l}t�|��dk�r:|dkr:|r.d|�|f�S�d|�|f�S�t�|��dk�sN|dkrj|r^d|�|f�S�d|�|f�S�|�d �}�qW�d�S�)N�B�KiB�MiB�GiB�TiB�d���z%+.1f %sz%.1f %s� ���i���z%+.0f %sz%.0f %s)r���r ���r ���r���r���i�(��)�abs)�sizeZsignZunit��r����#/usr/lib64/python3.6/tracemalloc.py�_format_size ���s���� r���c���������������@���sD���e�Zd�ZdZdZdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dS�)� StatisticzS Statistic difference on memory allocations between two Snapshot instance. � tracebackr����countc�������������C���s���||�_�||�_||�_d�S�)N)r���r���r���)�selfr���r���r���r���r���r����__init__%���s����zStatistic.__init__c�������������C���s���t�|�j|�j|�jf�S�)N)�hashr���r���r���)r���r���r���r����__hash__*���s����zStatistic.__hash__c�������������C���s$���|�j�|j�ko"|�j|jko"|�j|jkS�)N)r���r���r���)r����otherr���r���r����__eq__-���s����zStatistic.__eq__c�������������C���sB���d|�j�t|�jd�|�jf�}|�jr>|�j|�j�}|dt|d��7�}|S�)Nz%s: size=%s, count=%iFz, average=%s)r���r���r���r���)r����text�averager���r���r����__str__2���s���� zStatistic.__str__c�������������C���s���d|�j�|�j|�jf�S�)Nz)<Statistic traceback=%r size=%i count=%i>)r���r���r���)r���r���r���r����__repr__<���s����zStatistic.__repr__c�������������C���s���|�j�|�j|�jfS�)N)r���r���r���)r���r���r���r���� _sort_key@���s����zStatistic._sort_keyN)r���r���r���)�__name__� __module__�__qualname__�__doc__� __slots__r���r���r���r���r ���r!���r���r���r���r���r������s��� r���c���������������@���sD���e�Zd�ZdZdZdd��Zd d ��Zdd��Zd d��Zdd��Z dd��Z dS�)� StatisticDiffzd Statistic difference on memory allocations between an old and a new Snapshot instance. r���r���� size_diffr���� count_diffc�������������C���s"���||�_�||�_||�_||�_||�_d�S�)N)r���r���r(���r���r)���)r���r���r���r(���r���r)���r���r���r���r���K���s ����zStatisticDiff.__init__c�������������C���s���t�|�j|�j|�j|�j|�jf�S�)N)r���r���r���r(���r���r)���)r���r���r���r���r���R���s����zStatisticDiff.__hash__c�������������C���s<���|�j�|j�ko:|�j|jko:|�j|jko:|�j|jko:|�j|jkS�)N)r���r���r(���r���r)���)r���r���r���r���r���r���V���s ����zStatisticDiff.__eq__c�������������C���sP���d|�j�t|�jd�t|�jd�|�j|�jf�}|�jrL|�j|�j�}|dt|d��7�}|S�)Nz %s: size=%s (%s), count=%i (%+i)FTz, average=%s)r���r���r���r(���r���r)���)r���r���r���r���r���r���r���]���s���� zStatisticDiff.__str__c�������������C���s���d|�j�|�j|�j|�j|�jf�S�)Nz9<StatisticDiff traceback=%r size=%i (%+i) count=%i (%+i)>)r���r���r(���r���r)���)r���r���r���r���r ���i���s����zStatisticDiff.__repr__c�������������C���s ���t�|�j�|�jt�|�j�|�j|�jfS�)N)r���r(���r���r)���r���r���)r���r���r���r���r!���n���s����zStatisticDiff._sort_keyN)r���r���r(���r���r)���)r"���r#���r$���r%���r&���r���r���r���r���r ���r!���r���r���r���r���r'���D���s���r'���c�������������C���s����g�}xp|j���D�]d\}}|�j|d��}|d�k rPt||j|j|j�|j|j|j��}nt||j|j|j|j�}|j|��qW�x6|�j���D�]*\}}t|d|j�d|j��}|j|��q�W�|S�)Nr���)�items�popr'���r���r����append)� old_group� new_group� statisticsr����statZpreviousr���r���r����_compare_grouped_statst���s����r1���c���������������@���s\���e�Zd�ZdZdZdd��Zedd���Zedd���Zd d ��Z dd��Z d d��Zdd��Zdd��Z dS�)�Framez Frame of a traceback. �_framec�������������C���s ���||�_�d�S�)N)r3���)r����framer���r���r���r�������s����zFrame.__init__c�������������C���s ���|�j�d�S�)Nr���)r3���)r���r���r���r����filename����s����zFrame.filenamec�������������C���s ���|�j�d�S�)N����)r3���)r���r���r���r����lineno����s����zFrame.linenoc�������������C���s���|�j�|j�kS�)N)r3���)r���r���r���r���r���r�������s����zFrame.__eq__c�������������C���s���|�j�|j�k�S�)N)r3���)r���r���r���r���r����__lt__����s����zFrame.__lt__c�������������C���s ���t�|�j�S�)N)r���r3���)r���r���r���r���r�������s����zFrame.__hash__c�������������C���s���d|�j�|�jf�S�)Nz%s:%s)r5���r7���)r���r���r���r���r�������s����z Frame.__str__c�������������C���s���d|�j�|�jf�S�)Nz<Frame filename=%r lineno=%r>)r5���r7���)r���r���r���r���r �������s����zFrame.__repr__N)r3���)r"���r#���r$���r%���r&���r����propertyr5���r7���r���r8���r���r���r ���r���r���r���r���r2�������s���r2���c���������������@���sf���e�Zd�ZdZdZdd��Zdd��Zdd��Zd d ��Zdd��Z d d��Z dd��Zdd��Zdd��Z ddd�ZdS�)� Tracebackz` Sequence of Frame instances sorted from the most recent frame to the oldest frame. �_framesc�������������C���s���t�j|���||�_d�S�)N)r���r���r;���)r����framesr���r���r���r�������s���� zTraceback.__init__c�������������C���s ���t�|�j�S�)N)�lenr;���)r���r���r���r����__len__����s����zTraceback.__len__c�������������C���s4���t�|t�r"tdd��|�j|�D���S�t|�j|��S�d�S�)Nc�������������s���s���|�]}t�|�V��qd�S�)N)r2���)�.0�tracer���r���r���� <genexpr>����s����z(Traceback.__getitem__.<locals>.<genexpr>)� isinstance�slice�tupler;���r2���)r����indexr���r���r����__getitem__����s���� zTraceback.__getitem__c�������������C���s���|j�|�jkS�)N)r3���r;���)r���r4���r���r���r����__contains__����s����zTraceback.__contains__c�������������C���s ���t�|�j�S�)N)r���r;���)r���r���r���r���r�������s����zTraceback.__hash__c�������������C���s���|�j�|j�kS�)N)r;���)r���r���r���r���r���r�������s����zTraceback.__eq__c�������������C���s���|�j�|j�k�S�)N)r;���)r���r���r���r���r���r8�������s����zTraceback.__lt__c�������������C���s���t�|�d��S�)Nr���)�str)r���r���r���r���r�������s����zTraceback.__str__c�������������C���s���dt�|��f�S�)Nz<Traceback %r>)rD���)r���r���r���r���r �������s����zTraceback.__repr__Nc�������������C���sn���g�}|d�k r|dk�r|S�xP|�d�|��D�]@}|j�d|j|jf���tj|j|j�j��}|r&|j�d|���q&W�|S�)Nr���z File "%s", line %sz %s)r,���r5���r7���� linecache�getline�strip)r����limit�linesr4����liner���r���r����format����s����zTraceback.format)r;���)N)r"���r#���r$���r%���r&���r���r>���rF���rG���r���r���r8���r���r ���rO���r���r���r���r���r:�������s���r:���c�������������C���s ���t�|��}|dk rt|�S�dS�dS�)z� Get the traceback where the Python object *obj* was allocated. Return a Traceback instance. Return None if the tracemalloc module is not tracing memory allocations or did not trace the allocation of the object. N)r���r:���)�objr<���r���r���r����get_object_traceback����s����rQ���c���������������@���s`���e�Zd�ZdZdZdd��Zedd���Zedd���Zed d ���Z dd��Z d d��Zdd��Zdd��Z dS�)�Tracez" Trace of a memory block. �_tracec�������������C���s ���||�_�d�S�)N)rS���)r���r@���r���r���r���r�������s����zTrace.__init__c�������������C���s ���|�j�d�S�)Nr���)rS���)r���r���r���r����domain����s����zTrace.domainc�������������C���s ���|�j�d�S�)Nr6���)rS���)r���r���r���r���r�������s����z Trace.sizec�������������C���s���t�|�jd��S�)N����)r:���rS���)r���r���r���r���r�����s����zTrace.tracebackc�������������C���s���|�j�|j�kS�)N)rS���)r���r���r���r���r���r�����s����zTrace.__eq__c�������������C���s ���t�|�j�S�)N)r���rS���)r���r���r���r���r��� ��s����zTrace.__hash__c�������������C���s���d|�j�t|�jd�f�S�)Nz%s: %sF)r���r���r���)r���r���r���r���r��� ��s����z Trace.__str__c�������������C���s���d|�j�t|�jd�|�jf�S�)Nz'<Trace domain=%s size=%s, traceback=%r>F)rT���r���r���r���)r���r���r���r���r �����s����zTrace.__repr__N)rS���)r"���r#���r$���r%���r&���r���r9���rT���r���r���r���r���r���r ���r���r���r���r���rR�������s���rR���c���������������@���s<���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd S�)�_Tracesc�������������C���s���t�j|���||�_d�S�)N)r���r����_traces)r����tracesr���r���r���r�����s���� z_Traces.__init__c�������������C���s ���t�|�j�S�)N)r=���rW���)r���r���r���r���r>�����s����z_Traces.__len__c�������������C���s4���t�|t�r"tdd��|�j|�D���S�t|�j|��S�d�S�)Nc�������������s���s���|�]}t�|�V��qd�S�)N)rR���)r?���r@���r���r���r���rA��� ��s����z&_Traces.__getitem__.<locals>.<genexpr>)rB���rC���rD���rW���rR���)r���rE���r���r���r���rF�����s���� z_Traces.__getitem__c�������������C���s���|j�|�jkS�)N)rS���rW���)r���r@���r���r���r���rG���$��s����z_Traces.__contains__c�������������C���s���|�j�|j�kS�)N)rW���)r���r���r���r���r���r���'��s����z_Traces.__eq__c�������������C���s���dt�|���S�)Nz<Traces len=%s>)r=���)r���r���r���r���r ���*��s����z_Traces.__repr__N) r"���r#���r$���r���r>���rF���rG���r���r ���r���r���r���r���rV�����s���rV���c�������������C���s&���t�jj|��}�|�jd�r"|�d�d��}�|�S�)Nz.pycr6������)�os�path�normcase�endswith)r5���r���r���r����_normalize_filename.��s���� r^���c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)� BaseFilterc�������������C���s ���||�_�d�S�)N)� inclusive)r���r`���r���r���r���r���6��s����zBaseFilter.__init__c�������������C���s���t��d�S�)N)�NotImplementedError)r���r@���r���r���r����_match9��s����zBaseFilter._matchN)r"���r#���r$���r���rb���r���r���r���r���r_���5��s���r_���c�������������������sJ���e�Zd�Zd��fdd� Zedd���Zdd��Zd d ��Zdd��Zd d��Z ���Z S�)�FilterNFc����������������s2���t���j|��||�_t|�|�_||�_||�_||�_d�S�)N)�superr���r`���r^����_filename_patternr7���� all_framesrT���)r���r`����filename_patternr7���rf���rT���)� __class__r���r���r���>��s���� zFilter.__init__c�������������C���s���|�j�S�)N)re���)r���r���r���r���rg���G��s����zFilter.filename_patternc�������������C���s6���t�|�}tj||�j�sdS�|�jd�kr(dS�||�jkS�d�S�)NFT)r^����fnmatchre���r7���)r���r5���r7���r���r���r����_match_frame_implK��s���� zFilter._match_frame_implc�������������C���s���|�j�||�|�j�A�S�)N)rj���r`���)r���r5���r7���r���r���r����_match_frameT��s����zFilter._match_framec����������������sH�����j�r,t��fdd�|D���r"��jS���j�S�n|d�\}}��j||�S�d�S�)Nc�������������3���s���|�]\}}��j�||�V��qd�S�)N)rj���)r?���r5���r7���)r���r���r���rA���Y��s���z*Filter._match_traceback.<locals>.<genexpr>r���)rf����anyr`���rk���)r���r���r5���r7���r���)r���r����_match_tracebackW��s���� zFilter._match_tracebackc�������������C���sD���|\}}}|�j�|�}|�jd�k r@|�jr2|o0||�jkS�|p>||�jkS�|S�)N)rm���rT���r`���)r���r@���rT���r���r����resr���r���r���rb���b��s���� z Filter._match)NFN)r"���r#���r$���r���r9���rg���rj���rk���rm���rb���� __classcell__r���r���)rh���r���rc���=��s��� rc���c�������������������s0���e�Zd�Z��fdd�Zedd���Zdd��Z���ZS�)�DomainFilterc����������������s���t���j|��||�_d�S�)N)rd���r����_domain)r���r`���rT���)rh���r���r���r���n��s����zDomainFilter.__init__c�������������C���s���|�j�S�)N)rq���)r���r���r���r���rT���r��s����zDomainFilter.domainc�������������C���s���|\}}}||�j�k|�j�A�S�)N)rT���r`���)r���r@���rT���r���r���r���r���r���rb���v��s���� zDomainFilter._match)r"���r#���r$���r���r9���rT���rb���ro���r���r���)rh���r���rp���m��s���rp���c���������������@���sX���e�Zd�ZdZdd��Zdd��Zedd���Zdd ��Zd d��Z dd ��Z ddd�Zddd�ZdS�)�SnapshotzB Snapshot of traces of memory blocks allocated by Python. c�������������C���s���t�|�|�_||�_d�S�)N)rV���rX����traceback_limit)r���rX���rs���r���r���r���r������s���� zSnapshot.__init__c�������������C���s*���t�|d��}tj|�|tj��W�dQ�R�X�dS�)z1 Write the snapshot into a file. �wbN)�open�pickle�dumpZHIGHEST_PROTOCOL)r���r5����fpr���r���r���rw������s����z Snapshot.dumpc���������� ���C���s ���t�|�d��}tj|�S�Q�R�X�dS�)z. Load a snapshot from a file. �rbN)ru���rv����load)r5���rx���r���r���r���rz������s����z Snapshot.loadc����������������s@���|rt���fdd�|D���sdS�|r<t���fdd�|D���r<dS�dS�)Nc�������������3���s���|�]}|j����V��qd�S�)N)rb���)r?����trace_filter)r@���r���r���rA������s���z)Snapshot._filter_trace.<locals>.<genexpr>Fc�������������3���s���|�]}|j�����V��qd�S�)N)rb���)r?���r{���)r@���r���r���rA������s���T)rl���)r����include_filters�exclude_filtersr@���r���)r@���r���� _filter_trace���s���� zSnapshot._filter_tracec����������������s����t�|t�stdt|�j���|rng��g���x(|D�] }|jrD�j|��q.��j|��q.W�����fdd��jjD��}n�jjj ��}t |�j�S�)z� Create a new Snapshot instance with a filtered traces sequence, filters is a list of Filter or DomainFilter instances. If filters is an empty list, return a new Snapshot instance with a copy of the traces. z)filters must be a list of filters, not %sc����������������s���g�|�]}�j����|�r|�qS�r���)r~���)r?���r@���)r}���r|���r���r���r���� <listcomp>���s����z*Snapshot.filter_traces.<locals>.<listcomp>)rB���r���� TypeError�typer"���r`���r,���rX���rW����copyrr���rs���)r����filtersr{���Z new_tracesr���)r}���r|���r���r���� filter_traces���s���� zSnapshot.filter_tracesc������� ������C���s���|dkrt�d|f���|r.|d kr.t�d|���i�}i�}|�sx�|�jjD�]�}|\}}}y||�} W�nZ�tk r����|dkr~|} n(|dkr�|d�d��} n|d�d�dff} t| �} | ||<�Y�nX�y(|| �}|�j|7��_|�jd7��_W�qF�tk �r ���t| |d�|| <�Y�qFX�qFW�n�x�|�jjD�]�}|\}}}x�|D�]�}y||�} W�nF�tk �r����|dk�rd|f} n|d�dff} t| �} | ||<�Y�nX�y(|| �}|�j|7��_|�jd7��_W�n&�tk �r����t| |d�|| <�Y�nX��q0W��qW�|S�) Nr���r5���r7���zunknown key_type: %rz/cumulative mode cannot by used with key type %rr6���r���)r���r5���r7���)r7���r5���)� ValueErrorrX���rW����KeyErrorr:���r���r���r���) r����key_type� cumulativeZstatsZ tracebacksr@���rT���r���Ztrace_tracebackr���r<���r0���r4���r���r���r���� _group_by���sX���� "zSnapshot._group_byFc�������������C���s,���|�j�||�}t|j���}|jdtjd��|S�)zd Group statistics by key_type. Return a sorted list of Statistic instances. T)�reverse�key)r�����list�values�sortr���r!���)r���r����r����Zgroupedr/���r���r���r���r/������s����zSnapshot.statisticsc�������������C���s6���|�j�||�}|j�||�}t||�}|jdtjd��|S�)z� Compute the differences with an old snapshot old_snapshot. Get statistics as a sorted list of StatisticDiff instances, grouped by group_by. T)r����r����)r����r1���r����r'���r!���)r���Zold_snapshotr����r����r.���r-���r/���r���r���r���� compare_to���s ���� zSnapshot.compare_toN)F)F) r"���r#���r$���r%���r���rw����staticmethodrz���r~���r����r����r/���r����r���r���r���r���rr���{��s���3 rr���c��������������C���s$���t���std��t��}�t��}t|�|�S�)zI Take a snapshot of traces of memory blocks allocated by Python. zLthe tracemalloc module must be tracing memory allocations to take a snapshot)Z is_tracing�RuntimeErrorr���Zget_traceback_limitrr���)rX���rs���r���r���r���� take_snapshot��s ����r����)�collectionsr���r���� functoolsr���ri���rI���Zos.pathrZ���rv���Z_tracemallocr���r���r���r���r'���r1���r2���r:���rQ���rR���rV���r^���r_���rc���rp���rr���r����r���r���r���r����<module>���s0���&0#5%0�