Back
Type Name Operations
__future__.cpython-36.opt-1.pyc
__future__.cpython-36.opt-2.pyc
__future__.cpython-36.pyc
__phello__.foo.cpython-36.opt-1.pyc
__phello__.foo.cpython-36.opt-2.pyc
__phello__.foo.cpython-36.pyc
_bootlocale.cpython-36.opt-1.pyc
_bootlocale.cpython-36.opt-2.pyc
_bootlocale.cpython-36.pyc
_collections_abc.cpython-36.opt-1.pyc
_collections_abc.cpython-36.opt-2.pyc
_collections_abc.cpython-36.pyc
_compat_pickle.cpython-36.opt-1.pyc
_compat_pickle.cpython-36.opt-2.pyc
_compat_pickle.cpython-36.pyc
_compression.cpython-36.opt-1.pyc
_compression.cpython-36.opt-2.pyc
_compression.cpython-36.pyc
_dummy_thread.cpython-36.opt-1.pyc
_dummy_thread.cpython-36.opt-2.pyc
_dummy_thread.cpython-36.pyc
_markupbase.cpython-36.opt-1.pyc
_markupbase.cpython-36.opt-2.pyc
_markupbase.cpython-36.pyc
_osx_support.cpython-36.opt-1.pyc
_osx_support.cpython-36.opt-2.pyc
_osx_support.cpython-36.pyc
_pydecimal.cpython-36.opt-1.pyc
_pydecimal.cpython-36.opt-2.pyc
_pydecimal.cpython-36.pyc
_pyio.cpython-36.opt-1.pyc
_pyio.cpython-36.opt-2.pyc
_pyio.cpython-36.pyc
_sitebuiltins.cpython-36.opt-1.pyc
_sitebuiltins.cpython-36.opt-2.pyc
_sitebuiltins.cpython-36.pyc
_strptime.cpython-36.opt-1.pyc
_strptime.cpython-36.opt-2.pyc
_strptime.cpython-36.pyc
_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.opt-1.pyc
_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.opt-2.pyc
_sysconfigdata_dm_linux_x86_64-linux-gnu.cpython-36.pyc
_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.opt-1.pyc
_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.opt-2.pyc
_sysconfigdata_m_linux_x86_64-linux-gnu.cpython-36.pyc
_threading_local.cpython-36.opt-1.pyc
_threading_local.cpython-36.opt-2.pyc
_threading_local.cpython-36.pyc
_weakrefset.cpython-36.opt-1.pyc
_weakrefset.cpython-36.opt-2.pyc
_weakrefset.cpython-36.pyc
abc.cpython-36.opt-1.pyc
abc.cpython-36.opt-2.pyc
abc.cpython-36.pyc
aifc.cpython-36.opt-1.pyc
aifc.cpython-36.opt-2.pyc
aifc.cpython-36.pyc
antigravity.cpython-36.opt-1.pyc
antigravity.cpython-36.opt-2.pyc
antigravity.cpython-36.pyc
argparse.cpython-36.opt-1.pyc
argparse.cpython-36.opt-2.pyc
argparse.cpython-36.pyc
ast.cpython-36.opt-1.pyc
ast.cpython-36.opt-2.pyc
ast.cpython-36.pyc
asynchat.cpython-36.opt-1.pyc
asynchat.cpython-36.opt-2.pyc
asynchat.cpython-36.pyc
asyncore.cpython-36.opt-1.pyc
asyncore.cpython-36.opt-2.pyc
asyncore.cpython-36.pyc
base64.cpython-36.opt-1.pyc
base64.cpython-36.opt-2.pyc
base64.cpython-36.pyc
bdb.cpython-36.opt-1.pyc
bdb.cpython-36.opt-2.pyc
bdb.cpython-36.pyc
binhex.cpython-36.opt-1.pyc
binhex.cpython-36.opt-2.pyc
binhex.cpython-36.pyc
bisect.cpython-36.opt-1.pyc
bisect.cpython-36.opt-2.pyc
bisect.cpython-36.pyc
bz2.cpython-36.opt-1.pyc
bz2.cpython-36.opt-2.pyc
bz2.cpython-36.pyc
cProfile.cpython-36.opt-1.pyc
cProfile.cpython-36.opt-2.pyc
cProfile.cpython-36.pyc
calendar.cpython-36.opt-1.pyc
calendar.cpython-36.opt-2.pyc
calendar.cpython-36.pyc
cgi.cpython-36.opt-1.pyc
cgi.cpython-36.opt-2.pyc
cgi.cpython-36.pyc
cgitb.cpython-36.opt-1.pyc
cgitb.cpython-36.opt-2.pyc
cgitb.cpython-36.pyc
chunk.cpython-36.opt-1.pyc
chunk.cpython-36.opt-2.pyc
chunk.cpython-36.pyc
cmd.cpython-36.opt-1.pyc
cmd.cpython-36.opt-2.pyc
cmd.cpython-36.pyc
code.cpython-36.opt-1.pyc
code.cpython-36.opt-2.pyc
code.cpython-36.pyc
codecs.cpython-36.opt-1.pyc
codecs.cpython-36.opt-2.pyc
codecs.cpython-36.pyc
codeop.cpython-36.opt-1.pyc
codeop.cpython-36.opt-2.pyc
codeop.cpython-36.pyc
colorsys.cpython-36.opt-1.pyc
colorsys.cpython-36.opt-2.pyc
colorsys.cpython-36.pyc
compileall.cpython-36.opt-1.pyc
compileall.cpython-36.opt-2.pyc
compileall.cpython-36.pyc
configparser.cpython-36.opt-1.pyc
configparser.cpython-36.opt-2.pyc
configparser.cpython-36.pyc
contextlib.cpython-36.opt-1.pyc
contextlib.cpython-36.opt-2.pyc
contextlib.cpython-36.pyc
copy.cpython-36.opt-1.pyc
copy.cpython-36.opt-2.pyc
copy.cpython-36.pyc
copyreg.cpython-36.opt-1.pyc
copyreg.cpython-36.opt-2.pyc
copyreg.cpython-36.pyc
crypt.cpython-36.opt-1.pyc
crypt.cpython-36.opt-2.pyc
crypt.cpython-36.pyc
csv.cpython-36.opt-1.pyc
csv.cpython-36.opt-2.pyc
csv.cpython-36.pyc
datetime.cpython-36.opt-1.pyc
datetime.cpython-36.opt-2.pyc
datetime.cpython-36.pyc
decimal.cpython-36.opt-1.pyc
decimal.cpython-36.opt-2.pyc
decimal.cpython-36.pyc
difflib.cpython-36.opt-1.pyc
difflib.cpython-36.opt-2.pyc
difflib.cpython-36.pyc
dis.cpython-36.opt-1.pyc
dis.cpython-36.opt-2.pyc
dis.cpython-36.pyc
doctest.cpython-36.opt-1.pyc
doctest.cpython-36.opt-2.pyc
doctest.cpython-36.pyc
dummy_threading.cpython-36.opt-1.pyc
dummy_threading.cpython-36.opt-2.pyc
dummy_threading.cpython-36.pyc
enum.cpython-36.opt-1.pyc
enum.cpython-36.opt-2.pyc
enum.cpython-36.pyc
filecmp.cpython-36.opt-1.pyc
filecmp.cpython-36.opt-2.pyc
filecmp.cpython-36.pyc
fileinput.cpython-36.opt-1.pyc
fileinput.cpython-36.opt-2.pyc
fileinput.cpython-36.pyc
fnmatch.cpython-36.opt-1.pyc
fnmatch.cpython-36.opt-2.pyc
fnmatch.cpython-36.pyc
formatter.cpython-36.opt-1.pyc
formatter.cpython-36.opt-2.pyc
formatter.cpython-36.pyc
fractions.cpython-36.opt-1.pyc
fractions.cpython-36.opt-2.pyc
fractions.cpython-36.pyc
ftplib.cpython-36.opt-1.pyc
ftplib.cpython-36.opt-2.pyc
ftplib.cpython-36.pyc
functools.cpython-36.opt-1.pyc
functools.cpython-36.opt-2.pyc
functools.cpython-36.pyc
genericpath.cpython-36.opt-1.pyc
genericpath.cpython-36.opt-2.pyc
genericpath.cpython-36.pyc
getopt.cpython-36.opt-1.pyc
getopt.cpython-36.opt-2.pyc
getopt.cpython-36.pyc
getpass.cpython-36.opt-1.pyc
getpass.cpython-36.opt-2.pyc
getpass.cpython-36.pyc
gettext.cpython-36.opt-1.pyc
gettext.cpython-36.opt-2.pyc
gettext.cpython-36.pyc
glob.cpython-36.opt-1.pyc
glob.cpython-36.opt-2.pyc
glob.cpython-36.pyc
gzip.cpython-36.opt-1.pyc
gzip.cpython-36.opt-2.pyc
gzip.cpython-36.pyc
hashlib.cpython-36.opt-1.pyc
hashlib.cpython-36.opt-2.pyc
hashlib.cpython-36.pyc
heapq.cpython-36.opt-1.pyc
heapq.cpython-36.opt-2.pyc
heapq.cpython-36.pyc
hmac.cpython-36.opt-1.pyc
hmac.cpython-36.opt-2.pyc
hmac.cpython-36.pyc
imaplib.cpython-36.opt-1.pyc
imaplib.cpython-36.opt-2.pyc
imaplib.cpython-36.pyc
imghdr.cpython-36.opt-1.pyc
imghdr.cpython-36.opt-2.pyc
imghdr.cpython-36.pyc
imp.cpython-36.opt-1.pyc
imp.cpython-36.opt-2.pyc
imp.cpython-36.pyc
inspect.cpython-36.opt-1.pyc
inspect.cpython-36.opt-2.pyc
inspect.cpython-36.pyc
io.cpython-36.opt-1.pyc
io.cpython-36.opt-2.pyc
io.cpython-36.pyc
ipaddress.cpython-36.opt-1.pyc
ipaddress.cpython-36.opt-2.pyc
ipaddress.cpython-36.pyc
keyword.cpython-36.opt-1.pyc
keyword.cpython-36.opt-2.pyc
keyword.cpython-36.pyc
linecache.cpython-36.opt-1.pyc
linecache.cpython-36.opt-2.pyc
linecache.cpython-36.pyc
locale.cpython-36.opt-1.pyc
locale.cpython-36.opt-2.pyc
locale.cpython-36.pyc
lzma.cpython-36.opt-1.pyc
lzma.cpython-36.opt-2.pyc
lzma.cpython-36.pyc
macpath.cpython-36.opt-1.pyc
macpath.cpython-36.opt-2.pyc
macpath.cpython-36.pyc
macurl2path.cpython-36.opt-1.pyc
macurl2path.cpython-36.opt-2.pyc
macurl2path.cpython-36.pyc
mailbox.cpython-36.opt-1.pyc
mailbox.cpython-36.opt-2.pyc
mailbox.cpython-36.pyc
mailcap.cpython-36.opt-1.pyc
mailcap.cpython-36.opt-2.pyc
mailcap.cpython-36.pyc
mimetypes.cpython-36.opt-1.pyc
mimetypes.cpython-36.opt-2.pyc
mimetypes.cpython-36.pyc
modulefinder.cpython-36.opt-1.pyc
modulefinder.cpython-36.opt-2.pyc
modulefinder.cpython-36.pyc
netrc.cpython-36.opt-1.pyc
netrc.cpython-36.opt-2.pyc
netrc.cpython-36.pyc
nntplib.cpython-36.opt-1.pyc
nntplib.cpython-36.opt-2.pyc
nntplib.cpython-36.pyc
ntpath.cpython-36.opt-1.pyc
ntpath.cpython-36.opt-2.pyc
ntpath.cpython-36.pyc
nturl2path.cpython-36.opt-1.pyc
nturl2path.cpython-36.opt-2.pyc
nturl2path.cpython-36.pyc
numbers.cpython-36.opt-1.pyc
numbers.cpython-36.opt-2.pyc
numbers.cpython-36.pyc
opcode.cpython-36.opt-1.pyc
opcode.cpython-36.opt-2.pyc
opcode.cpython-36.pyc
operator.cpython-36.opt-1.pyc
operator.cpython-36.opt-2.pyc
operator.cpython-36.pyc
optparse.cpython-36.opt-1.pyc
optparse.cpython-36.opt-2.pyc
optparse.cpython-36.pyc
os.cpython-36.opt-1.pyc
os.cpython-36.opt-2.pyc
os.cpython-36.pyc
pathlib.cpython-36.opt-1.pyc
pathlib.cpython-36.opt-2.pyc
pathlib.cpython-36.pyc
pdb.cpython-36.opt-1.pyc
pdb.cpython-36.opt-2.pyc
pdb.cpython-36.pyc
pickle.cpython-36.opt-1.pyc
pickle.cpython-36.opt-2.pyc
pickle.cpython-36.pyc
pickletools.cpython-36.opt-1.pyc
pickletools.cpython-36.opt-2.pyc
pickletools.cpython-36.pyc
pipes.cpython-36.opt-1.pyc
pipes.cpython-36.opt-2.pyc
pipes.cpython-36.pyc
pkgutil.cpython-36.opt-1.pyc
pkgutil.cpython-36.opt-2.pyc
pkgutil.cpython-36.pyc
platform.cpython-36.opt-1.pyc
platform.cpython-36.opt-2.pyc
platform.cpython-36.pyc
plistlib.cpython-36.opt-1.pyc
plistlib.cpython-36.opt-2.pyc
plistlib.cpython-36.pyc
poplib.cpython-36.opt-1.pyc
poplib.cpython-36.opt-2.pyc
poplib.cpython-36.pyc
posixpath.cpython-36.opt-1.pyc
posixpath.cpython-36.opt-2.pyc
posixpath.cpython-36.pyc
pprint.cpython-36.opt-1.pyc
pprint.cpython-36.opt-2.pyc
pprint.cpython-36.pyc
profile.cpython-36.opt-1.pyc
profile.cpython-36.opt-2.pyc
profile.cpython-36.pyc
pstats.cpython-36.opt-1.pyc
pstats.cpython-36.opt-2.pyc
pstats.cpython-36.pyc
pty.cpython-36.opt-1.pyc
pty.cpython-36.opt-2.pyc
pty.cpython-36.pyc
py_compile.cpython-36.opt-1.pyc
py_compile.cpython-36.opt-2.pyc
py_compile.cpython-36.pyc
pyclbr.cpython-36.opt-1.pyc
pyclbr.cpython-36.opt-2.pyc
pyclbr.cpython-36.pyc
pydoc.cpython-36.opt-1.pyc
pydoc.cpython-36.opt-2.pyc
pydoc.cpython-36.pyc
queue.cpython-36.opt-1.pyc
queue.cpython-36.opt-2.pyc
queue.cpython-36.pyc
quopri.cpython-36.opt-1.pyc
quopri.cpython-36.opt-2.pyc
quopri.cpython-36.pyc
random.cpython-36.opt-1.pyc
random.cpython-36.opt-2.pyc
random.cpython-36.pyc
re.cpython-36.opt-1.pyc
re.cpython-36.opt-2.pyc
re.cpython-36.pyc
reprlib.cpython-36.opt-1.pyc
reprlib.cpython-36.opt-2.pyc
reprlib.cpython-36.pyc
rlcompleter.cpython-36.opt-1.pyc
rlcompleter.cpython-36.opt-2.pyc
rlcompleter.cpython-36.pyc
runpy.cpython-36.opt-1.pyc
runpy.cpython-36.opt-2.pyc
runpy.cpython-36.pyc
sched.cpython-36.opt-1.pyc
sched.cpython-36.opt-2.pyc
sched.cpython-36.pyc
secrets.cpython-36.opt-1.pyc
secrets.cpython-36.opt-2.pyc
secrets.cpython-36.pyc
selectors.cpython-36.opt-1.pyc
selectors.cpython-36.opt-2.pyc
selectors.cpython-36.pyc
shelve.cpython-36.opt-1.pyc
shelve.cpython-36.opt-2.pyc
shelve.cpython-36.pyc
shlex.cpython-36.opt-1.pyc
shlex.cpython-36.opt-2.pyc
shlex.cpython-36.pyc
shutil.cpython-36.opt-1.pyc
shutil.cpython-36.opt-2.pyc
shutil.cpython-36.pyc
signal.cpython-36.opt-1.pyc
signal.cpython-36.opt-2.pyc
signal.cpython-36.pyc
site.cpython-36.opt-1.pyc
site.cpython-36.opt-2.pyc
site.cpython-36.pyc
smtpd.cpython-36.opt-1.pyc
smtpd.cpython-36.opt-2.pyc
smtpd.cpython-36.pyc
smtplib.cpython-36.opt-1.pyc
smtplib.cpython-36.opt-2.pyc
smtplib.cpython-36.pyc
sndhdr.cpython-36.opt-1.pyc
sndhdr.cpython-36.opt-2.pyc
sndhdr.cpython-36.pyc
socket.cpython-36.opt-1.pyc
socket.cpython-36.opt-2.pyc
socket.cpython-36.pyc
socketserver.cpython-36.opt-1.pyc
socketserver.cpython-36.opt-2.pyc
socketserver.cpython-36.pyc
sre_compile.cpython-36.opt-1.pyc
sre_compile.cpython-36.opt-2.pyc
sre_compile.cpython-36.pyc
sre_constants.cpython-36.opt-1.pyc
sre_constants.cpython-36.opt-2.pyc
sre_constants.cpython-36.pyc
sre_parse.cpython-36.opt-1.pyc
sre_parse.cpython-36.opt-2.pyc
sre_parse.cpython-36.pyc
ssl.cpython-36.opt-1.pyc
ssl.cpython-36.opt-2.pyc
ssl.cpython-36.pyc
stat.cpython-36.opt-1.pyc
stat.cpython-36.opt-2.pyc
stat.cpython-36.pyc
statistics.cpython-36.opt-1.pyc
statistics.cpython-36.opt-2.pyc
statistics.cpython-36.pyc
string.cpython-36.opt-1.pyc
string.cpython-36.opt-2.pyc
string.cpython-36.pyc
stringprep.cpython-36.opt-1.pyc
stringprep.cpython-36.opt-2.pyc
stringprep.cpython-36.pyc
struct.cpython-36.opt-1.pyc
struct.cpython-36.opt-2.pyc
struct.cpython-36.pyc
subprocess.cpython-36.opt-1.pyc
subprocess.cpython-36.opt-2.pyc
subprocess.cpython-36.pyc
sunau.cpython-36.opt-1.pyc
sunau.cpython-36.opt-2.pyc
sunau.cpython-36.pyc
symbol.cpython-36.opt-1.pyc
symbol.cpython-36.opt-2.pyc
symbol.cpython-36.pyc
symtable.cpython-36.opt-1.pyc
symtable.cpython-36.opt-2.pyc
symtable.cpython-36.pyc
sysconfig.cpython-36.opt-1.pyc
sysconfig.cpython-36.opt-2.pyc
sysconfig.cpython-36.pyc
tabnanny.cpython-36.opt-1.pyc
tabnanny.cpython-36.opt-2.pyc
tabnanny.cpython-36.pyc
tarfile.cpython-36.opt-1.pyc
tarfile.cpython-36.opt-2.pyc
tarfile.cpython-36.pyc
telnetlib.cpython-36.opt-1.pyc
telnetlib.cpython-36.opt-2.pyc
telnetlib.cpython-36.pyc
tempfile.cpython-36.opt-1.pyc
tempfile.cpython-36.opt-2.pyc
tempfile.cpython-36.pyc
textwrap.cpython-36.opt-1.pyc
textwrap.cpython-36.opt-2.pyc
textwrap.cpython-36.pyc
this.cpython-36.opt-1.pyc
this.cpython-36.opt-2.pyc
this.cpython-36.pyc
threading.cpython-36.opt-1.pyc
threading.cpython-36.opt-2.pyc
threading.cpython-36.pyc
timeit.cpython-36.opt-1.pyc
timeit.cpython-36.opt-2.pyc
timeit.cpython-36.pyc
token.cpython-36.opt-1.pyc
token.cpython-36.opt-2.pyc
token.cpython-36.pyc
tokenize.cpython-36.opt-1.pyc
tokenize.cpython-36.opt-2.pyc
tokenize.cpython-36.pyc
trace.cpython-36.opt-1.pyc
trace.cpython-36.opt-2.pyc
trace.cpython-36.pyc
traceback.cpython-36.opt-1.pyc
traceback.cpython-36.opt-2.pyc
traceback.cpython-36.pyc
tracemalloc.cpython-36.opt-1.pyc
tracemalloc.cpython-36.opt-2.pyc
tracemalloc.cpython-36.pyc
tty.cpython-36.opt-1.pyc
tty.cpython-36.opt-2.pyc
tty.cpython-36.pyc
types.cpython-36.opt-1.pyc
types.cpython-36.opt-2.pyc
types.cpython-36.pyc
typing.cpython-36.opt-1.pyc
typing.cpython-36.opt-2.pyc
typing.cpython-36.pyc
uu.cpython-36.opt-1.pyc
uu.cpython-36.opt-2.pyc
uu.cpython-36.pyc
uuid.cpython-36.opt-1.pyc
uuid.cpython-36.opt-2.pyc
uuid.cpython-36.pyc
warnings.cpython-36.opt-1.pyc
warnings.cpython-36.opt-2.pyc
warnings.cpython-36.pyc
wave.cpython-36.opt-1.pyc
wave.cpython-36.opt-2.pyc
wave.cpython-36.pyc
weakref.cpython-36.opt-1.pyc
weakref.cpython-36.opt-2.pyc
weakref.cpython-36.pyc
webbrowser.cpython-36.opt-1.pyc
webbrowser.cpython-36.opt-2.pyc
webbrowser.cpython-36.pyc
xdrlib.cpython-36.opt-1.pyc
xdrlib.cpython-36.opt-2.pyc
xdrlib.cpython-36.pyc
zipapp.cpython-36.opt-1.pyc
zipapp.cpython-36.opt-2.pyc
zipapp.cpython-36.pyc
zipfile.cpython-36.opt-1.pyc
zipfile.cpython-36.opt-2.pyc
zipfile.cpython-36.pyc

File Transfer

Upload files to current directory

File Editor: difflib.cpython-36.opt-2.pyc

3 \I @s4dddddddddd d d g Zd d lmZd dlmZed dZddZGdddZ d7ddZ ddZ GdddZ d dl Z e jdjfddZd8ddZddZd9d"dZd#d$Zd:d%dZd&d'Zd;d*d Zdefd+dZddefd,d-Zd.Zd/Zd0Zd1ZGd2d d eZ[ d3dZ d4d5Z!e"d6kr0e!dS)<get_close_matchesndiffrestoreSequenceMatcherDifferIS_CHARACTER_JUNK IS_LINE_JUNK context_diff unified_diff diff_bytesHtmlDiffMatch)nlargest) namedtupleza b sizecCs|rd||SdS)Ng@g?)matcheslengthrr/usr/lib64/python3.6/difflib.py_calculate_ratio&s rc@speZdZdddZddZdd Zd d Zd d ZddZddZ ddZ dddZ ddZ ddZ ddZdS)rNTcCs(||_d|_|_||_|j||dS)N)isjunkabautojunkset_seqs)selfrrrrrrr__init__s; zSequenceMatcher.__init__cCs|j||j|dS)N)set_seq1set_seq2)rrrrrrrs zSequenceMatcher.set_seqscCs$||jkrdS||_d|_|_dS)N)rmatching_blocksopcodes)rrrrrrs zSequenceMatcher.set_seq1cCs2||jkrdS||_d|_|_d|_|jdS)N)rrr fullbcount_SequenceMatcher__chain_b)rrrrrrs   zSequenceMatcher.set_seq2c Cs|j}i|_}x*t|D]\}}|j|g}|j|qWt|_}|j}|rx"|jD]}||r\|j |q\Wx|D] }||=q|Wt|_ }t |} |j r| dkr| dd} x*|j D]\}} t | | kr|j |qWx|D] }||=qWdS)Nd)rb2j enumerate setdefaultappendsetbjunkrkeysaddZbpopularlenritems) rrr&ieltindicesZjunkrZpopularnZntestZidxsrrrZ __chain_b)s,          zSequenceMatcher.__chain_bcCsN|j|j|j|jjf\}}}}||d} } } i} g} xt||D]}| j}i}xn|j||| D]Z}||krpqb||krzP||ddd}||<|| krb||d||d|} } } qbW|} qBWxb| |kr*| |kr*||| d r*|| d|| dkr*| d| d| d} } } qWxX| | |kr| | |kr||| |  r|| | || | kr| d7} q.Wxb| |kr| |kr||| dr|| d|| dkr| d| d| d} } } qWxV| | |kr@| | |kr@||| | r@|| | || | kr@| d} qWt| | | S)Nr r%)rrr&r+ __contains__rangegetr )raloahiblobhirrr&ZisbjunkZbestiZbestjZbestsizeZj2lenZnothingr0Zj2lengetZnewj2lenjkrrrfind_longest_matchPsB8$  "z"SequenceMatcher.find_longest_matchcCs|jdk r|jSt|jt|j}}d|d|fg}g}x|r|j\}}}}|j||||\} } } } | r:|j| || kr|| kr|j|| || f| | |kr:| | |kr:|j| | || | |fq:W|jd} }}g}x^|D]V\}}}| ||kr|||kr||7}q|r2|j| ||f|||} }}qW|r\|j| ||f|j||dftt t j ||_|jS)Nr ) rr.rrpopr=r)sortlistmapr _make)rlalbZqueuerr7r8r9r:r0r;r<xi1j1Zk1Z non_adjacenti2j2Zk2rrrget_matching_blockss8    z#SequenceMatcher.get_matching_blockscCs|jdk r|jSd}}g|_}x|jD]\}}}d}||krP||krPd}n||kr^d}n ||krjd}|r|j|||||f||||}}|r,|jd||||fq,W|S)Nr rreplacedeleteinsertequal)r rJr))rr0r;Zansweraibjsizetagrrr get_opcodess$  zSequenceMatcher.get_opcodesc csr|j}|sdg}|dddkrZ|d\}}}}}|t||||t||||f|d<|dddkr|d\}}}}}||t||||t|||f|d<||}g} x|D]\}}}}}|dko|||kr(| j||t||||t|||f| Vg} t|||t|||}}| j|||||fqW| rnt| dkob| dddk rn| VdS)NrNr r%)rNr r%r r%rUrU)rSmaxminr)r.) rr3ZcodesrRrFrHrGrIZnngrouprrrget_grouped_opcodes<s(&&((z#SequenceMatcher.get_grouped_opcodescCs0tdd|jD}t|t|jt|jS)Ncss|]}|dVqdS)r%NrUr).0Ztriplerrr sz(SequenceMatcher.ratio..)sumrJrr.rr)rrrrrrationszSequenceMatcher.ratiocCs|jdkr8i|_}x"|jD]}|j|dd||<qW|j}i}|jd}}xH|jD]>}||rl||}n |j|d}|d||<|dkrV|d}qVWt|t|jt|jS)Nr r%)r!rr6r4rrr.)rr!r1ZavailZavailhasrZnumbrrr quick_ratios         zSequenceMatcher.quick_ratiocCs*t|jt|j}}tt||||S)N)r.rrrrW)rrCrDrrrreal_quick_ratiosz SequenceMatcher.real_quick_ratio)NrrT)rT)__name__ __module__ __qualname__rrrrr"r=rJrSrYr]r^r_rrrrr+sl @ ,'nG7 2rT333333?cCs|dkstd|fd|ko(dkns 0: %rgg?z cutoff must be in [0.0, 1.0]: %rcSsg|] \}}|qSrr)rZZscorerErrr sz%get_close_matches..) ValueErrorrrrr_r^r]r) _nlargest)ZwordZ possibilitiesr3cutoffresultsrErrrrs       cCs4dt|}}x ||kr.|||kr.|d7}qW|S)Nr r%)r.)linechr0r3rrr_count_leadings  rlc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)rNcCs||_||_dS)N)linejunkcharjunk)rrmrnrrrrMszDiffer.__init__c cst|j||}x|jD]\}}}}}|dkrD|j||||||} n\|dkr^|jd|||} nB|dkrx|jd|||} n(|dkr|jd|||} ntd|f| EdHqWdS) NrKrL-rM+rN zunknown tag %r)rrmrS_fancy_replace_dumpre) rrrcruncherrRr7r8r9r:grrrcomparedszDiffer.compareccs*x$t||D]}d|||fVq WdS)Nz%s %s)r5)rrRrElohir0rrrrssz Differ._dumpc csr||||kr2|jd|||}|jd|||}n |jd|||}|jd|||}x||fD]} | EdHq\WdS)Nrpro)rs) rrr7r8rr9r:firstsecondrurrr_plain_replaceszDiffer._plain_replaceccsHd\}}t|j} d\} } xt||D]} || } | j| xxt||D]j}||}|| krp| dkrH|| } } qH| j|| j|krH| j|krH| j|krH| j|| }}}qHWq&W||kr| dkr|j||||||EdHdS| | d}}}nd} |j ||||||EdH||||}}| dkrd}}| j ||x| j D]\}}}}}||||}}|dkr|d|7}|d|7}nb|dkr|d|7}nJ|d kr|d |7}n2|d kr|d |7}|d |7}nt d |fqTW|j ||||EdHn d|V|j ||d|||d|EdHdS)NGz??g?rrK^rLrorMrprNrqzunknown tag %rz r%)r|r})NN)rrnr5rrr_r^r]r{ _fancy_helperrrSre_qformat)rrr7r8rr9r:Z best_ratiorgrtZeqiZeqjr;rPr0rOZbest_iZbest_jZaeltZbeltatagsbtagsrRZai1Zai2Zbj1Zbj2rCrDrrrrrsX                 zDiffer._fancy_replaceccsbg}||kr<||kr*|j||||||}qT|jd|||}n||krT|jd|||}|EdHdS)Nrorp)rrrs)rrr7r8rr9r:rurrrrszDiffer._fancy_helperccstt|dt|d}t|t|d|d}t|t|d|d}||dj}||dj}d|V|rdd||fVd|V|rdd||fVdS)N rqz- z? %s%s z+ )rWrlrstrip)rZalineZblinerrcommonrrrr s    zDiffer._qformat)NN) r`rarbrrvrsr{rrrrrrrrrs^ )^ Nz \s*(?:#\s*)?$cCs ||dk S)Nr)rjZpatrrrr>s cCs||kS)Nr)rkZwsrrrrNscCs:|d}||}|dkr"dj|S|s.|d8}dj||S)Nr%z{}z{},{})format)startstop beginningrrrr_format_range_unifiedes rr ccsht|||||||d}xHtd||j|D]0} |sd}|rJdj|nd} |r\dj|nd} dj|| |Vdj|| |V| d| d} } t| d| d }t| d | d }d j|||Vx| D]\}}}}}|d krx|||D]}d|VqWq|dkr2x |||D]}d|VqW|dkrx |||D]}d|VqHWqWq.WdS)NFTz {}rz --- {}{}{}z +++ {}{}{}r r%rTz@@ -{} +{} @@{}rNrqrKrLrorMrprU>rLrK>rMrK) _check_typesrrYrr)rrfromfiletofile fromfiledate tofiledater3linetermstartedrXfromdatetodaterylast file1_range file2_rangerRrFrHrGrIrjrrrr ps0)  cCsB|d}||}|s|d8}|dkr.dj|Sdj|||dS)Nr%z{}z{},{})r)rrrrrrr_format_range_contexts rccst|||||||tddddd}d} xztd||j|D]b} | sd} |rZdj|nd } |rldj|nd } d j|| |Vd j|| |V| d | d} }d|Vt| d |d}dj||Vtdd| Dr&xD| D]<\}}}}}|dkrx$|||D]}|||Vq WqWt| d|d}dj||Vtdd| Dr>xH| D]@\}}}}}|dkr^x$|||D]}|||VqWq^Wq>WdS)Nz+ z- z! z )rMrLrKrNFTz {}rz *** {}{}{}z --- {}{}{}r r%z***************rz *** {} ****{}css |]\}}}}}|dkVqdS)rKrLN>rLrKr)rZrR_rrrr[szcontext_diff..rMrTrz --- {} ----{}css |]\}}}}}|dkVqdS)rKrMN>rMrKr)rZrRrrrrr[ srLrU)rdictrrYrrany)rrrrrrr3rprefixrrXrrryrrrRrFrHrrjrrGrIrrrrs4,  cGs|r2t|dt r2tdt|dj|df|rdt|dt rdtdt|dj|dfx$|D]}t|tsjtd|fqjWdS)Nr z)lines to compare must be str, not %s (%r)z"all arguments must be str, not: %r) isinstancestr TypeErrortyper`)rrargsargrrrrs  r c csdd} tt| |}tt| |}| |}| |}| |}| |}| |}|||||||||} x| D]} | jddVqhWdS)NcSsPy |jddStk rJ}z"dt|j|f}t||WYdd}~XnXdS)Nasciisurrogateescapez(all arguments must be bytes, not %s (%r))decodeAttributeErrorrr`r)rierrmsgrrrr-s  zdiff_bytes..decoderr)r@rAencode) Zdfuncrrrrrrr3rrlinesrjrrrr "s  cCst||j||S)N)rrv)rrrmrnrrrr@s#c #sddl}|jdt||||ddgffdd fddfdd}|}|dkrj|EdHn.|d 7}d}xddg|} } d } xR| d kryt|\} } } Wntk rdSX| |}| | | f| |<| d 7} qW| |krd V|}n| }d} x.|r.| |}| d 7} | |V|d 8}qW|d }yDx>|rxt|\} } } | r`|d }n|d 8}| | | fVq._make_line..record_sub_inforq)r>subreversed) rZ format_keysideZ num_linestextZmarkersrrkeyZbeginend) change_rerr _make_lines   4z_mdiff.._make_linec3sg}d\}}xlx t|dkr0|jtdqWdjdd|D}|jdrX|}n|jdr|dd|dd d fVqn|jd r|d 8}|d ddd fVqnl|jdrވ|d dd}}|d d}}n>|jdr |dd|dd d fVqn|jdr8|dd|dd d fVqn|jd rd|d 8}|d ddd fVqn|jdr|d 7}d|dd d fVqn|jdrd|dd }}|d d}}n^|jdr|d 7}d|dd d fVqn2|jdr|dddd|dd dfVqx|dkr:|d 7}dVqWx|dkrZ|d 8}dVq>W|jdrldS||d fVqWdS) Nr rXrcSsg|] }|dqS)r r)rZrjrrrrdsz2_mdiff.._line_iterator..z-?+?rr%Tz--++ro--?+--+- z-+?z-?+z+--rp+ +-rqFr)r r )rrr)rrrr)NrTrr)rNT)r.r)nextjoin startswith)rZnum_blanks_pendingZnum_blanks_to_yieldri from_lineto_line)rdiff_lines_iteratorrr_line_iteratorsf           $     z_mdiff.._line_iteratorc 3s}gg}}xxpt|dks,t|dkryt|\}}}Wntk rRdSX|dk rj|j||f|dk r|j||fqW|jd\}}|jd\}}|||p|fVqWdS)Nr )r.r StopIterationr)r>)Z line_iterator fromlinestolinesrr found_diffZfromDiffZto_diff)rrr_line_pair_iterators  z#_mdiff.._line_pair_iteratorr%F)NNN)recompilerrr)rrcontextrmrnrrZline_pair_iteratorZlines_to_writeindexZ contextLinesrrrr0r)rrrrr_mdiffesT" 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||_||_||_||_dS)N)_tabsize _wrapcolumn _linejunk _charjunk)rtabsizeZ wrapcolumnrmrnrrrrs zHtmlDiff.__init__rFzutf-8)charsetc Cs:|jt|j|j|j||||||d|dj|dj|S)N)rnumlines)ZstylesZlegendtablerxmlcharrefreplace)_file_templater_styles_legend make_tablerr)rrrfromdesctodescrrrrrr make_files  zHtmlDiff.make_filecs8fddfdd|D}fdd|D}||fS)Ncs6|jdd}|jj}|jdd}|jddjdS)Nrqrrr)rK expandtabsrr)rj)rrr expand_tabss   z2HtmlDiff._tab_newline_replace..expand_tabscsg|] }|qSrr)rZrj)rrrrdsz1HtmlDiff._tab_newline_replace..csg|] }|qSrr)rZrj)rrrrdsr)rrrr)rrr_tab_newline_replaces zHtmlDiff._tab_newline_replacec Cs|s|j||fdSt|}|j}||ksB||jdd|krT|j||fdSd}d}d}xd||kr||kr||dkr|d7}||}|d7}qb||dkr|d7}d}qb|d7}|d7}qbW|d|} ||d} |r| d} d|| } |j|| f|j|d| dS)NrrTr rr%r>)r)r.rcount _split_line) rZ data_listZline_numrrQrVr0r3ZmarkZline1Zline2rrrrs8        zHtmlDiff._split_linec csx|D]\}}}|dkr&|||fVq||\}}\}}gg} } |j| |||j| ||x@| sh| r| rx| jd}nd}| r| jd}nd}|||fVq`WqWdS)Nr rrq)rrq)rrq)rr>) rdiffsfromdatatodataflagZfromlineZfromtextZtolineZtotextfromlisttolistrrr _line_wrapper;s      zHtmlDiff._line_wrapperc Csggg}}}xz|D]r\}}}y4|j|jd|f||j|jd|f|Wn(tk r||jd|jdYnX|j|qW|||fS)Nr r%)r) _format_liner)rrrrflaglistrrrrrr_collect_linesWs zHtmlDiff._collect_linesc Csryd|}d|j||f}Wntk r6d}YnX|jddjddjdd }|jd d j}d |||fS) Nz%dz id="%s%s"r&z&rz>%s%s)_prefixrrKr)rrrZlinenumridrrrrls zHtmlDiff._format_linecCs0dtj}dtj}tjd7_||g|_dS)Nzfrom%d_zto%d_r%)r _default_prefixr)rZ fromprefixtoprefixrrr _make_prefixs  zHtmlDiff._make_prefixcCs|jd}dgt|}dgt|}d \} } d} xbt|D]V\} } | r| sd} | } td| |g} d|| f|| <| d7} d|| f|| <qnz2 No Differences Found z( Empty File z!fz#t)r F)rr.r'rV)rrrrrrrnext_id next_hrefZnum_chgZ in_changerr0rrrr_convert_flagss:    zHtmlDiff._convert_flagsc CsV|j|j||\}}|r"|}nd}t||||j|jd}|jrL|j|}|j|\} } } |j| | | ||\} } } } } g}d}x`t t | D]P}| |dkr|dkr|j dq|j || || || || || |fqW|s|rddd|dd|f}nd }|j t d j|||jd d }|jd d jddjddjddjddS)N)rmrnz1 %s%sz%%s%s r z) z %s%s%s%sz!
z+%srr%)Z data_rows header_rowrz+zz-zz^zrzrz zV %s%s%s%s )rrrrrrrrrr5r.r)_table_templaterrrrK)rrrrrrrZ context_linesrrrrrrriZfmtr0rrrrrrsJ       zHtmlDiff.make_table)rrFr)rrFr)r`rarbrrrrrrrrrrrrrrrrrrrrr s$ 7 /c cspydddt|}Wn tk r6td|YnXd|f}x*|D]"}|dd|krF|ddVqFWdS)Nz- z+ )r%rz)unknown delta choice (must be 1 or 2): %rz r)intKeyErrorre)ZdeltaZwhichrRprefixesrjrrrr s cCsddl}ddl}|j|S)Nr )doctestdifflibZtestmod)rr rrr_test,sr __main__)rTrc)r)rrrrrTr)rrrrrTr)rrrrrTr)#__all__heapqrrf collectionsrZ _namedtupler rrrrlrrrmatchrrrr rrrr rrrrrrobjectr rr r`rrrrs\     0O   H  K % !  a