-=[ Mr. Bumblebee ]=-
_Indonesia_

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

ó
¦îNc@@søddlmZddlmZeeƒdƒdd„Zdd„Zd„Zde	fd„ƒYZ
d	e	fd
„ƒYZde	fd„ƒYZd
e	fd„ƒYZ
de
fd„ƒYZde
fd„ƒYZde	fd„ƒYZd„ZdS(i(tabsolute_import(tlazy_imports¢
import errno
import gzip
import itertools
import os
from StringIO import StringIO

from bzrlib import (
    bencode,
    errors,
    patiencediff,
    ui,
    )
cC@s7|dkr|jƒ}n|j|ƒ}t||ƒS(N(tNonetkeystget_parent_mapt
_topo_iter(tvfRtparents((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyttopo_iter_keys%scC@s7|dkr|jƒ}n|j|ƒ}t||ƒS(N(RtversionsRR(RR	R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt	topo_iter+sc	#@s?tƒ‰i}‡‡‡fd†}xRˆD]J}ˆ|dkrGq+nx+ˆ|D]}|j|gƒj|ƒqRWq+WgˆD]$}t||ƒƒdkr€|^q€}xŽt|ƒdkr:g}xi|D]a}|ˆkräqÌnt||ƒƒdkrqÌn|j|j|gƒƒ|Vˆj|ƒqÌW|}q­WdS(Nc@sGˆ|dkrgSgˆ|D]$}|ˆkr|ˆkr|^qS(N(R(tversiontv(RtseenR	(s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytpending_parents4si(tsetRt
setdefaulttappendtlentextendtgettadd(	RR	tdescendantsRt
version_idt	parent_idRtcurtnext((RR
R	s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR1s(	
!1
tMultiParentcB@sÅeZdZdgZdd„Zd„Zd„Zeddd„ƒZ	d„Z
dd„Zedd„ƒZ
d	„Zd
„Zd„Zed„ƒZed
„ƒZd„Zd„Zd„ZRS(sA multi-parent diffthunkscC@s%|dk	r||_n	g|_dS(N(RR(tselfR((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt__init__RscC@sd|jS(NsMultiParent(%r)(R(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt__repr__XscC@s&|j|jk	rtS|j|jkS(N(t	__class__tFalseR(Rtother((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt__eq__[sc@s·fd†}t|ƒdkrm|dkr@||dƒ}n|gg|dD]}||ƒ^qQ}ng}d}tgƒ}g}g|D]}	t|	ƒ^q’‰tgƒ}
‡fd†}gtˆƒD]\}}	||ƒ^qÒ}x¯|tˆƒkr¡d}
xt|ƒD]\}}|dkr6qn|\}	}}xG|||krŽ||ƒ}||<|dkr|Pn|\}	}}qHW|dkr¡qn||kr³qn||}|	|7}	|}||8}|dkréqn|
dks||
jkrt||	||ƒ}
qqW|
dkrM|jj	ˆ|ƒ|d7}qót|jƒdkr|
j
j	|ƒtgƒ}n|
j
j	|
ƒ||
j7}qóWt|jƒdkrÊ|
j
j	|ƒn|
S(s6Produce a MultiParent from a list of lines and parentsc@stjd|ˆƒ}|jƒS(N(tpatiencedifftPatienceSequenceMatcherRtget_matching_blocks(tparenttmatcher(ttext(s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytcomparecs	iic@s+yˆ|jƒSWntk
r&dSXdS(N(Rt
StopIterationR(tp(t
block_iter(s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt
next_blockss
N(RRtNewTexttiterRt	enumeratet	num_linest
ParentTexttlinesRR(R)Rtleft_blocksR*R,tparent_comparisonstcur_linetnew_texttparent_texttitdiffR.t	cur_blockt
best_matchtblocktjtntoffset((R-R)s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt
from_lines`s`	$+



cc@shxM|jD]B}t|tƒs
|j|kr5q
n|j|j|jfVq
W||jƒdfVdS(Ni(Rt
isinstanceR3R't
parent_post	child_posR2(RR't
parent_lenthunk((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR&s
cC@sxtƒ}x9t|ƒD]+\}}|jt|ƒjƒ|gƒqW|j|dtt|ƒƒƒ|jdgƒdS(s2Contruct a fulltext from this diff and its parentstai(	tMultiMemoryVersionedFileR1tadd_versiontStringIOt	readlinestadd_difftrangeRt
get_line_list(RRtmpvftnumR'((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytto_lines¤s
	#cC@s;|jt|ƒjƒg|D]}t|ƒjƒ^qƒS(s9Produce a MultiParent from a text and list of parent text(RBRKRL(tclsR)RR,((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt
from_texts¬scc@s4x-|jD]"}x|jƒD]}|VqWq
WdS(sYield text lines for a patchN(Rtto_patch(RRGtline((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRU²scC@stdj|jƒƒƒS(Nt(RtjoinRU(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt	patch_len¸scC@stt|jƒƒƒS(N(Rtgzip_stringRU(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytzipped_patch_len»scC@s|jt|ƒƒS(s)Create a MultiParent from its string form(t_from_patchRK(RSR)((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt
from_patch¾scC@skt|ƒ}g}d}xFtr`y|jƒ}Wntk
rEPnX|ddkr¼t|jdƒdƒ}gt|ƒD]}|jƒ^q|}|dd |d<|jt	|ƒƒq|ddkræ|dj
dcd7<q|ddks	t|dƒ‚ng|jdƒdD]}t|ƒ^q\}}	}
}|jt||	|
|ƒƒqWt
|ƒS(	s@This is private because it is essential to split lines on 
 onlyiR:t iiÿÿÿÿs
tcN(R0RtTrueRR+tinttsplittxrangeRR/R4tAssertionErrorR3R(R4t	line_iterRR7R2txt
hunk_linesRR'RDRE((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR\Ãs*	
%8cc@s¤d}x—|jD]Œ}t|tƒrJd}|t|jƒ}|j}n;d}|j}||j}|j|j|j|jf}||||fV|}qWdS(sIterate through the hunks, with range indicated

        kind is "new" or "parent".
        for "new", data is a list of lines.
        for "parent", data is (parent, parent_start, parent_end)
        :return: a generator of (start, end, kind, data)
        itnewR'N(	RRCR/RR4RER2R'RD(RtstartRGtkindtendtdata((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytrange_iteratorÞs	

cC@sXd}xKt|jƒD]:}t|tƒr=|j|j|S|t|jƒ7}qW|S(s&The number of lines in the output texti(treversedRRCR3RER2RR4(Rtextra_nRG((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR2õscC@s-t|jƒdkrtSt|jdtƒS(s2Return true of this hunk is effectively a fulltextii(RRR!RCR/(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytis_snapshotþsN((((t__name__t
__module__t__doc__t	__slots__RRRR#tstaticmethodRBR&RRtclassmethodRTRURYR[R]R\RmR2Rp(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRMs&			<							R/cB@s;eZdZdgZd„Zd„Zd„Zd„ZRS(s4The contents of text that is introduced by this textR4cC@s
||_dS(N(R4(RR4((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR
scC@s&|j|jk	rtS|j|jkS(N(R R!R4(RR"((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR#
scC@sd|jS(NsNewText(%r)(R4(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRscc@s4dt|jƒVx|jD]}|VqWdVdS(Nsi %d
s
(RR4(RRV((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRUs	(RqRrRsRtRR#RRU(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR/s				R3cB@sMeZdZddddgZd„Zd„Zd„Zd„Zd	„ZRS(
s,A reference to text present in a parent textR'RDRER2cC@s(||_||_||_||_dS(N(R'RDRER2(RR'RDRER2((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR!s			c	C@s+td|jd|jd|jd|jƒS(NR'RDRER2(tdictR'RDRER2(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt_as_dict'scC@sd|jƒS(NsDParentText(%(parent)r, %(parent_pos)r, %(child_pos)r, %(num_lines)r)(Rx(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR+scC@s,|j|jk	rtS|jƒ|jƒkS(N(R R!Rx(RR"((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR#/scc@sd|jƒVdS(Ns8c %(parent)d %(parent_pos)d %(child_pos)d %(num_lines)d
(Rx(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRU4s(	RqRrRsRtRRxRR#RU(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR3s				tBaseVersionedFilecB@s³eZdZddd„Zd„Zd„Zd„Zded„Z	d„Z
d„Zeeed	„Z
d
„Zd„Zd„Zd
„Zd„Zd„Zd„Zd„ZRS(s-Pseudo-VersionedFile skeleton for MultiParenticC@s4i|_i|_tƒ|_||_||_dS(N(t_linest_parentsRt
_snapshotstsnapshot_intervalt
max_snapshots(RR}R~((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR<s
			cC@s
t|jƒS(N(R0R{(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR	CscC@s
||jkS(N(R{(RR((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pythas_versionFscC@sÏ|jdkrtS|jdk	r>t|jƒ|jkr>tSt|ƒdkrTtSxtt|jƒD]_}t|ƒdkr€tS|}g}x4|D],}||jkr“|j|j	|ƒq“q“WqdWtSdS(s8Determine whether to perform a snapshot for this versioniN(
R}RR!R~RR|R`RcRR{(RRt
parent_idstignoredtversion_ids((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytdo_snapshotIs 
c	C@sÕ|dkr!|j||ƒ}n|}|rU|jj|ƒtt|ƒgƒ}n\|rq|j|d ƒ}n|j|ƒ}tj||ƒ}|jƒr±|jj|ƒn|j	|||ƒ||j
|<dS(sìAdd a version to the versionedfile

        :param lines: The list of lines to add.  Must be split on '
'.
        :param version_id: The version_id of the version to add
        :param force_snapshot: If true, force this version to be added as a
            snapshot version.  If false, force this version to be added as a
            diff.  If none, determine this automatically.
        :param single_parent: If true, use a single parent, rather than
            multiple parents.
        iN(RRƒR|RRR/RORBRpRMRz(	RR4RR€tforce_snapshott
single_parentRƒR;tparent_lines((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRJ]scC@s|j|S(N(R{(RR((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytget_parents{scC@sLtt|j|ƒƒgƒ}|j|||j|ƒ|jj|ƒdS(N(RR/t
cache_versionRMR{R|R(RRtsnapdiff((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt
make_snapshot~scC@só|p
|stƒ‚nt|jƒƒ}t|ƒ}tjjƒ}z›x”t|ƒdkrßtƒ}	xM|D]E}
|j|
ƒ}g|D]}||jkrŠ|^qŠgkr·qnng|j	|
ƒD]\}
}|
d|^qÇ}|dkrüd}n|
|k}|j||
|||ƒ|	j|
ƒ|r†|j
ƒ|j
ƒ|r†||j|
gƒdksvtƒ‚n|j
ƒq†n|jtdƒ|t|ƒt|	ƒ|ƒqnWg|D]}||	kr¾|^q¾}qLWWd|jƒXdS(s‘Import all revisions of a versionedfile

        :param vf: The versionedfile to import
        :param snapshots: If provided, the revisions to make snapshots of.
            Otherwise, this will be auto-determined
        :param no_cache: If true, clear the cache after every add.
        :param single_parent: If true, omit all but one parent text, (but
            retain parent metadata).
        iR^sImporting revisionsN(t
ValueErrorRR	Rtuit
ui_factorytnested_progress_barR‡R{tannotateRRJRtclear_cacheRORdtupdatetgettexttfinished(RRt	snapshotstno_cacheR…tverifyt	revisionsttotaltpbtaddedtrevisionRR,RHtlR4R„tr((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytimport_versionedfileƒs>
	
.-	


"-c	C@sêi}i}tƒ}xÎt|ƒD]À}t|j|ƒƒ}|j|ƒ}t|ƒdkr{|j|ƒtƒ||<q"x(|j|ƒD]}|j||ƒq‹Wt|ƒ|jkrØ|j|ƒtƒ||<q"|||<q"W|S(s,Determine which versions to add as snapshotsi(RR
R‡RRR‘R}(	RRtbuild_ancestorsRR”Rtpotential_build_ancestorsRR'((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytselect_snapshots°s 	

cC@sA|t|jƒ8}|jƒ|}g|D]\}}|^q+S(s(Select snapshots for minimum output size(RR|tget_size_ranking(RRQt
new_snapshotsR@R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytselect_by_sizeÅscC@s™g}tƒ}xy|jƒD]k}||jkr7qn|j|ƒjƒ}tt|j|ƒƒgƒjƒ}|j|||fƒqW|j	ƒ|S(sGet versions ranked by size(
RR	R|tget_diffRYRR/RˆRtsort(RR	R£Rtdiff_lentsnapshot_len((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR¢Ës	
cC@s>x7|jƒD])}|j|j|ƒ||j|ƒq
WdS(s2Import the diffs from another pseudo-versionedfileN(R	RMR¥R{(RRR((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytimport_diffsÙsc@sƒi‰i‰x¶t|ƒD]¨}tƒˆ|<||jkrx*|j|D]}ˆ|jˆ|ƒqIWˆ|j|jƒˆ|j|ƒnx.ˆ|D]"}ˆj|tƒƒj|ƒq›WqWt|j	ƒƒ}g}xŸt
|ƒdkr~|jd‡‡fd†ƒ|jƒ}|j
|ƒx'ˆ|D]}ˆ|jˆ|ƒq2Wx'ˆ|D]}ˆ|jˆ|ƒq\WqàW|S(s@Return revisions sorted by how much they reduce build complexityitkeyc@s$tˆ|ƒtˆj|gƒƒS(N(RR(Rf(tcould_avoidt
referenced_by(s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt<lambda>ïs
(R
RR|R{R‘tdiscardRRtlistR	RR¦tpopRtdifference_update(RRRtavoid_idtavailable_versionstrankingtselected((R«R¬s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytget_build_rankingßs0
$


cC@s|jjƒdS(N(Rztclear(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRýscC@s g|D]}|j|ƒ^qS(N(Rˆ(RR‚R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyROscC@sqy|j|SWntk
r"nX|j|ƒ}g}t||j|jƒ}|j||ƒ||j|<|S(N(RztKeyErrorR¥t_ReconstructorR{treconstruct_version(RRR;R4t
reconstructor((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRˆs

N(RqRrRsRRR	RRƒR!RJR‡RŠR`RžR¡R¤R¢R©R¶RRORˆ(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRy9s$					,							RIcB@s8eZdZddd„Zd„Zd„Zd„ZRS(s"Memory-backed pseudo-versionedfileicC@s tj|||ƒi|_dS(N(RyRt_diffs(RR}R~((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRscC@s||j|<||j|<dS(N(R¼R{(RR;RR€((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRMs
cC@s9y|j|SWn#tk
r4tj||ƒ‚nXdS(N(R¼R¸terrorstRevisionNotPresent(RR((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR¥s
cC@s
i|_dS(N(R¼(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytdestroy!sN(RqRrRsRRRMR¥R¿(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRIs
		tMultiVersionedFilecB@sJeZdZddd„Zd„Zd„Zd„Zd„Zd„Z	RS(	s Disk-backed pseudo-versionedfileicC@s)tj|||ƒ||_i|_dS(N(RyRt	_filenamet_diff_offset(RtfilenameR}R~((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR(s	c	C@s³|j|\}}t|jddƒ}z&|j|ƒt|j|ƒƒ}Wd|jƒXtjdddd|ƒ}z)|j
ƒ}|jƒ}tj|ƒSWd|jƒXdS(Ns.mpknittrbtmodetfileobj(
RÂtopenRÁtseekRKtreadtclosetgziptGzipFileRtreadlineRR](	RRRitcounttinfiletsiotzip_filetfile_version_idtcontent((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR¥-s
cC@sËt|jddƒ}z|jddƒ|jƒ}zEtjdddd|ƒ}|jtj	d|g|j
ƒƒƒWd|jƒX|jƒ}Wd|jƒX|||f|j|<||j
|<dS(Ns.mpknittabiiRÅRÆsversion %s
(RÇRÁRÈttellRËRÌRt
writelinest	itertoolstchainRURÊRÂR{(RR;RR€toutfileRitzipfileRk((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRM=scC@sytj|jdƒWn+tk
rE}|jtjkrF‚qFnXytj|jdƒWn+tk
r‹}|jtjkrŒ‚qŒnXdS(Ns.mpknits.mpidx(tostunlinkRÁtOSErrorterrnotENOENT(Rte((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR¿Ps
cC@sBt|jddƒjtj|jt|jƒ|jfƒƒdS(Ns.mpidxtwb(RÇRÁtwritetbencodeR{R¯R|RÂ(R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytsave\scC@sGtjt|jddƒjƒƒ\|_}|_t|ƒ|_dS(Ns.mpidxRÄ(	RãtbdecodeRÇRÁRÉR{RÂRR|(RR”((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytload`s.N(
RqRrRsRRR¥RMR¿RäRæ(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRÀ%s				R¹cB@s2eZdZd„Zd„Zd„Zd„ZRS(s<Build a text from the diffs, ancestry graph and cached linescC@s(||_||_||_i|_dS(N(tdiffsR4Rtcursor(RRçR4R((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRis			cC@s=|j||j}|j|j}|j|||j|ƒS(s5Append the lines referred to by a ParentText to lines(RR'RDR2t_reconstruct(RR4R9RRRk((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pytreconstructoscC@s||krdS|||fg}xít|ƒdkr|jƒ\}}}||jkr||j|j|||!ƒq%ny |j|\}}}}	}
WnAtk
rß|jj|ƒjƒ}
|
j	ƒ\}}}}	nX||kr|jj|ƒjƒ}
|
j	ƒ\}}}}	nx(||krI|
j	ƒ\}}}}	q"W||||	|
f|j|<||kr‘|j
|||fƒ|}n|dkr¼|j|	||||!ƒq%|	\}}}
|j||}|||}|
||}|j
|||fƒq%WdS(s/Append lines for the requested version_id rangeNiRh(RR°R4RRèR¸RçR¥RmRRR(RR4treq_version_idt	req_starttreq_endtpending_reqsRiRkRjRltiteratorR'tparent_startt
parent_endtnew_version_idt	new_starttnew_end((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRévs: 
	cC@s.|jj|ƒjƒ}|j||d|ƒS(Ni(RçR¥R2Ré(RR4Rtlength((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRºŸs(RqRrRsRRêRéRº(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyR¹fs
			)cC@sEtƒ}tjdddd|ƒ}|j|ƒ|jƒ|jƒS(NRÅRáRÆ(RKRËRÌRRÖRÊtgetvalue(R4RÐt	data_file((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyRZ¤s
	

N(t
__future__Rtbzrlib.lazy_importRtglobalsRRR
RtobjectRR/R3RyRIRÀR¹RZ(((s6/usr/lib/python2.7/dist-packages/bzrlib/multiparent.pyt<module>s	
	¸×A>

Copyright © 2017 || Recoded By Mr.Bumblebee