~lifeless/bzr/index.range_map

« back to all changes in this revision

Viewing changes to bzrlib/index.py

  • Committer: Robert Collins
  • Date: 2008-06-19 01:17:19 UTC
  • mfrom: (3218.1.277 +trunk)
  • Revision ID: robertc@robertcollins.net-20080619011719-1c4g4uxzzhdls2wf
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
612
612
                # TODO: trim out parsed locations (e.g. if the 800 is into the
613
613
                # parsed region trim it, and dont use the adjust_for_latency
614
614
                # facility)
615
 
                assert length > 0
 
615
                if length < 1:
 
616
                    raise AssertionError("No data to read")
616
617
                readv_ranges.append((location, length))
617
618
        range_map = self._parsed_map
618
619
        # keys we know we can answer in the negative
633
634
                # header not yet parsed
634
635
                low_byte = 0
635
636
                high_byte = self._size
636
 
            assert isinstance(low_byte, int), type(low_byte)
637
 
            assert isinstance(high_byte, int)
 
637
            if type(low_byte) != int:
 
638
                raise AssertionError("Not an int: %r" % low_byte)
 
639
            if type(high_byte) != int:
 
640
                raise AssertionError("Not an int: %r" % high_byte)
638
641
            location = low_byte + (high_byte - low_byte) // 2 - 400
639
642
            length = 800
640
643
            if location < low_byte:
643
646
            if location + length > high_byte:
644
647
                # TODO: disable range expansion in this case?
645
648
                length = high_byte - location
646
 
            assert length > 0
 
649
            if length < 1:
 
650
                raise AssertionError("No data to read")
647
651
            readv_ranges.append((location, length))
648
652
        # read the header if needed
649
653
        if self._bisect_nodes is None:
842
846
                trim_start = data.find('\n') + 1
843
847
            else:
844
848
                trim_start = data.find('\n', trim_start) + 1
845
 
            assert trim_start != 0, 'no \n was present'
 
849
            if not (trim_start != 0):
 
850
                raise AssertionError('no \n was present')
846
851
            # print 'removing start', offset, trim_start, repr(data[:trim_start])
847
852
        if not end_adjacent:
848
853
            # work around python bug in rfind
850
855
                trim_end = data.rfind('\n') + 1
851
856
            else:
852
857
                trim_end = data.rfind('\n', None, trim_end) + 1
853
 
            assert trim_end != 0, 'no \n was present'
 
858
            if not (trim_end != 0):
 
859
                raise AssertionError('no \n was present')
854
860
            # print 'removing end', offset, trim_end, repr(data[trim_end:])
855
861
        # adjust offset and data to the parseable data.
856
862
        trimmed_data = data[trim_start:trim_end]
857
 
        assert trimmed_data, 'read unneeded data [%d:%d] from [%d:%d]' % (
858
 
            trim_start, trim_end, offset, offset + len(data))
 
863
        if not (trimmed_data):
 
864
            raise AssertionError('read unneeded data [%d:%d] from [%d:%d]' 
 
865
                % (trim_start, trim_end, offset, offset + len(data)))
859
866
        if trim_start:
860
867
            offset += trim_start
861
868
        # print "parsing", repr(trimmed_data)
879
886
            if not line:
880
887
                # must be at the end
881
888
                if self._size:
882
 
                    assert self._size == pos + 1, "%s %s" % (self._size, pos)
 
889
                    if not (self._size == pos + 1):
 
890
                        raise AssertionError("%s %s" % (self._size, pos))
883
891
                trailers += 1
884
892
                continue
885
893
            elements = line.split('\0')
922
930
            for offset, data in readv_data:
923
931
                if self._bisect_nodes is None:
924
932
                    # this must be the start
925
 
                    assert offset == 0
 
933
                    if not (offset == 0):
 
934
                        raise AssertionError()
926
935
                    offset, data = self._parse_header_from_bytes(data)
927
936
                # print readv_ranges, "[%d:%d]" % (offset, offset + len(data))
928
937
                self._parse_region(offset, data)