Your IP : 216.73.216.12
B
YI~d�I�@s4dddddddddd d
dgZdd
lmZddlmZedd�Zdd�ZGdd�d�Z d7dd�Z
dd�ZGdd�d�Zddl
Z
e
�d�jfdd�Zd8dd�Zdd�Zd9d"d�Zd#d$�Zd:d%d�Zd&d'�Zd;d*d �Zdefd+d�Zddefd,d-�Zd.Zd/Zd0Zd1ZGd2d
�d
e�Z[
d3d�Z d4d5�Z!e"d6k�r0e!�dS)<�get_close_matches�ndiff�restore�SequenceMatcher�Differ�IS_CHARACTER_JUNK�IS_LINE_JUNK�context_diff�unified_diff�
diff_bytes�HtmlDiff�Match�)�nlargest)�
namedtupleza b sizecCs|rd||SdS)Ng@g�?�)�matches�lengthrr�,/opt/alt/python37/lib64/python3.7/difflib.py�_calculate_ratio&src@speZdZddd�Zdd�Zdd �Zd
d�Zdd
�Zdd�Zdd�Z dd�Z
ddd�Zdd�Zdd�Z
dd�ZdS)rN�TcCs(||_d|_|_||_|�||�dS)N)�isjunk�a�b�autojunk�set_seqs)�selfrrrrrrr�__init__�s;zSequenceMatcher.__init__cCs|�|�|�|�dS)N)�set_seq1�set_seq2)rrrrrrr�s
zSequenceMatcher.set_seqscCs$||jkrdS||_d|_|_dS)N)r�matching_blocks�opcodes)rrrrrr�s
zSequenceMatcher.set_seq1cCs2||jkrdS||_d|_|_d|_|��dS)N)rrr �
fullbcount�_SequenceMatcher__chain_b)rrrrrr�s
zSequenceMatcher.set_seq2cCs�|j}i|_}x*t|�D]\}}|�|g�}|�|�qWt�|_}|j}|r�x"|��D]}||�r\|� |�q\Wx|D]
}||=q|Wt�|_
}t|�} |jr�| dkr�| dd}
x*|�
�D]\}}t|�|
kr�|� |�q�Wx|D]
}||=q�WdS)N���d�)r�b2j� enumerate�
setdefault�append�set�bjunkr�keys�addZbpopular�lenr�items)rrr&�i�elt�indicesZjunkrZpopular�nZntestZidxsrrrZ __chain_b)s,
zSequenceMatcher.__chain_bcCsJ|j|j|j|jjf\}}}}||d} }
}i}g}
x�t||�D]�}|j}i}xn|�|||
�D]Z}||krpqb||krzP||dd�d}||<||krb||d||d|} }
}qbW|}qBWx`| |k�r(|
|k�r(|||
d��s(|| d||
dk�r(| d|
d|d} }
}q�WxV| ||k�r�|
||k�r�|||
|��s�|| |||
|k�r�|d7}�q,Wxb| |k�r�|
|k�r�|||
d��r�|| d||
dk�r�| d|
d|d} }
}�q�WxV| ||k�r<|
||k�r<|||
|��r<|| |||
|k�r<|d}�q�Wt| |
|�S)Nr
r%)rrr&r+�__contains__�range�getr)r�alo�ahi�blo�bhirrr&ZisbjunkZbestiZbestjZbestsizeZj2lenZnothingr0Zj2lengetZnewj2len�j�krrr�find_longest_matchPsB8$ "z"SequenceMatcher.find_longest_matchcCs�|jdk r|jSt|j�t|j�}}d|d|fg}g}x�|r�|��\}}}}|�||||�\} }
}}|r:|�|�|| kr�||
kr�|�|| ||
f�| ||kr:|
||kr:|�| |||
||f�q:W|��d}
}}g}x^|D]V\}}}|
||k�r|||k�r||7}q�|�r2|�|
||f�|||}
}}q�W|�r\|�|
||f�|�||df�tt t
j|��|_|jS)Nr
)rr.rr�popr=r)�sort�list�mapr�_make)r�la�lbZqueuerr7r8r9r:r0r;r<�x�i1�j1Zk1Znon_adjacent�i2�j2Zk2rrr�get_matching_blocks�s8
z#SequenceMatcher.get_matching_blockscCs�|jdk r|jSd}}g|_}x�|��D]�\}}}d}||krP||krPd}n||kr^d}n||krjd}|r�|�|||||f�||||}}|r,|�d||||f�q,W|S)Nr
r�replace�delete�insert�equal)r rJr))rr0r;Zanswer�ai�bj�size�tagrrr�get_opcodess$
zSequenceMatcher.get_opcodes�c
csr|��}|sdg}|dddkrZ|d\}}}}}|t|||�|t|||�|f|d<|dddkr�|d\}}}}}||t|||�|t|||�f|d<||}g} x�|D]�\}}}}}|dk�r*|||k�r*| �||t|||�|t|||�f�| Vg} t|||�t|||�}}| �|||||f�q�W| �rnt| �dk�rh| dddk�sn| VdS)N)rNr
r%r
r%r
rN���r%)rS�max�minr)r.)
rr3ZcodesrRrFrHrGrI�nn�grouprrr�get_grouped_opcodes<s(&&(&z#SequenceMatcher.get_grouped_opcodescCs0tdd�|��D��}t|t|j�t|j��S)Ncss|]}|dVqdS)rUNr)�.0Ztriplerrr� <genexpr>�sz(SequenceMatcher.ratio.<locals>.<genexpr>)�sumrJrr.rr)rrrrr�rationszSequenceMatcher.ratiocCs�|jdkr8i|_}x"|jD]}|�|d�d||<qW|j}i}|jd}}xH|jD]>}||�rl||}n|�|d�}|d||<|dkrV|d}qVWt|t|j�t|j��S)Nr
r%)r!rr6r4rrr.)rr!r1ZavailZavailhasrZnumbrrr�quick_ratio�s
zSequenceMatcher.quick_ratiocCs*t|j�t|j�}}tt||�||�S)N)r.rrrrW)rrCrDrrr�real_quick_ratio�sz SequenceMatcher.real_quick_ratio)NrrT)rT)�__name__�
__module__�__qualname__rrrrr"r=rJrSrZr^r_r`rrrrr+sl
@,'nG7
2rT�333333�?cCs�|dkstd|f��d|kr*dks:ntd|f��g}t�}|�|�xL|D]D}|�|�|��|krT|��|krT|��|krT|�|��|f�qTWt||�}dd�|D�S)Nr
zn must be > 0: %rgg�?z cutoff must be in [0.0, 1.0]: %rcSsg|]\}}|�qSrr)r[ZscorerErrr�
<listcomp>�sz%get_close_matches.<locals>.<listcomp>) �
ValueErrorrrrr`r_r^r)� _nlargest)ZwordZ
possibilitiesr3�cutoff�result�srErrrr�s
cCs4dt|�}}x ||kr.|||kr.|d7}qW|S)Nr
r%)r.)�line�chr0r3rrr�_count_leading�s
rmc@sFeZdZddd�Zdd�Zdd�Zdd �Zd
d�Zdd
�Zdd�Z dS)rNcCs||_||_dS)N)�linejunk�charjunk)rrnrorrrrMszDiffer.__init__c
cs�t|j||�}x�|��D]�\}}}}}|dkrD|�||||||�} n\|dkr^|�d|||�} nB|dkrx|�d|||�} n(|dkr�|�d|||�} ntd|f��| EdHqWdS) NrKrL�-rM�+rN� zunknown tag %r)rrnrS�_fancy_replace�_dumprf)
rrr�cruncherrRr7r8r9r:�grrr�comparedszDiffer.compareccs*x$t||�D]}d|||fVqWdS)Nz%s %s)r5)rrRrE�lo�hir0rrrrt�szDiffer._dumpc
csr||||kr2|�d|||�}|�d|||�}n |�d|||�}|�d|||�}x||fD]} | EdHq\WdS)Nrqrp)rt)
rrr7r8rr9r:�first�secondrvrrr�_plain_replace�szDiffer._plain_replaceccsFd\}}t|j�} d\}
}x�t||�D]�}||}
| �|
�xxt||�D]j}||}||
krp|
dkrH||}
}qH| �|�| ��|krH| ��|krH| ��|krH| ��||}}}qHWq&W||kr�|
dkr�|�||||||�EdHdS|
|d}}}nd}
|� ||||||�EdH||||}}|
dk�rd}}| �
||�x�| ��D]�\}}}}}||||}}|dk�r�|d|7}|d|7}nb|dk�r�|d|7}nJ|d k�r�|d
|7}n2|dk�r�|d|7}|d|7}ntd
|f���qRW|�
||||�EdHn
d|V|� ||d|||d|�EdHdS)N)g�G�z��?g�?)NNg�?rrK�^rLrprMrqrNrrzunknown tag %rz r%)rror5rrr`r_r^r|�
_fancy_helperrrSrf�_qformat)rrr7r8rr9r:Z
best_ratiorhruZeqiZeqjr;rPr0rOZbest_iZbest_jZaeltZbelt�atags�btagsrRZai1Zai2Zbj1Zbj2rCrDrrrrs�sX
zDiffer._fancy_replaceccsbg}||kr<||kr*|�||||||�}qT|�d|||�}n||krT|�d|||�}|EdHdS)Nrprq)rsrt)rrr7r8rr9r:rvrrrr~�szDiffer._fancy_helperccs�tt|d�t|d��}t|t|d|�d��}t|t|d|�d��}||d���}||d���}d|V|r�dd||fVd|V|r�dd||fVdS)N� rrz- z? %s%s
z+ )rWrm�rstrip)rZalineZbliner�r��commonrrrr
s
zDiffer._qformat)NN)
rarbrcrrwrtr|rsr~rrrrrr�s^
)^Nz
\s*(?:#\s*)?$cCs||�dk S)Nr)rkZpatrrrr>s� cCs||kS)Nr)rlZwsrrrrNscCs:|d}||}|dkr"d�|�S|s.|d8}d�||�S)Nr%z{}z{},{})�format)�start�stop� beginningrrrr�_format_range_unifiedes
r�r�
ccsht|||||||�d}�xHtd||��|�D�]0} |s�d}|rJd�|�nd}
|r\d�|�nd}d�||
|�Vd�|||�V| d| d}}
t|d |
d
�}t|d|
d�}d
�|||�Vx�| D]�\}}}}}|dk�rx|||�D]}d|Vq�Wq�|dk�r2x |||�D]}d|V�qW|dkr�x |||�D]}d|V�qHWq�Wq.WdS)NFTz {}rz
--- {}{}{}z
+++ {}{}{}r
rUr%�rT�z@@ -{} +{} @@{}rNrr>rLrKrp>rMrKrq)�_check_typesrrZr�r�)rr�fromfile�tofile�fromfiledate�
tofiledater3�lineterm�startedrY�fromdate�todaterz�last�file1_range�file2_rangerRrFrHrGrIrkrrrr ps0)
cCsB|d}||}|s|d8}|dkr.d�|�Sd�|||d�S)Nr%z{}z{},{})r�)r�r�r�rrrr�_format_range_context�s
r�ccs�t|||||||�tddddd�}d} �xztd||��|�D�]b}
| s�d} |rZd�|�nd }|rld�|�nd }d
�|||�Vd�|||�V|
d|
d
}
}d|Vt|
d|d�}d�||�Vtdd�|
D���r&xD|
D]<\}}}}}|dkr�x$|||�D]}|||V�q
Wq�Wt|
d|d�}d�||�Vtdd�|
D��r>xH|
D]@\}}}}}|dk�r^x$|||�D]}|||V�q�W�q^Wq>WdS)Nz+ z- z! z )rMrLrKrNFTz {}rz
*** {}{}{}z
--- {}{}{}r
rUz***************r%r�z
*** {} ****{}css |]\}}}}}|dkVqdS)>rLrKNr)r[rR�_rrrr\szcontext_diff.<locals>.<genexpr>rMrTr�z
--- {} ----{}css |]\}}}}}|dkVqdS)>rMrKNr)r[rRr�rrrr\srL)r��dictrrZr�r��any)rrr�r�r�r�r3r��prefixr�rYr�r�rzr�r�rRrFrHr�rkr�rGrIrrrr�s4,
cGs�|r0t|dt�s0tdt|d�j|df��|r`t|dt�s`tdt|d�j|df��x$|D]}t|t�sftd|f��qfWdS)Nr
z)lines to compare must be str, not %s (%r)z"all arguments must be str, not: %r)�
isinstance�str� TypeError�typera)rr�args�argrrrr�s
r���
c cs�dd�} tt| |��}tt| |��}| |�}| |�}| |�}| |�}| |�}|||||||||�}
x|
D]}|�dd�VqhWdS)Nc
SsPy|�dd�Stk
rJ}z dt|�j|f}t|�|�Wdd}~XYnXdS)N�ascii�surrogateescapez(all arguments must be bytes, not %s (%r))�decode�AttributeErrorr�rar�)rj�err�msgrrrr�-szdiff_bytes.<locals>.decoder�r�)r@rA�encode)Zdfuncrrr�r�r�r�r3r�r��linesrkrrrr
"s
cCst||��||�S)N)rrw)rrrnrorrrr@s#c#s�ddl}|�d��t||||��ddgf�fdd� ���fdd���fdd�}|�}|dkrj|EdH�n,|d 7}d}�xddg|} }
d
}xR|d
kr�yt|�\}}
}Wntk
r�dSX| |}||
|f|
|<| d 7} q�W| |kr�dV|}n| }d} x.|�r,| |}| d 7} |
|V|d 8}�qW|d }yDx>|�rvt|�\}}
}|�r^|d }n|d 8}||
|fV�q:WWqztk
�r�dSXqzWdS)Nr
z
(\++|\-+|\^+)cs�||d7<|dkr2|||�d�dd�fS|dkr�|�d�|�d�}}g}|fdd�}��||�xHt|�D]<\}\} }
|d| �d||| |
�d||
d�}qvW|dd�}n*|�d�dd�}|s�d }d||d}|||fS)
Nr%r
r��?cSs&|�|�d�d|��g�|�d�S)Nr%r
)r)rY�span)Zmatch_object�sub_inforrr�record_sub_info�sz3_mdiff.<locals>._make_line.<locals>.record_sub_info��rr)r>�sub�reversed)r�Z
format_key�sideZ num_lines�textZmarkersr�r��keyZbegin�end)� change_rerr�
_make_line�s 4z_mdiff.<locals>._make_linec3s�g}d\}}�xlx t|�dkr0|�t�d��qWd�dd�|D��}|�d�rX|}�n�|�d�r��|dd ��|dd
�dfVq�n�|�d�r�|d
8}�|d
d �ddfVq�nl|�d�rވ|d
d �d}}|d
d }}�n>|�d��r�|dd ��|dd
�dfVq�n|�d��r8�|dd ��|dd
�dfVqn�|�d
��rd|d
8}�|d
d �ddfVqn�|�d��r�|d
7}d�|dd
�dfVqn�|�d��r�d�|dd
�}}|d
d }}n^|�d��r�|d
7}d�|dd
�dfVqn2|�d��r�|dd�dd ��|dd
�dfVqx|d k�r:|d
7}dV�qWx|d k�rZ|d
8}dV�q>W|�d��rldS||dfVqWdS)N)r
r
r��XrcSsg|]}|d�qS)r
r)r[rkrrrre�sz2_mdiff.<locals>._line_iterator.<locals>.<listcomp>z-?+?r�r
r%Tz--++rp)z--?+z--+z- z-+?z-?+z+--rq)z+ z+-rrF)N)rr�T))rr�NT)r.r)�next�join�
startswith)r�Znum_blanks_pendingZnum_blanks_to_yieldrj� from_line�to_line)r��diff_lines_iteratorrr�_line_iterator�sf
$z_mdiff.<locals>._line_iteratorc3s���}gg}}x�xpt|�dks,t|�dkr�yt|�\}}}Wntk
rRdSX|dk rj|�||f�|dk r|�||f�qW|�d�\}}|�d�\}}|||p�|fVqWdS)Nr
)r.r��
StopIterationr)r>)Z
line_iterator� fromlines�tolinesr�r��
found_diffZfromDiffZto_diff)r�rr�_line_pair_iterators
z#_mdiff.<locals>._line_pair_iteratorr%F)NNN)�re�compilerr�r�)r�r��contextrnror�r�Zline_pair_iteratorZlines_to_write�indexZcontextLinesr�r�r�r0r)r�r�r�r�r�_mdiffesT"
8X!
r�an
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=%(charset)s" />
<title></title>
<style type="text/css">%(styles)s
</style>
</head>
<body>
%(table)s%(legend)s
</body>
</html>aH
table.diff {font-family:Courier; border:medium;}
.diff_header {background-color:#e0e0e0}
td.diff_header {text-align:right}
.diff_next {background-color:#c0c0c0}
.diff_add {background-color:#aaffaa}
.diff_chg {background-color:#ffff77}
.diff_sub {background-color:#ffaaaa}aZ
<table class="diff" id="difflib_chg_%(prefix)s_top"
cellspacing="0" cellpadding="0" rules="groups" >
<colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
<colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
%(header_row)s
<tbody>
%(data_rows)s </tbody>
</table>a�
<table class="diff" summary="Legends">
<tr> <th colspan="2"> Legends </th> </tr>
<tr> <td> <table border="" summary="Colors">
<tr><th> Colors </th> </tr>
<tr><td class="diff_add"> Added </td></tr>
<tr><td class="diff_chg">Changed</td> </tr>
<tr><td class="diff_sub">Deleted</td> </tr>
</table></td>
<td> <table border="" summary="Links">
<tr><th colspan="2"> Links </th> </tr>
<tr><td>(f)irst change</td> </tr>
<tr><td>(n)ext change</td> </tr>
<tr><td>(t)op</td> </tr>
</table></td> </tr>
</table>c@s�eZdZeZeZeZeZdZdddefdd�Z dd d
�dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zddd�ZdS)rr
�NcCs||_||_||_||_dS)N)�_tabsize�_wrapcolumn� _linejunk� _charjunk)r�tabsizeZ
wrapcolumnrnrorrrr�szHtmlDiff.__init__rF�zutf-8)�charsetcCs:|jt|j|j|j||||||d�|d��|d��|�S)N)r��numlines)ZstylesZlegend�tabler��xmlcharrefreplace)�_file_templater��_styles�_legend�
make_tabler�r�)rr�r��fromdesc�todescr�r�r�rrr� make_file�s
zHtmlDiff.make_filecs8�fdd���fdd�|D�}�fdd�|D�}||fS)Ncs6|�dd�}|��j�}|�dd�}|�dd��d�S)Nrrr�r�r�)rK�
expandtabsr�r�)rk)rrr�expand_tabs�sz2HtmlDiff._tab_newline_replace.<locals>.expand_tabscsg|]}�|��qSrr)r[rk)r�rrresz1HtmlDiff._tab_newline_replace.<locals>.<listcomp>csg|]}�|��qSrr)r[rk)r�rrresr)rr�r�r)r�rr�_tab_newline_replace�s
zHtmlDiff._tab_newline_replacecCs|s|�||f�dSt|�}|j}||ksB||�d�d|krT|�||f�dSd}d}d}xd||kr�||kr�||dkr�|d7}||}|d7}qb||dkr�|d7}d}qb|d7}|d7}qbW|d|�} ||d�}
|r�| d} d||
}
|�|| f�|�|d|
�dS)Nr�rTr
rr%r��>)r)r.r��count�_split_line)rZ data_listZline_numr�rQrVr0r3ZmarkZline1Zline2rrrr�s8
zHtmlDiff._split_lineccs�x�|D]�\}}}|dkr&|||fVq||\}}\}}gg} }
|�| ||�|�|
||�x@| sh|
r�| rx| �d�}nd}|
r�|
�d�}nd}|||fVq`WqWdS)Nr
)rrr)r�r>)r�diffs�fromdata�todata�flagZfromlineZfromtextZtolineZtotext�fromlist�tolistrrr�
_line_wrapper;s
zHtmlDiff._line_wrapperc Cs�ggg}}}xz|D]r\}}}y4|�|jd|f|���|�|jd|f|���Wn(tk
r||�d�|�d�YnX|�|�qW|||fS)Nr
r%)r)�_format_liner�)rr�r�r��flaglistr�r�r�rrr�_collect_linesWs
zHtmlDiff._collect_linescCsryd|}d|j||f}Wntk
r6d}YnX|�dd��dd��dd �}|�d
d���}d|||fS)
Nz%dz
id="%s%s"r�&z&r�z>�<z<rrz z<<td class="diff_header"%s>%s</td><td nowrap="nowrap">%s</td>)�_prefixr�rKr�)rr�r�Zlinenumr��idrrrr�ls
zHtmlDiff._format_linecCs0dtj}dtj}tjd7_||g|_dS)Nzfrom%d_zto%d_r%)r�_default_prefixr�)rZ
fromprefix�toprefixrrr�_make_prefix�s
zHtmlDiff._make_prefixcCs�|jd}dgt|�}dgt|�}d\} }
d}xbt|�D]V\}}
|
r�|
s�d}
|}td||g�}d|| f||<| d7} d|| f||<q<d}
q<W|s�dg}dg}dg}d}|r�d g}|}n
d
g}}|ds�d||d<d|||<|||||fS)
Nr%r)r
Fr
Tz id="difflib_chg_%s_%d"z"<a href="#difflib_chg_%s_%d">n</a>Fz2<td></td><td> No Differences Found </td>z(<td></td><td> Empty File </td>z!<a href="#difflib_chg_%s_0">f</a>z#<a href="#difflib_chg_%s_top">t</a>)r�r.r'rV)rr�r�r�r�r�r��next_id� next_hrefZnum_chgZ in_changer�r0r�rrr�_convert_flags�s:
zHtmlDiff._convert_flagsc
CsV|��|�||�\}}|r"|}nd}t||||j|jd�}|jrL|�|�}|�|�\} }
}|�| |
|||�\} }
}}}
g}d}x`t t
|��D]P}||dkr�|dkr�|�d�q�|�||
|||| ||||
|f�q�W|s�|�rddd|dd|f}nd}|jt
d�|�||jd d
�}|�dd��d
d��dd��dd��dd�S)N)rnrozV <tr><td class="diff_next"%s>%s</td>%s<td class="diff_next">%s</td>%s</tr>
r
z) </tbody>
<tbody>
z <thead><tr>%s%s%s%s</tr></thead>z!<th class="diff_next"><br /></th>z+<th colspan="2" class="diff_header">%s</th>rr%)Z data_rows�
header_rowr�z+z<span class="diff_add">z-z<span class="diff_sub">z^z<span class="diff_chg">r�z</span>r�z )r�r�r�r�r�r�r�r�r�r5r.r)�_table_templater�r�r�rK)rr�r�r�r�r�r�Z
context_linesr�r�r�r�r�r�rjZfmtr0r�r�rrrr��sH
zHtmlDiff.make_table)rrFr�)rrFr�)rarbrcr�r�r�r�r�rrr�r�r�r�r�r�r�r�r�rrrrr�s$7/ccsryddd�t|�}Wn"tk
r8td|�d�YnXd|f}x*|D]"}|dd�|krH|dd�VqHWdS)Nz- z+ )r%r�z)unknown delta choice (must be 1 or 2): %rz r�)�int�KeyErrorrf)ZdeltaZwhichrR�prefixesrkrrrrs
cCsddl}ddl}|�|�S)Nr
)�doctest�difflibZtestmod)rrrrr�_test,sr�__main__)rTrd)r�)rrrrrTr�)rrrrrTr�)r�r�r�r�rTr�)#�__all__�heapqrrg�collectionsrZ_namedtuplerrrrrmrr�r��matchrrr�r r�rr�r
rr�r�r�r�r��objectrrrrarrrr�<module>s\
0O
H
K
%!
a
?>