-=[ Mr. Bumblebee ]=-
_Indonesia_

Path : /usr/lib/python2.7/dist-packages/bzrlib/
File Upload :
Current File : //usr/lib/python2.7/dist-packages/bzrlib/diff.pyc


Pc
@@sddlmZddlZddlZddlZddlZddlZddlmZee	dddl
mZddlm
Z
mZmZdZdejfd	YZd
ejfdYZedded
ZedZdZedZddedZdddddddded	ZdZdZde fdYZ!de fdYZ"de!fdYZ#de!fdYZ$de!fd YZ%d!e!fd"YZ&d#e fd$YZ'eZ(e(j)d%e'dS(&i(tabsolute_importN(tlazy_imports
import errno
import subprocess
import tempfile

from bzrlib import (
    cleanup,
    cmdline,
    controldir,
    errors,
    osutils,
    patiencediff,
    textfile,
    timestamp,
    views,
    )

from bzrlib.workingtree import WorkingTree
from bzrlib.i18n import gettext
(tRegistry(tmuttertnotetwarningit
AtTemplatecB@seZdZdZRS(s*Templating class that uses @ instead of $.t@(t__name__t
__module__t__doc__t	delimiter(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyR6st_PrematchedMatchercB@seZdZdZRS(s<Allow SequenceMatcher operations to use predetermined blockscC@s)tj|dd||_d|_dS(N(tdifflibtSequenceMatchertNonetmatching_blockstopcodes(tselfR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt__init__Ds	(RR	R
R(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRAstutf8c	C@sK|r|rdS|tkr;tj|tj|n|dkrStj}ntj||d|j|dd|j|dd|d|}	t|	}	t	|	dkrdS|s|	dj
dd	|	d<n#|s|	dj
d
d|	d<nx:|	D]2}
|j|
|
jds|jd
qqW|jddS(Ntfromfiletreplacettofiletntsequencematcheriis-1,0s-0,0s+1,0s+0,0s
s
\ No newline at end of file
(
tFalsettextfiletcheck_text_linesRtpatiencedifftPatienceSequenceMatchertunified_difftencodetlisttlenRtwritetendswith(told_filenametoldlinestnew_filenametnewlinestto_filetallow_binarytsequence_matchert
path_encodingt
context_linestudtline((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt
internal_diffJs.


c
C@s|rai}tjjd}|d
k	r7||d<nd|d<d|d<d|d<tj}nd
}d
}y1tj|dtjdtjd|d	|}Wn@tk
r}|jtj	krt
jt|nnX|S(sASpawn the externall diff process, and return the child handle.

    :param diffcmd: The command list to spawn
    :param capture_errors: Capture stderr as well as setting LANG=C
        and LC_ALL=C. This lets us read and understand the output of diff,
        and respond to any errors.
    :return: A Popen object.
    tPATHtCtLANGUAGEtLANGtLC_ALLtstdintstdouttstderrtenvN(
tostenvirontgetRt
subprocesstPIPEtPopentOSErrorterrnotENOENTterrorstNoDifftstr(tdiffcmdtcapture_errorsR9tpathR8tpipete((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_spawn_external_diffys,	



		
cC@s|jtjdd\}}tjdd\}}	tj|d}
tj|d}zq|
j||j||
j|j|sg}ntjdkr|j	d}|j	d}ndd||d||	d	g}xpd
ddd
dddddddddddgD].}
x$|D]}|j
|
r-Pq-q-Wq Pq W|jd|ru|j|nt
|dt}|j\}}|j}|d7}|dkru|}t
|dt}|j\}}|j|d|jdkrtjd|fn|jddd}tjd|tj}|d!krntjd |fqud!Sn|j||d&kr|dkrd"|}n
d#|}tjd$||fnWd!|
j|jytj|Wn;tk
r4}|jtjfkr5td%||q5nXytj|	Wn9tk
r|jtjfkrtd%|	|qnXXd!S('s;Display a diff by calling out to the external diff program.tprefixs
bzr-diff-old-s
bzr-diff-new-twbtwin32tmbcstdiffs--labels--binarys-cs-us-Cs-Us-es--eds-qs--briefs--normals-ns--rcss-ys--side-by-sides-Ds--ifdefRGs
isfexternal diff failed with exit code 2 when run with LANG=C and LC_ALL=C, but not when run natively: %riis^(binary )?files.*differ$s2external diff failed with exit code 2; command: %rNs	signal %dsexit code %ds)external diff failed with %s; command: %rs&Failed to delete temporary file: %s %s(ii(tflushttempfiletmkstempR:tfdopent
writelinestclosetsystplatformR t
startswithtappendtextendRKtTruetcommunicatet
returncodeRR#RCtBzrErrortsplittretmatchtIRtremoveR@RARBR(R%R&R'R(R)t	diff_optst	oldtmp_fdtold_abspatht	newtmp_fdtnew_abspathtoldtmpftnewtmpfRFtstjRItoutterrtrct
lang_c_outt
first_linetmtmsgRJ((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt
external_diffs




		

	
	

	


c@skd	}d	}|d	k	rt|dkrR|d}|d	krR|j}qRnt|dkr|d}|d	kr|j}qqng}t}	t}
|d	kst|dkrd}t}
n;|d	k	r|d	k	r|}t}	n|d}|d}fd}g}
|d	kr3|}ntjj|\}}}||||
r|dkr|d	k	r|rtj	||n|
j
|nt|||}|}|d	kr|}n||krMtjj|\}}}||||
rM|dkrM|d	k	r:|r:tj	||n|
j
|qMnt|||d|d	k}|}|	r|d	k	r|j|d|}n|
j
|t|
dkr%d	}
|d	k	r%|jr%|r%|jj}|r"|}
tj|}ttd|q"q%nd	}|d	k	rU|||fkrU|f}n|||||
|fS(
s4Get the trees and specific files to diff given a list of paths.

    This method works out the trees to be diff'ed and the files of
    interest within those trees.

    :param path_list:
        the list of arguments passed to the diff command
    :param revision_specs:
        Zero, one or two RevisionSpecs from the diff command line,
        saying what revisions to compare.
    :param old_url:
        The url of the old branch or tree. If None, the tree to use is
        taken from the first path, if any, or the current working tree.
    :param new_url:
        The url of the new branch or tree. If None, the tree to use is
        taken from the first path, if any, or the current working tree.
    :param add_cleanup:
        a callable like Command.add_cleanup.  get_trees_and_branches_to_diff
        will register cleanups that must be run to unlock the trees, etc.
    :param apply_view:
        if True and a view is set, apply the view or check that the paths
        are within it
    :returns:
        a tuple of (old_tree, new_tree, old_branch, new_branch,
        specific_files, extra_trees) where extra_trees is a sequence of
        additional trees to search in for file-ids.  The trees and branches
        will be read-locked until the cleanups registered via the add_cleanup
        param are run.
    iiu.c@sP|dk	r&|j|jn&|dk	rL|j|jndS(N(Rt	lock_readtunlock(twttbr(tadd_cleanup(s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytlock_tree_or_branch]s

ttbasis_is_defaultt
apply_views+*** Ignoring files outside view. View is %sN(RR"t
get_branchR\Rt
controldirt
ControlDirtopen_containing_tree_or_branchtviewstcheck_path_in_viewRZt_get_tree_to_difftsafe_relpath_filesR[tsupports_viewstlookup_viewtview_display_strRtgettext(t	path_listtrevision_specstold_urltnew_urlRzR~told_revision_spectnew_revision_spectother_pathstmake_paths_wt_relativetconsider_relpathtdefault_locationR{tspecific_filestworking_treetbranchtrelpathtold_treet
old_branchtnew_treet
new_brancht
view_filestview_strtextra_trees((Rzs//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt%get_trees_and_branches_to_diff_locked#s 

		

		
	

cC@s||dkr$|dk	r$|j}n|dks?|jdkro|rh|dk	r[|jS|jSqo|Sn|j|S(N(RRtspect
basis_treetas_tree(RttreeRR}((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs

sa/sb/cC@s|dkrt}n|
dkr*t}
n|jz|dk	rax|D]}|jqJWn|jz>|
j||||||||	d|}
|
j||SWd|j|dk	rx|D]}|jqWnXWd|jXdS(sShow in text form the changes from one tree to another.

    :param to_file: The output stream.
    :param specific_files: Include only changes to these files - None for all
        changes.
    :param external_diff_options: If set, use an external GNU diff and pass 
        these options.
    :param extra_trees: If set, more Trees to use for looking up file ids
    :param path_encoding: If set, the path will be encoded as specified, 
        otherwise is supposed to be utf8
    :param format_cls: Formatter class (DiffTree subclass)
    R-N(RtDEFAULT_CONTEXT_AMOUNTtDiffTreeRvtfrom_trees_optionst	show_diffRw(RRR)Rtexternal_diff_optionst	old_labelt	new_labelRR,tusingt
format_clstcontextRtdiffer((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytshow_diff_treess,		


	

cC@s@y|j||}Wntjk
r2d}nXtj|S(s7Returns a timestamp suitable for use in a patch header.i(tget_file_mtimeRCtFileTimestampUnavailablet	timestamptformat_patch_date(Rtfile_idRHtmtime((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_patch_header_dates

cC@sHidt6dt6dd6}||kr@d||||fgSgSdS(Ns+xs-xs??s%s to %s(R\RR(told_is_xtnew_is_xtdescr((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytget_executable_changestDiffPathcB@sSeZdZdZdZdZddZdZedZ	e
dZRS(	s/Base type for command object that compare filestCANNOT_DIFFtCHANGEDt	UNCHANGEDsutf-8cC@s(||_||_||_||_dS(s)Constructor.

        :param old_tree: The tree to show as the old tree in the comparison
        :param new_tree: The tree to show as new in the comparison
        :param to_file: The file to write comparison data to
        :param path_encoding: The character encoding to write paths in
        N(RRR)R,(RRRR)R,((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs			cC@sdS(N((R((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytfinishscC@s||j|j|j|jS(N(RRR)R,(tklasst	diff_tree((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytfrom_diff_treescC@sJxC|D]4}|j|||||}|tjk	r|SqWtjSdS(N(RPRR(tdiffersRtold_pathtnew_pathtold_kindtnew_kindtfile_differtresult((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt
_diff_manys
	(RR	R
RRRRRtclassmethodRtstaticmethodR(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs
	tDiffKindChangecB@s8eZdZdZdZedZdZRS(sSpecial differ for file kind changes.

    Represents kind change as deletion + creation.  Uses the other differs
    to do this.
    cC@s
||_dS(N(R(RR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRscC@sdS(N((R((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRscC@s
||jS(N(R(RR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRscC@sld||fkrtjStj|j||||d}|tjkrM|Stj|j|||d|S(s1Perform comparison

        :param file_id: The file_id of the file to compare
        :param old_path: Path of the file in the old tree
        :param new_path: Path of the file in the new tree
        :param old_kind: Old file-kind of the file
        :param new_kind: New file-kind of the file
        N(RRRRR(RRRRRRR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRP!s	(RR	R
RRRRRP(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs
		t
DiffDirectorycB@seZdZRS(cC@sFd||fkr|jS|dkr,|jS|dkr?|jS|jS(s>Perform comparison between two directories.  (dummy)

        t	directoryN(RN(RN(RRR(RRRRRR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRP6s(RR	RP(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyR4stDiffSymlinkcB@seZdZdZRS(cC@sd||fkr|jS|dkr:|jj|}n|dkrOd}n|jS|dkrw|jj|}n|dkrd}n|jS|j||S(sFPerform comparison between two symlinks

        :param file_id: The file_id of the file to compare
        :param old_path: Path of the file in the old tree
        :param new_path: Path of the file in the new tree
        :param old_kind: Old file-kind of the file
        :param new_kind: New file-kind of the file
        tsymlinkN(RRtget_symlink_targetRRtdiff_symlink(RRRRRRt
old_targett
new_target((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRPEs			cC@sg|dkr#|jjd|n=|dkrF|jjd|n|jjd||f|jS(Ns=== target is %r
s=== target was %r
s=== target changed %r => %r
(RR)R#R(RRR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyR^s(RR	RPR(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRCs	tDiffTextcB@s>eZdZdddeedZdZdddZRS(s1970-01-01 00:00:00 +0000sutf-8R|c		C@sJtj|||||||_||_||_||_||_dS(N(RRttext_differRRR,R-(	RRRR)R,RRRR-((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRos				cC@sd||fkr|jS|}}|dkrGt|j||}n%|dkre|j}d}n|jS|dkrt|j||}	n%|dkr|j}	d}n|jSd|j||f}
d|j||	f}|j|||
|||S(sGCompare two files in unified diff format

        :param file_id: The file_id of the file to compare
        :param old_path: Path of the file in the old tree
        :param new_path: Path of the file in the new tree
        :param old_kind: Old file-kind of the file
        :param new_kind: New file-kind of the file
        tfiles%s%s	%sN(	RRRRt
EPOCH_DATERRRt	diff_text(RRRRRRtfrom_file_idt
to_file_idtold_datetnew_datet
from_labeltto_label((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRPys&	
				c

C@sd}y\||j||}||j||}	|j||||	|jd|jd|jWn=tjk
r|jjd||fj	|jdnX|j
S(sDiff the content of given files in two trees

        :param from_file_id: The id of the file in the from tree.  If None,
            the file is not present in the from tree.
        :param to_file_id: The id of the file in the to tree.  This may refer
            to a different file from from_file_id.  If None,
            the file is not present in the to tree.
        :param from_path: The path in the from tree or None if unknown.
        :param to_path: The path in the to tree or None if unknown.
        cS@s$|dk	r|j||SgSdS(N(Rtget_file_lines(RRRH((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt	_get_textsR,R-sBinary files %s and %s differ
R(RRRR)R,R-RCt
BinaryFileR#R R(
RRRRRt	from_pathtto_pathRt	from_texttto_text((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs		!N(	RR	RR0RRRPRR(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRis		 tDiffFromToolcB@seZddZeddZeddZdZdZdZ	e
dZdZd	Z
eed
ZeedZdZd
ZdZRS(sutf-8cC@s;tj|||||||_tjdd|_dS(NRLs	bzr-diff-(RRtcommand_templatetosutilstmkdtempt_root(RRRRR)R,((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs	cC@sGtj|}d|kr1|jddgn||||||S(NRs	@old_paths	@new_path(tcmdlineR`R[(Rtcommand_stringRRR)R,R((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytfrom_strings
c@sfd}|S(Nc@sEg}dk	r&|d7}nj||j|j|jS(Nt (RRRRR)(Rtfull_command_string(RRR(s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs
	((RRRR((RRRs//usr/lib/python2.7/dist-packages/bzrlib/diff.pytmake_from_diff_treescC@si|d6|d6}g|jD]}t|j|^q}tjdkrg}xC|D];}t|tr|j|jdq[|j|q[W|S|SdS(NRRRNRO(	RRt
substituteRWRXt
isinstancetunicodeRZR (RRRtmy_maptttcommandtcommand_encodedtc((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_get_commands(
cC@s|j||}y%tj|dtjd|j}Wn>tk
rw}|jtjkrqtj	|dqxnX|j
j|jj
|jS(NR7tcwdi(RR=R?R>RR@RARBRCtExecutableMissingR)R#R7treadtwait(RRRRtprocRJ((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_executescC@st|dddks%tjr)tSy,tj|jdtj|j	|Wn+t
k
r}|jtjkrqnXt
S(NtabspathR|(tgetattrRRthost_os_dereferences_symlinksRR:RRtpathjoinRR@RAtEEXISTR\(RRRLRJ((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_try_symlink_roots
,
cC@s'tjdkrdStjp"dSdS(s8Returns safe encoding for passing file path to diff toolRNROtasciiN(RWRXtgetfilesystemencoding(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_fencscC@sE|j}y ||j|j|kSWntk
r@tSXdS(s8Return true if `path` may be able to pass to subprocess.N(RR tdecodetUnicodeErrorR(RRHtfenc((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_is_safepaths
 
cC@sR|j}|j|dj|d}|jdd}tj|j||S(s]Replace unsafe character in `relpath` then join `self._root`,
        `prefix` and `relpath`.Ru?u_(RR RRRRR(RRLRRtrelpath_tmp((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_safe_filename
sc
C@sp|rDt|trD|j|j|}|j|rD|Sn|j||}|rs|j||rs|Stj|}yt	j
|Wn+tk
r}	|	jtj
krqnX|j||}
z5t|d}ztj|
|Wd|jXWd|
jXy|j|}Wntjk
r?nXt	j|||f|sltj|n|S(NRM(RtWorkingTreeRtid2pathRRRRtdirnameR:tmakedirsR@RARtget_filetopentpumpfileRVRRCRtutimet
make_readonly(
RRRRLRt
force_temptallow_writet	full_patht
parent_dirRJtsourcettargetR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_write_files8
cC@sL|j||jd||}|j||jd||d|}||fS(NtoldtnewR(R!RR(RRRRRtallow_write_newt
old_disk_patht
new_disk_path((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt_prepare_files7s		cC@sZytj|jWn?tk
rU}|jtjkrVtd|j|fqVnXdS(Ns9The temporary directory "%s" was not cleanly removed: %s.(RtrmtreeRR@RARBR(RRJ((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyR@scC@sH||fdkrtjS|j|||\}}|j||dS(NR(sfilesfile(RRR'R(RRRRRRR%R&((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRPHs
cC@s|jj|}|jj|}|j|||dtdt\}}|j||}tj|d|jt	|d}z|j
SWd|jXdS(sUse this tool to edit a file.

        A temporary copy will be edited, and the new contents will be
        returned.

        :param file_id: The id of the file to edit.
        :return: The new contents of the file.
        R$RRtrbN(RRRR'R\RR=tcallRRRRV(RRRRtold_abs_pathtnew_abs_pathRtnew_file((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt	edit_fileOs	N(RR	RRRRRRRRRRRRRR!R'RRPR.(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRs$			
	
		
"		RcB@sheZdZejejgZddddZe	dZ
ddZdZdZ
dZRS(	s Provides textual representations of the difference between two trees.

    A DiffTree examines two trees and where a file-id has altered
    between them, generates a textual representation of the difference.
    DiffTree uses a sequence of DiffPath objects which are each
    given the opportunity to handle a given altered fileid. The list
    of DiffPath objects can be extended globally by appending to
    DiffTree.diff_factories, or for a specific diff operation by
    supplying the extra_factories option to the appropriate method.
    sutf-8c@s|dkr-t||||ddt}n|_|_|_|_g_|dk	rjjfd|Dnjjfdj	Djj|t
jgdS(sConstructor

        :param old_tree: Tree to show as old in the comparison
        :param new_tree: Tree to show as new in the comparison
        :param to_file: File to write comparision to
        :param path_encoding: Character encoding to write paths in
        :param diff_text: DiffPath-type object to use as a last resort for
            diffing text files.
        :param extra_factories: Factories of DiffPaths to try before any other
            DiffPathsR|c3@s|]}|VqdS(N((t.0tf(R(s//usr/lib/python2.7/dist-packages/bzrlib/diff.pys	<genexpr>sc3@s|]}|VqdS(N((R/R0(R(s//usr/lib/python2.7/dist-packages/bzrlib/diff.pys	<genexpr>sN(RRR0RRR)R,RR[tdiff_factoriesRR(RRRR)R,Rtextra_factories((Rs//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRxs					##c


@s|dk	r$tj||g}
ng}
|rT|jddfd}nt}t|||||||d|	}|||||||
S(sFactory for producing a DiffTree.

        Designed to accept options used by show_diff_trees.

        :param old_tree: The tree to show as old in the comparison
        :param new_tree: The tree to show as new in the comparison
        :param to_file: File to write comparisons to
        :param path_encoding: Character encoding to use for writing paths
        :param external_diff_options: If supplied, use the installed diff
            binary to perform file comparison, using supplied options.
        :param old_label: Prefix to use for old file labels
        :param new_label: Prefix to use for new file labels
        :param using: Commandline to use to invoke an external diff tool
        c@st|||||dS(s}:param path_encoding: not used but required
                        to match the signature of internal_diff.
                N(Ru(tolabtolinestnlabtnlinesR)R,R-(topts(s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt	diff_filesR-N(RRRR`R0R(
RRRR)R,RRRRR-R2R8R((R7s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRscC@s:z|j||SWdx|jD]}|jq!WXdS(sWrite tree diff to self.to_file

        :param specific_files: the specific files to compare (recursive)
        :param extra_trees: extra trees to use for mapping paths to file_ids
        N(t
_show_diffRR(RRRR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRsc	@sxjjjd|d|dt}d}d}fd}x,t|d|D]\}}}	}
}}}
}|dksX|
dkrqXn|\}}||d}||d}|
ddk	o|
d}|
ddk	o|
d}|d|df|d|dfk}g}|jt|d|d|r_d	d
j|f}nd}||ftt	fkrj
jd|
d|f|}n||ft	tfkrj
jd
|
d|f|}nN|rj
jd|
d|||fn!j
jd|
d||f|	raj||||
d|
dd}n|rXd}qXqXW|S(NRRtrequire_versionedicS@s/|d\}}|}|dkr+|}n|S(Ni(R(tchangeRRRH((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytchanges_keys
	c@s#|dk	r|jjdSdS(NR(RR R,(RH(R(s//usr/lib/python2.7/dist-packages/bzrlib/diff.pytget_encoded_pathstkeyis (properties changed: %s)s, R|s=== removed %s '%s'
s=== added %s '%s'
s=== renamed %s '%s' => '%s'%s
s=== modified %s '%s'%s
(NN(NN(
Rtiter_changesRR\tsortedRR[RtjoinRR)R#t_diff(RRRtiteratorthas_changesR<R=Rtpathstchanged_contentt	versionedtparenttnametkindt
executabletoldpathtnewpathtoldpath_encodedtnewpath_encodedtold_presenttnew_presenttrenamedtproperties_changedtprop_str((Rs//usr/lib/python2.7/dist-packages/bzrlib/diff.pyR9sR		.(		!	
cC@sy|jj|}Wn#tjtjfk
r;d}nXy|jj|}Wn#tjtjfk
rwd}nX|j|||||dS(sPerform a diff of a single file

        :param file_id: file-id of the file
        :param old_path: The path of the file in the old tree
        :param new_path: The path of the file in the new tree
        N(RRJRCtNoSuchIdt
NoSuchFileRRRB(RRRRRR((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRPs

cC@satj|j|||||}|tjkr]|}|dkrK|}ntj|ndS(N(RRRRRRCtNoDiffFound(RRRRRRRt
error_path((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRBs	N(RR	R
RRRR1RRRRRR9RPRB(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyRgs
$	=	tdefault(*t
__future__RR
R:RatstringRWtbzrlib.lazy_importRtglobalstbzrlib.registryRtbzrlib.traceRRRRtTemplateRRRRRR0R\RKRuRRRRRtobjectRRRRRRRtformat_registrytregister(((s//usr/lib/python2.7/dist-packages/bzrlib/diff.pyt<module>sL	
-%	v'			*#&M	

Copyright © 2017 || Recoded By Mr.Bumblebee