;H@SSKrSSKJr SSKrSSKrSSKr"SS\R 5r"SS\R 5r"SS\R 5r S r S r S r S r S rSrSrSr"SS\R 5r"SS\R 5r"SS\R 5r"SS\R 5r"SS\R 5rSrSr\S:Xa\R4"5 gg)N)findfilec&\rSrSrSrSrSrSrg) TestWithAsciic[R"SSS5nURUR5SSS9 UR [ UR 55SS/5 UR UR[55 [R"SSS5nURUR5SSS9 UR [ UR 55/S Q5 UR UR[55 g) Ndbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgףp= ?places)insertrrr)equalrdreebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb))rr2rr)r rrr3)rrrrr) difflibSequenceMatcherassertAlmostEqualratio assertEquallist get_opcodesbpopularsetselfsms 8/opt/alt/python313/lib64/python3.13/test/test_difflib.pytest_one_insertTestWithAscii.test_one_insert s  $ $T9o F rxxz5; bnn./&) + , ce,  $ $T96O P rxxz5; bnn./ - . ce,c[R"SSS5nURUR5SSS9 UR [ UR 55/SQ5 g)NQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg+?r r ))rr(rr()deleter()r(r()rr*Qr(P)rrrrrrrrs r!test_one_deleteTestWithAscii.test_one_deletesT  $ $T+DFY Z rxxz5; bnn./ + ,r$cL[R"SSSS9nURUR[ 55 [R"SSSS9nURURS15 [R"SSSS9nURURSS 15 g) Nc US:H$N xs r!*TestWithAscii.test_bjunk..!a3hr$r'Taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)isjunkabc US:H$r1r3r4s r!r6r7%r8r$zhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb r2c US;$)N)r2r<r3r4s r!r6r7)sa:or$r<)rrrbjunkrrs r! test_bjunkTestWithAscii.test_bjunk s  $ $,>%)<> 35)  $ $,>%)GI C5)  $ $,E%)GI C:.r$r3N)__name__ __module__ __qualname____firstlineno__r"r-r@__static_attributes__r3r$r!rrs -, /r$rc\rSrSrSrSrSrg) TestAutojunk.z-Tests for the autojunk parameter added in 2.7cdSnSn[R"SX5nURUR5SSS9 UR UR S15 [R"SXSS9nURUR5S SS9 UR UR [ 55 g) Nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrr r r<F)autojunkgQ?)rrrrrrr)rseq1seq2r s r!#test_one_insert_homogenous_sequence0TestAutojunk.test_one_insert_homogenous_sequence0s  $ $T4 6 rxxz1Q7 se, $ $T4 F rxxz6!< ce,r$r3N)rBrCrDrE__doc__rPrFr3r$r!rHrH.s 7 -r$rHc8\rSrSrSrSrSrSrSrSr Sr g ) TestSFbugs@c[R"S//5nURUR5S5 URUR 5S5 URUR 5S5 g)Nr)rrrr quick_ratioreal_quick_ratio)rss r!test_ratio_for_null_seqn#TestSFbugs.test_ratio_for_null_seqnAs[  # #D"b 1 A& !, ++-q1r$c[R"S//5R5nUR[[ U5 [R "//5nUR[[ U5 gN)rrget_grouped_opcodes assertRaises StopIterationnext unified_diff)r group_gendiff_gens r!test_comparing_empty_lists%TestSFbugs.test_comparing_empty_listsHsU++D"b9MMO  -y9''B/ -x8r$c.[R"SSS5nUR5nUR5nURUSRS5 URUSRS5 URUSRS5 g)Nabxcdabcdrr)rrget_matching_blocksrsize)rrYfirstseconds r!test_matching_blocks_cache%TestSFbugs.test_matching_blocks_cacheOsz  # #D'6 :%%'&&( + + +r$c [[R"5RS/S/55nUR SUS5 UR SUS5 UR SUS5 UR S US 5 g) Nz I am a buggyz I am a bugz- I am a buggyrz? -- rz+ I am a bugrjz? + r rrDiffercomparerrdiffs r!test_added_tab_hintTestSFbugs.test_added_tab_hintXs{GNN$,,.>-?AQ@RST +T!W5 -tAw7 +T!W5 $q'*r$c[[R"5RS/S/55nUR SUS5 UR SUS5 UR SUS5 g) Nz ^z ^ z- ^rz + ^ rz ? + rjrrrus r!%test_hint_indented_properly_with_tabs0TestSFbugs.test_hint_indented_properly_with_tabs`saGNN$,,k]]OLM Q0 $q'2 )473r$c lUR[[R"S/S/S55S/5 g)N23r))rz-2)rz+3T)rrr_mdiff)rs r!test_mdiff_catch_stop_iteration*TestSFbugs.test_mdiff_catch_stop_iterationfs/  ua0 1 9 : r$r3N) rBrCrDrErZrerorwrzrrFr3r$r!rTrT@s 29,+4  r$rTz 1. Beautiful is beTTer than ugly. 2. Explicit is better than implicit. 3. Simple is better than complex. 4. Complex is better than complicated. z 1. Beautiful is better than ugly. 3. Simple is better than complex. 4. Complicated is better than complex. 5. Flat is better than nested. u 1. Beautiful is beTTer than ugly. 2. Explicit is better than ımplıcıt. 3. Simple is better than complex. 4. Complex is better than complicated. u 1. Beautiful is better than ügly. 3. Sımple is better than complex. 4. Complicated is better than cömplex. 5. Flat is better than nested. z Line 1: preceded by from:[tt] to:[ssss] Line 2: preceded by from:[sstt] to:[sssst] Line 3: preceded by from:[sstst] to:[ssssss] Line 4: has from:[sst] to:[sss] after : Line 5: has from:[t] to:[ss] at end z Line 1: preceded by from:[tt] to:[ssss] Line 2: preceded by from:[sstt] to:[sssst] Line 3: preceded by from:[sstst] to:[ssssss] Line 4: has from:[sst] to:[sss] after : Line 5: has from:[t] to:[ss] at end zline 0 1234567890123456789012345689012345 line 1 line 2 line 3 line 4 changed line 5 changed line 6 changed line 7 line 8 subtracted line 9 1234567890123456789012345689012345 short line just fits in!! just fits in two lines yup!! the endzline 0 1234567890123456789012345689012345 line 1 line 2 added line 3 line 4 chanGEd line 5a chanGed line 6a changEd line 7 line 8 line 9 1234567890 another long line that needs to be wrapped just fitS in!! just fits in two lineS yup!! the endc2\rSrSrSrSrSrSrSrSr g) TestSFpatchesc!8[S-S-n[S-S-nSU-nSU-nUR5nUR5nUR5nUR5n[R5n[R5n[ n[ n[R"5n [R"SS9n [R"SS9n U RXSS S S S 9n S RSU RXSS SS9SU RX4SS SS9SU RXSS SSS 9SU RXSS SSS 9SU RXSS SS9SU RXSS S S9SU R//SS SS9SU R//SS S S9SU RXV5SU RXV5SU RUR5UR5SSS 9SU RUR5UR55SU RURS5URS55/5n U RSS U -5n[[S!5S"S#9nURXR!55 SSS5 g!,(df  g=f)$Nz(123 123 123 123 123 123 123 123 123 123 r z(456 456 456 456 456 456 456 456 456 456 rj)tabsize) wrapcolumnfromtoF)contextnumlines z8

Context (first diff within numlines=5(default))

T)rz7

Context (first diff after numlines=5(default))

z

Context (numlines=6)

z

Context (numlines=0)

rz

Same Context

z

Same Full

z

Empty Context

z

Empty Full

z

tabsize=2

z

tabsize=default

z+

Context (wrapcolumn=14,numlines=0)

z#

wrapcolumn=14,splitlines()

z'

wrapcolumn=14,splitlines(True)

zz %s ztest_difflib_expect.htmlzutf-8)encoding)patch914575_from1patch914575_to1 splitlinespatch914575_from2patch914575_to2patch914575_from3patch914575_to3rHtmlDiff make_filejoin make_tablereplaceopenrrread)rf1at1af1bt1bf2t2f3t3ijkfulltablesactualfps r!test_html_diffTestSFpatches.test_html_diffsq!J.1+Q.33nnnnnnnn  ) ) +  ' ' )         Q '    +{{36$ua{H G \\#&d\ ; F \\#&d\ ; , \\#&dA\ F , \\#&dA\ F $ \\#&d\ ; ! \\#&e\ < % \\"RtD\ 9 " \\"RtE\ : ! \\" ' \\" : \\"--/"--/$PQ\ R 2 \\"--/"--/ : 6 \\"---bmmD.A B5 :i&(@A (56 IR   VWWY /J I Is " J  Jc`[R"5n[US-5Vs/sHo"S-=(a S=(d SU-PM nn[US-5Vs/sHo"S-=(a S=(d SU-PM nn[R"SX45R 5 gs snfs snf)NrjzK:%dzV:A:%dzV:B:%d)sysgetrecursionlimitrangerrr)rlimitroldnews r!test_recursion_limit"TestSFpatches.test_recursion_limits%%'9>uQwHA!*(a/H9>uQwHA!*(a/Hc/;;=IHs #B&#B+c[R"5nUR[R 5[ R 55nUR SU5 g)Nz"content="text/html; charset=utf-8"rrrrrrassertInr html_diffoutputs r!test_make_file_default_charset,TestSFpatches.test_make_file_default_charsetsH$$& $$%6%A%A%C%4%?%?%AC :FCr$c[R"5nUR[R 5[ R 5SS9nUR SU5 g)Nz iso-8859-1charsetz'content="text/html; charset=iso-8859-1"rrs r!test_make_file_iso88591_charset-TestSFpatches.test_make_file_iso88591_charsetsQ$$& $$%6%A%A%C%4%?%?%A-9%; ?Hr$c[R"5nUR[R 5[ R 5SS9nUR SU5 UR SU5 g)Nzus-asciirz%content="text/html; charset=us-ascii"zımplıcıt)rrrpatch914575_nonascii_from1rpatch914575_nonascii_to1rrs r!2test_make_file_usascii_charset_with_nonascii_input@TestSFpatches.test_make_file_usascii_charset_with_nonascii_input s`$$& $$%?%J%J%L%=%H%H%J-7%9 =vF /8r$r3N) rBrCrDrErrrrrrFr3r$r!rrs70r>D I9r$rc,\rSrSrSrSrSrSrSrg)TestOutputFormatic/SQn[R"USS06nUR[U5SSSS/5 [R"USS06nUR[U5SSSS /5 g) N)onetwoOriginalCurrentz2005-01-26 23:30:50z2010-04-02 10:20:52linetermrrjz --- Original 2005-01-26 23:30:50z+++ Current 2010-04-02 10:20:52z *** Original 2005-01-26 23:30:50z--- Current 2010-04-02 10:20:52rrbrr context_diffrargsudcds r!test_tab_delimiter#TestOutputFormat.test_tab_delimiters:  ! !4 5" 5 b!A>=)? @ ! !4 5" 5 b!A>=)? @r$c/SQn[R"USS06nUR[U5SSSS/5 [R"USS06nUR[U5SSSS /5 g) N)rrrrrrrrjz --- Originalz +++ Currentz *** Originalz --- Currentrrs r!&test_no_trailing_tab_on_empty_filedate7TestOutputFormat.test_no_trailing_tab_on_empty_filedate!so4  ! !4 5" 5 b!A(GH  ! !4 5" 5 b!A(GHr$c"Sn[RnURU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S 5 URU"S S 5S 5 g) Na Each field shall be of the form: %1d", if the range contains exactly one line, and: "%1d,%1d", , otherwise. If a range is empty, its beginning line number shall be the number of the line just before the range, or 0 if the empty range starts the file. r z3,04rz4,2rz4,3rz0,0)r_format_range_unifiedrrspecfmts r!test_range_format_unified*TestOutputFormat.test_range_format_unified)s ++ Qq5) Qq3' Qq5) Qq5) Qq5)r$c"Sn[RnURU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S 5 URU"S S 5S 5 g) Na The range of lines in file1 shall be written in the following format if the range contains two or more lines: "*** %d,%d **** ", , and the following format otherwise: "*** %d **** ", The ending line number of an empty range shall be the number of the preceding line, or 0 if the range is at the start of the file. Next, the range of lines in file2 shall be written in the following format if the range contains two or more lines: "--- %d,%d ---- ", , and the following format otherwise: "--- %d ---- ", r r~rrrz4,5rz4,6r0)r_format_range_contextrrs r!test_range_format_context*TestOutputFormat.test_range_format_context:s ++ Qq3' Qq3' Qq5) Qq5) Qq3'r$r3N) rBrCrDrErrrrrFr3r$r!rrs @I*"(r$rc>\rSrSrSrSrSrSrSrSr Sr S r g ) TestBytesiSc`[U5nUHnURU[SU-5 M g)Nz.all lines of diff should be bytes, but got: %r)rassertIsInstancebytes)rrvlines r!checkTestBytes.checkVs1DzD  ! !e@4G Ir$c TSS/nSS/n[Rn[RnURnU"[R"X1U55 U"[R"X1U55 U"[R"X1USS55 U"[R"X1USS55 U"[R"X1USSSS55 U"[R"X1USSSS55 U"[R"XAU55 U"[R"XAU55 U"[R"XAUSS55 U"[R"XAUSS55 U"[R"XAUSSSS55 U"[R"XAUSSSS55 g)Nhellosandrsandréabs2005s2013)rrbrr diff_bytes)rr;r<unifiedrrs r!test_byte_contentTestBytes.test_byte_content]sg { #  '&&&&  g  Q/0 g  Q/0 g  Qd;< g  Qd;< g  QdGWMN g  QdGWMN g  Q/0 g  Q/0 g  Qd;< g  Qd;< g  QdGWMN g  QdGWMNr$c ^SnSnS/nS/nTRn[Rn[RnU"[R"XcXAU55 U"[R"XsXAU55 U4Sjn/SQn [R"XcXAUSS9n U"X5 S n S n U"[R"XcXAX+U 55 U"[R"XsXAX+U 55 /S Qn [R"XcXAX+U SS9n U"X5 g) Nsodz.txts łodz.txtsodz is a city in Poland.sŁodz is a city in Poland.c>[U5nTR[U5[U55 [X5Hup#TRX#5 M gr])rrlenzip)expectrer;rs r! assertDiff1TestBytes.test_byte_filenames..assertDiffsE&\F   S[#f+ 6F+  &,r$)s --- odz.txts +++ łodz.txt @@ -1 +1 @@-odz is a city in Poland.+Łodz is a city in Poland.r$)rs 2005-03-18s 2005-03-19)s--- odz.txt 2005-03-18s+++ łodz.txt 2005-03-19rrr)rrrbrr) rfnafnbr;r<rrrrrrdateadatebs ` r!test_byte_filenamesTestBytes.test_byte_filenamesys - - 0 1 &&&& g  QS9: g  QS9: ' ##GcJ6" g  QSGH g  QSGH  ##GE-026"r$cS/nS/n[Rn[RnSnURXSX5 URXSX!5 URXTX5 URXTX!5 SnURU[RX1U5 URU[RX2U5 URU[RXAU5 URU[RXBU5 g)Nrhelloz2lines to compare must be str, not bytes (b'hello')z.all arguments must be bytes, not str ('hello'))rrbr_assert_type_errorr)rr;r<rrrs r!test_mixed_types_content"TestBytes.test_mixed_types_contents J I&&&&E 6 6 6 6A (:(:GJ (:(:GJ (:(:GJ (:(:GJr$c\S/nS/nSnSnURS[RXX45 g)Nzhello zohell sol.txts ola9.txtz-all arguments must be str, not: b'ol\xe9.txt')rrrb)rr;r<rr s r!test_mixed_types_filenames$TestBytes.test_mixed_types_filenamess:K K  <  ! 2r$c S/nS/nSnSnURS[R[RXSSX45 S/nS /n[ [R"XS S X455 g) Nsfoo sbar u1 févu3 févu/all arguments must be bytes, not str ('1 fév')rrzfoo zbar r;r<)rrrrbr)rr;r<r r s r!test_mixed_types_dates TestBytes.test_mixed_types_datessn J J  =    4 4 $e , I I W ! !!S% ?@r$cUR[5n[U"U65 SSS5 URU[ WR 55 g!,(df  N4=fr])r_ TypeErrorrrstr exception)rmsg generatorrctxs r!rTestBytes._assert_type_errorsF   y )S D! "* c#--01* )s A A!r3N) rBrCrDrErrr rrrrrFr3r$r!rrSs*IO83#jK( 2A 2r$rc2\rSrSrSrSrSrSrSrSr g) TestJunkAPIsictSH2nUR[R"U5[U55 M4 g)N)#z z #z# z # r) assertTruer IS_LINE_JUNKreprrrs r!test_is_line_junk_true#TestJunkAPIs.test_is_line_junk_trues)6D OOG006T C7r$ctSH2nUR[R"U5[U55 M4 g)N)##z ##z## zabc zabc #zMr. Moose is up!) assertFalserr&r'r(s r!test_is_line_junk_false$TestJunkAPIs.test_is_line_junk_falses,MD   W11$7d DNr$c^SS-S-nUR[R"U55 g)N i@Br,)r-rr&)r evil_inputs r!test_is_line_junk_REDOS$TestJunkAPIs.test_is_line_junk_REDOSs)Wn,  --j9:r$ctSH2nUR[R"U5[U55 M4 g)N)r2r1)r%rIS_CHARACTER_JUNKr'rchars r!test_is_character_junk_true(TestJunkAPIs.test_is_character_junk_trues)D OOG55d;T$Z H r$ctSH2nUR[R"U5[U55 M4 g)N)r;r$r   )r-rr6r'r7s r!test_is_character_junk_false)TestJunkAPIs.test_is_character_junk_falses+6D   W66t# UH oT;v M g7fr]r3).0b_partr;s r! 6TestFindLongest.longer_match_exists..sGE$*Q;Esrr)anyrr)rr;r<nrs ` r!longer_match_exists#TestFindLongest.longer_match_existssRG,1!SVaZ!^,DE,DqaA N,DEGG GEsA cSnSn[R"XS9nUR5nURURS5 URUR S5 URUR S5 URXRURUR -X$R UR UR -5 URURXUR 55 URSSS9nURURS 5 URUR S 5 URUR S5 URXRURUR -X$R UR UR -5 URURUSSUSSUR 55 URS S S 9nURURS 5 URUR S 5 URUR S5 URXRURUR -X$R UR UR -5 URURXS S UR 55 g)Nzfoo barz foo baz barr;r<rrrjr)aloblor rr)bhirP) rrfind_longest_matchrr;r<rlr-rKrr;r<r matchs r!test_default_args!TestFindLongest.test_default_argss6    $ $q .%%' !$ !$ Q' 77EGGejj$8977EGGejj$89 ; 11! CD%%!%3 !$ !$ Q' 77EGGejj$8977EGGejj$89 ; 11!AB%12 KL%%!%3 !$ !$ Q' 77EGGejj$8977EGGejj$89 ; 11!qVUZZHIr$c.SnSn[R"XS9nURS[U5S[U55nUR UR S5 UR UR S5 UR URS5 UR XR UR UR-X$R UR UR-5 URURXUR55 g)NdabcdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddabcddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddrNrcr) rrrSrrr;r<rlr-rKrTs r!%test_longest_match_with_popular_chars5TestFindLongest.test_longest_match_with_popular_charss  %  $ $q .%%aQCF; !$ "% Q' 77EGGejj$8977EGGejj$89 ; 11! CDr$r3N)rBrCrDrErKrVr\rFr3r$r!rBrBsGJ8 Er$rBc.S[Rlg)Nr)rr_default_prefixr3r$r! setUpModuler`&s'(G$r$cXUR[R"[55 U$r])addTestdoctest DocTestSuiter)loadertestspatterns r! load_testsrh*s MM'&&w/0 Lr$__main__)r test.supportrunittestrcrTestCaserrHrTrrrrrrrrrrrr"rBr`rhrBmainr3r$r!rns! #/H%%#/L-8$$-$+ ""+ \ " "U9H%%U9p<(x((<(~N2!!N2`J8$$J*+Eh''+E\)  z MMOr$