a DOgkE@s,gdZddlmZddlmZddlmZeddZ ddZ Gd d d Z d9d dZ ddZ GdddZddlZedjfddZd:ddZddZd;ddZd d!Zd) get_close_matchesndiffrestoreSequenceMatcherDifferIS_CHARACTER_JUNK IS_LINE_JUNK context_diff unified_diff diff_bytesHtmlDiffMatch)nlargest) namedtuple) GenericAliasr za b sizecCs|rd||SdS)Ng@?)matcheslengthrr,/opt/alt/python39/lib64/python3.9/difflib.py_calculate_ratio's rc@szeZdZdddZddZdd Zd d Zd d ZdddZddZ ddZ d ddZ ddZ ddZ ddZeeZdS)!rNTcCs(||_d|_|_||_|||dSN)isjunkabautojunkset_seqs)selfrrrrrrr__init__xs; zSequenceMatcher.__init__cCs||||dSr)set_seq1set_seq2)rrrrrrrs zSequenceMatcher.set_seqscCs$||jurdS||_d|_|_dSr)rmatching_blocksopcodes)rrrrrr s zSequenceMatcher.set_seq1cCs2||jurdS||_d|_|_d|_|dSr)rr"r# fullbcount_SequenceMatcher__chain_b)rrrrrr!s   zSequenceMatcher.set_seq2c Cs|j}i|_}t|D]\}}||g}||qt|_}|j}|r~|D]}||rV| |qV|D] }||=qrt|_ }t |} |j r| dkr| dd} | D]\}} t | | kr| |q|D] }||=qdS)Nd)rb2j enumerate setdefaultappendsetbjunkrkeysaddZbpopularlenritems) rrr)ieltindicesZjunkrZpopularnZntestZidxsrrrZ __chain_b s,           zSequenceMatcher.__chain_br cCsT|j|j|j|jjf\}}}}|dur.t|}|dur>t|}||d} } } i} g} t||D]}| j}i}|||| D]\}||krq~||krq||ddd}||<|| kr~||d||d|} } } q~|} q`| |kr@| |kr@||| ds@|| d|| dkr@| d| d| d} } } q| | |kr| | |kr||| | s|| | || | kr| d7} q@| |kr| |kr||| dr|| d|| dkr| d| d| d} } } q| | |krH| | |krH||| | rH|| | || | krH| d} qt| | | SNr r() rrr)r. __contains__r1rangegetr )raloahiblobhirrr)ZisbjunkZbestiZbestjZbestsizeZj2lenZnothingr3Zj2lengetZnewj2lenjkrrrfind_longest_match1sZ:"   z"SequenceMatcher.find_longest_matchcCs||jdur|jSt|jt|j}}d|d|fg}g}|r|\}}}}|||||\} } } } | r8|| || kr|| kr||| || f| | |kr8| | |kr8|| | || | |fq8|d} }}g}|D]V\}}}| ||kr|||kr||7}q|r,|| ||f|||} }}q|rT|| ||f|||dftt t j ||_|jSNr ) r"r1rrpoprAr,sortlistmapr _make)rlalbZqueuer"r;r<r=r>r3r?r@xi1j1Zk1Z non_adjacenti2j2Zk2rrrget_matching_blockss8    z#SequenceMatcher.get_matching_blockscCs|jdur|jSd}}g|_}|D]\}}}d}||krN||krNd}n||kr\d}n ||krhd}|r||||||f||||}}|r*|d||||fq*|S)Nr rreplacedeleteinsertequal)r#rOr,)rr3r?Zansweraibjsizetagrrr get_opcodess$  zSequenceMatcher.get_opcodesc csn|}|sdg}|dddkrZ|d\}}}}}|t||||t||||f|d<|dddkr|d\}}}}}||t||||t|||f|d<||}g} |D]\}}}}}|dkr(|||kr(| ||t||||t|||f| Vg} t|||t|||}}| |||||fq| rjt| dkrd| dddksj| VdS)N)rSr r(r r(r rSr()rXmaxminr,r1) rr6ZcodesrWrKrMrLrNZnngrouprrrget_grouped_opcodes#s(&&(&z#SequenceMatcher.get_grouped_opcodescCs0tdd|D}t|t|jt|jS)Ncss|]}|dVqdS)rZNr).0Ztriplerrr kz(SequenceMatcher.ratio..)sumrOrr1rr)rrrrrratioUszSequenceMatcher.ratiocCs|jdur4i|_}|jD]}||dd||<q|j}i}|jd}}|jD]>}||rf||}n ||d}|d||<|dkrP|d}qPt|t|jt|jSr7)r$rr:r8rrr1)rr$r4ZavailZavailhasrZnumbrrr quick_rations         zSequenceMatcher.quick_ratiocCs*t|jt|j}}tt||||Sr)r1rrrr\)rrHrIrrrreal_quick_ratiosz SequenceMatcher.real_quick_ratio)NrrT)r Nr N)rY)__name__ __module__ __qualname__rrr r!r%rArOrXr^rcrdre classmethodr__class_getitem__rrrrr,sL @ ,' tG7 2 rrY333333?cCs|dkstd|fd|kr*dks:ntd|fg}t}|||D]D}||||krR||krR||krR|||fqRt||}dd|DS)Nr zn must be > 0: %rgrz cutoff must be in [0.0, 1.0]: %rcSsg|] \}}|qSrr)r_ZscorerJrrr raz%get_close_matches..) ValueErrorrr!r rerdrcr, _nlargest)ZwordZ possibilitiesr6cutoffresultsrJrrrrs"      rcCsdddt||DS)Nrcss*|]"\}}|dkr|r|n|VqdS) N)isspace)r_cZtag_crrrr`sz$_keep_original_ws..)joinzip)rqZtag_srrr_keep_original_wss rwc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)rNcCs||_||_dSrlinejunkcharjunk)rryrzrrrr*szDiffer.__init__c cst|j||}|D]\}}}}}|dkrB|||||||} n\|dkr\|d|||} nB|dkrv|d|||} n(|dkr|d|||} ntd|f| EdHqdS) NrPrQ-rR+rSrrunknown tag %r)rryrX_fancy_replace_dumprm) rrrcruncherrWr;r<r=r>grrrcompareAszDiffer.compareccs&t||D]}d|||fVq dS)Nz%s %s)r9)rrWrJlohir3rrrrjsz Differ._dumpc csn||||kr2|d|||}|d|||}n |d|||}|d|||}||fD]} | EdHqZdS)Nr|r{)r) rrr;r<rr=r>firstsecondrrrr_plain_replaceos zDiffer._plain_replaceccs:d\}}t|j} d\} } t||D]} || } | | t||D]j}||}|| krl| durD|| } } qD| || |krD| |krD| |krD| || }}}qDq$||kr| dur|||||||EdHdS| | d}}}nd} | ||||||EdH||||}}| dur d}}| ||| D]\}}}}}||||}}|dkr|d|7}|d|7}nb|dkr|d|7}nJ|d kr|d |7}n2|d kr|d |7}|d |7}nt d |fqH| ||||EdHn d|V| ||d|||d|EdHdS)N)gGz?g?)NNrrrP^rQr{rRr|rSrrr} r()rrzr9r!r rerdrcr _fancy_helperrrXrm_qformat)rrr;r<rr=r>Z best_ratiororZeqiZeqjr?rUr3rTZbest_iZbest_jZaeltZbeltatagsbtagsrWZai1Zai2Zbj1Zbj2rHrIrrrr~}s\                zDiffer._fancy_replaceccsbg}||kr<||kr*|||||||}qT|d|||}n||krT|d|||}|EdHdS)Nr{r|)r~r)rrr;r<rr=r>rrrrrszDiffer._fancy_helperccsXt||}t||}d|V|r8d|dVd|V|rTd|dVdS)N- z?  + )rwrstrip)rZalineZblinerrrrrrs  zDiffer._qformat)NN) rfrgrhrrrrr~rrrrrrrsV )^ rNz \s*(?:#\s*)?$cCs ||duSrr)lineZpatrrrrsr cCs||vSrr)ZchZwsrrrr%srcCs:|d}||}|dkr"d|S|s.|d8}d||SNr(z{}z{},{}formatstartstopZ beginningrrrr_format_range_unified<s rrrccsPt|||||||d}td|||D]} |s|d}|rFd|nd} |rXd|nd} d|| |Vd|| |V| d| d} } t| d | d }t| d | d }d |||V| D]\}}}}}|dkr|||D]}d|Vqq|dvr"|||D]}d|Vq|dvr|||D]}d|Vq6qq*dS)NFT {}r --- {}{}{}z +++ {}{}{}r rZr(rYz@@ -{} +{} @@{}rSrr>rQrPr{>rRrPr|) _check_typesrr^rr)rrfromfiletofile fromfiledate tofiledater6linetermstartedr]fromdatetodaterlast file1_range file2_rangerWrKrMrLrNrrrrr Gs0)  r cCsB|d}||}|s|d8}|dkr.d|Sd|||dSrrrrrr_format_range_contexts rccst|||||||tddddd}d} td|||D]R} | sd} |rVd|nd } |rhd|nd } d || |Vd || |V| d | d } }d|Vt| d|d}d||Vtdd| Dr| D]8\}}}}}|dkr|||D]}|||Vqqt| d|d}d||Vtdd| Dr:| D]<\}}}}}|dkrP|||D]}|||VqtqPq:dS)Nrrz! r)rRrQrPrSFTrrz *** {}{}{}rr rZz***************r(rz *** {} ****{}css |]\}}}}}|dvVqdS)>rQrPNrr_rW_rrrr`razcontext_diff..rRrYrz --- {} ----{}css |]\}}}}}|dvVqdS)>rRrPNrrrrrr`rarQ)rdictrr^rrany)rrrrrrr6rprefixrr]rrrrrrWrKrMrrrrLrNrrrrs4,  rcGs|r0t|dts0tdt|dj|df|r`t|dts`tdt|dj|df|D]}t|tsdtd|fqddS)Nr z)lines to compare must be str, not %s (%r)z"all arguments must be str, not: %r) isinstancestr TypeErrortyperf)rrargsargrrrrs rra c cs~dd} tt| |}tt| |}| |}| |}| |}| |}| |}|||||||||} | D]} | ddVqfdS)Nc SsTz|ddWStyN}z(dt|j|f}t||WYd}~n d}~00dS)Nasciisurrogateescapez(all arguments must be bytes, not %s (%r))decodeAttributeErrorrrfr)rqerrmsgrrrrs zdiff_bytes..decoderr)rErFencode) Zdfuncrrrrrrr6rrlinesrrrrr s r cCst||||Sr)rr)rrryrzrrrrs#rc#sddl}|dt||||ddgffdd fddfdd}|}|durj|EdHn|d 7}d}ddg|} } d } | d urzt|\} } } WntyYdS0| |}| | | f| |<| d 7} q| |krd V|}n| }d} |r | |}| d 7} | |V|d 8}q|d }z@|rft|\} } } | rN|d }n|d 8}| | | fVq*Wqvty~YdS0qvdS) Nr z (\++|\-+|\^+)c s||d7<|dur2|||dddfS|dkr|d|d}}g}|fdd}||t|D]<\}\} } |d| d||| | d|| d}qt|dd}n*|ddd}|sd }d||d}|||fS) Nr(r r?cSs&||dd|g|dS)Nr(r )r,r]span)Z match_objectsub_inforrrrecord_sub_infosz3_mdiff.._make_line..record_sub_inforr)rCsubreversed) rZ format_keysideZ num_linestextZmarkersrrkeyZbeginend) change_rerr _make_linefs   2z_mdiff.._make_linec3sng}d\}}t|dkr*|tdq ddd|D}|drP|}n|dr||dd |dd d fVq n|d r|d 8}|d d dd fVq nl|drֈ|d d d}}|d d }}n>|dr|dd |dd d fVq n|dr0|dd |dd d fVq n|d r\|d 8}|d d dd fVq n|dr|d 7}d|dd d fVq n|drd|dd }}|d d }}n^|dr|d 7}d|dd d fVq n2|dr|dddd |dd dfVq |d kr0|d 7}dVq|d krL|d 8}dVq0|dr\dS||d fVq dS)N)r r rXrcSsg|] }|dqS)r rr_rrrrrlraz2_mdiff.._line_iterator..z-?+?rr r(Tz--++r{)z--?+z--+rz-+?z-?+z+--r|)rz+-rrF)NrrT)rNT)r1r,nextru startswith)rZnum_blanks_pendingZnum_blanks_to_yieldrq from_lineto_line)rdiff_lines_iteratorrr_line_iteratorsd            $     z_mdiff.._line_iteratorc3s}gg}}t|dks(t|dkr~zt|\}}}WntyNYdS0|durf|||f|dur|||fq|d\}}|d\}}|||p|fVqdSrB)r1r StopIterationr,rC)Z line_iterator fromlinestolinesrr found_diffZfromDiffZto_diff)rrr_line_pair_iterators   z#_mdiff.._line_pair_iteratorr(F)NNN)recompilerrr)rrcontextryrzrrZline_pair_iteratorZlines_to_writeindexZ contextLinesrrrr3r)rrrrr_mdiff<sR" 8X !     ran %(table)s%(legend)s 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 %(header_row)s %(data_rows)s
a
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op
c@seZdZeZeZeZeZdZdddefddZ dd d d d Z d dZ ddZ ddZ ddZddZddZddZdddZdS)r r NcCs||_||_||_||_dSr)_tabsize _wrapcolumn _linejunk _charjunk)rtabsizeZ wrapcolumnryrzrrrrs zHtmlDiff.__init__rFzutf-8)charsetc Cs:|jt|j|j|j||||||d|d|d|S)N)rnumlines)ZstylesZlegendtablerxmlcharrefreplace)_file_templater_styles_legend make_tablerr)rrrfromdesctodescrrrrrr make_files zHtmlDiff.make_filecs8fddfdd|D}fdd|D}||fS)Ncs6|dd}|j}|dd}|dddS)Nrrr r)rP expandtabsrr)r)rrr expand_tabss   z2HtmlDiff._tab_newline_replace..expand_tabscsg|] }|qSrrrrrrrlraz1HtmlDiff._tab_newline_replace..csg|] }|qSrrrrrrrlrar)rrrr)rrr_tab_newline_replaces zHtmlDiff._tab_newline_replacec Cs|s|||fdSt|}|j}||ksB||dd|krT|||fdSd}d}d}||kr||kr||dkr|d7}||}|d7}q`||dkr|d7}d}q`|d7}|d7}q`|d|} ||d} |r| d} d|| } ||| f||d| dS)NrrYr rr(r>)r,r1rcount _split_line) rZ data_listZline_numrrVr[r3r6ZmarkZline1Zline2rrrrs8        zHtmlDiff._split_linec cs|D]\}}}|dur$|||fVq||\}}\}}gg} } || |||| ||| sd| r| rt| d}nd}| r| d}nd}|||fVq\qdS)Nr )rrr)rrC) rdiffsfromdatatodataflagZfromlineZfromtextZtolineZtotextfromlisttolistrrr _line_wrappers     zHtmlDiff._line_wrapperc Csggg}}}|D]t\}}}z8||jd|g|R||jd|g|RWn&ty||d|dYn0||q|||fSr7)r, _format_liner)rrrrflaglistrrrrrr_collect_lines.s   zHtmlDiff._collect_linescCspzd|}d|j||f}Wnty4d}Yn0|dddddd }|d d }d |||fS) Nz%dz id="%s%s"r&z&rz>%s%s)_prefixrrPr)rrrZlinenumridrrrrCs  zHtmlDiff._format_linecCs0dtj}dtj}tjd7_||g|_dS)Nzfrom%d_zto%d_r()r _default_prefixr)rZ fromprefixtoprefixrrr _make_prefixZs  zHtmlDiff._make_prefixcCs|jd}dgt|}dgt|}d\} } d} t|D]V\} } | r| sd} | } td| |g} d|| f|| <| d7} d|| f|| <q:d} q:|sdg}dg}dg}d} |rd g}|}n d g}}|dsd ||d<d ||| <|||||fS) Nr(r)r Fr Tz id="difflib_chg_%s_%d"z"nFz2 No Differences Found z( Empty File z!fz#t)rr1r*r[)rrrrrrr next_id next_hrefZnum_chgZ in_changerr3rrrr_convert_flagses<     zHtmlDiff._convert_flagsc CsR||||\}}|r"|}nd}t||||j|jd}|jrL||}||\} } } || | | ||\} } } } } g}d}t t | D]P}| |dur|dkr| dq| || || || || || |fq|s|rddd|dd|f}nd}|j t d|||jd d }|d d d dddddddS)NrxzV %s%s%s%s r z) z %s%s%s%sz!
z+%srr()Z data_rows header_rowrz+zz-zz^zrzrr)r rrrrrrrrr9r1r,_table_templaterrurrP)rrrrrrrZ context_linesrrrrrr rqZfmtr3rrrrrrsZ        zHtmlDiff.make_table)rrFr)rrFr)rfrgrhrrrrr rrrrrrrrr rrrrrrr s.  7 /r ccslzdddt|}Wn ty6td|dYn0d|f}|D]"}|dd|vrD|ddVqDdS)Nrr)r(rz)unknown delta choice (must be 1 or 2): %rrr)intKeyErrorrm)ZdeltaZwhichrWprefixesrrrrrs rcCsddl}ddl}||SrB)doctestdifflibZtestmod)rrrrr_testsr__main__)rYrk)r)rrrrrYr)rrrrrYr)rararararYr)%__all__heapqrrn collectionsrZ _namedtupletypesrr rrrrwrrrmatchrrrr rrrr rrrrrrobjectr rrrfrrrrs`    r 1 A   I  L %   a