~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/weave.py

Merge up bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
88
88
import bzrlib.errors as errors
89
89
from bzrlib.osutils import sha_strings, split_lines
90
90
import bzrlib.patiencediff
 
91
from bzrlib.symbol_versioning import *
91
92
from bzrlib.trace import mutter
92
93
from bzrlib.tsort import topo_sort
93
94
from bzrlib.versionedfile import (
398
399
 
399
400
        :param nostore_sha: See VersionedFile.add_lines.
400
401
        """
401
 
        assert isinstance(version_id, basestring)
402
402
        self._check_lines_not_unicode(lines)
403
403
        self._check_lines_are_lines(lines)
404
404
        if not sha1:
479
479
            #print 'raw match', tag, i1, i2, j1, j2
480
480
            if tag == 'equal':
481
481
                continue
482
 
 
483
482
            i1 = basis_lineno[i1]
484
483
            i2 = basis_lineno[i2]
485
 
 
486
 
            assert 0 <= j1 <= j2 <= len(lines)
487
 
 
488
 
            #print tag, i1, i2, j1, j2
489
 
 
490
484
            # the deletion and insertion are handled separately.
491
485
            # first delete the region.
492
486
            if i1 != i2:
593
587
                elif c == '}':
594
588
                    istack.pop()
595
589
                elif c == '[':
596
 
                    assert self._names[v] not in dset
597
590
                    dset.add(self._names[v])
598
591
                elif c == ']':
599
592
                    dset.remove(self._names[v])
600
593
                else:
601
594
                    raise WeaveFormatError('unexpected instruction %r' % v)
602
595
            else:
603
 
                assert l.__class__ in (str, unicode)
604
 
                assert istack
605
596
                yield lineno, istack[-1], frozenset(dset), l
606
597
            lineno += 1
607
598
 
717
708
                c, v = l
718
709
                isactive = None
719
710
                if c == '{':
720
 
                    assert v not in iset
721
711
                    istack.append(v)
722
712
                    iset.add(v)
723
713
                elif c == '}':
724
714
                    iset.remove(istack.pop())
725
715
                elif c == '[':
726
716
                    if v in included:
727
 
                        assert v not in dset
728
717
                        dset.add(v)
729
 
                else:
730
 
                    assert c == ']'
 
718
                elif c == ']':
731
719
                    if v in included:
732
 
                        assert v in dset
733
720
                        dset.remove(v)
 
721
                else:
 
722
                    raise AssertionError()
734
723
            else:
735
 
                assert l.__class__ in (str, unicode)
736
724
                if isactive is None:
737
725
                    isactive = (not dset) and istack and (istack[-1] in included)
738
726
                if isactive:
776
764
    def num_versions(self):
777
765
        """How many versions are in this weave?"""
778
766
        l = len(self._parents)
779
 
        assert l == len(self._sha1s)
780
767
        return l
781
768
 
782
769
    __len__ = num_versions
808
795
            for p in self._parents[i]:
809
796
                new_inc.update(inclusions[self._idx_to_name(p)])
810
797
 
811
 
            assert set(new_inc) == set(self.get_ancestry(name)), \
812
 
                'failed %s != %s' % (set(new_inc), set(self.get_ancestry(name)))
 
798
            if set(new_inc) != set(self.get_ancestry(name)):
 
799
                raise AssertionError(
 
800
                    'failed %s != %s' 
 
801
                    % (set(new_inc), set(self.get_ancestry(name))))
813
802
            inclusions[name] = new_inc
814
803
 
815
804
        nlines = len(self._weave)
1009
998
        """See VersionedFile.get_suffixes()."""
1010
999
        return [WeaveFile.WEAVE_SUFFIX]
1011
1000
 
 
1001
    def insert_record_stream(self, stream):
 
1002
        super(WeaveFile, self).insert_record_stream(stream)
 
1003
        self._save()
 
1004
 
 
1005
    @deprecated_method(one_five)
1012
1006
    def join(self, other, pb=None, msg=None, version_ids=None,
1013
1007
             ignore_missing=False):
1014
1008
        """Join other into self and save."""