;ς hkDc@sΓdklZdkZdkZdkZdkZdkZd„ZeidƒZ d„Z d„Z d„Z eidƒZ d„Zd fd „ƒYZy eiWnej o eZnXdS( (s generatorsNc csΡd„}t||ƒ}t||ƒ}t}xti|||ƒD]†\}}}|t jo|t jo |t jo t }qCt||ƒ}t||ƒ} tdti|ƒd|| fƒVt}qCWdS(sGenerate side by side diffcCs |idƒS(Ns (slinesrstrip(sline((s lib/idiff.pysssgapscolumnsN(s line_stripsmaps fromlinesstolinessFalsesgapsdifflibs_mdiffscontextsfromdatastodatasflagsNonesTrues _mdiff_splits from_itemsto_items_itemseztsboolean( s fromlinesstolinesscontextstodatas line_stripsgapsfromdatasflags from_itemsto_item((s lib/idiff.pys sidebysides ' "s([+-^])(.*?)cCs³|\}}g}d}xtoyti||ƒ}| o.|it dt i ||ƒdt ƒƒPn|i ƒ|jo6|it dt i |||i ƒ!ƒdt ƒƒn|idƒdjo2|it dt i |idƒƒddƒƒn‘|idƒdjo2|it dt i |idƒƒdd ƒƒnI|idƒd jo2|it dt i |idƒƒdd ƒƒn|iƒ}qWt d |d |ƒSdS(s,Break up row from mdiff output into segmentsistextstypeis+isadds-sremoves^schangessegmentss line_numberN(s line_numberstextssegmentsspossTrues _re_mdiffssearchsmsappends_itemscgisescapesNonesstartsgroupsend(sflags.2s line_numberstextssegmentssmspos((s lib/idiff.pys _mdiff_split-s& )6222ccs‘tiƒi||ƒ}t}xdt||ƒD]S}|di dƒot ||dƒVt}q.|ot |tƒVn|}q.W|ot |tƒVndS(sGenerate unified diffis? N( sdifflibsDifferscompares fromlinesstolinessdiffsNoneslastrows _trim_contextscontextsrows startswiths _differ_split(s fromlinesstolinesscontextsdiffslastrowsrow((s lib/idiff.pysunifiedEs  c csΝtg|pd}d}}d} d}}t}x’|D]Š}t} } |idƒo#|d}||tf} |} n₯|idƒo#|d}|t|f} |} nr|idƒoR|d}}|d}}| djo| d} q|tj o t} qn|||f} | oE| ||||<||jo|d|}t}qΕ|d}q;||jx9|o1|||fVt}|d|}|d}q{W| |fVt}q;WdS(srTrim context lines that don't surround changes from Differ results yields (line, leftnum, rightnum, gap) tuplesis- is+ s N(sNones context_sizescontext_buffers context_starts context_lens context_owedsleftnumsrightnumsFalsesgapslinesslinesrowssaves startswithsTrue( sliness context_sizesrightnumsleftnumsgaps context_lenscontext_buffers context_startslinessaves context_owedsrow((s lib/idiff.pys _trim_contextWsP             s[+-^]+c Cs|\}}} }|o| o d}n#|o d}n| o d}ng}d}|oΕ|i dƒpt ‚x«t i ||ƒD]“}|iƒ|jo6|itdti|||iƒ!ƒdtƒƒn|itdti||iƒ|iƒ!ƒddƒƒ|iƒ}q‰Wn|itdti||ƒdtƒƒtd ti|ƒd|d |d |d | ƒSd S(s(Break row into segments using guide linessremovesaddis? stextstypeschangesgapssegmentss left_numbers right_numberN(srowslines left_numbers right_numbersgapstypessegmentsspossguides startswithsAssertionErrors _re_differsfinditersmsstartsappends_itemscgisescapesNonesendseztsboolean( srowsguides left_numberssegmentssmspossgapslinestypes right_number((s lib/idiff.pys _differ_split–s,   6+ )s_itemcBstZd„ZRS(NcKst|ƒi|ƒdS(N(svarssselfsupdateskw(sselfskw((s lib/idiff.pys__init__΄s(s__name__s __module__s__init__(((s lib/idiff.pys_item³s(s __future__s generatorssdifflibssyssreseztscgis sidebysidescompiles _re_mdiffs _mdiff_splitsunifieds _trim_contexts _re_differs _differ_splits_items_mdiffsAttributeErrorsNone(scgisunifieds _re_differsezts _trim_contexts _re_mdiffsdifflibssyssres generatorss _mdiff_splits_items sidebysides _differ_split((s lib/idiff.pys?s"          =