~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bundle/serializer/__init__.py

Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 
28
28
# New bundles should try to use this header format
29
29
BUNDLE_HEADER = '# Bazaar revision bundle v'
30
 
BUNDLE_HEADER_RE = re.compile(r'^# Bazaar revision bundle v(?P<version>\d+[\w.]*)\n$')
31
 
CHANGESET_OLD_HEADER_RE = re.compile(r'^# Bazaar-NG changeset v(?P<version>\d+[\w.]*)\n$')
 
30
BUNDLE_HEADER_RE = re.compile(
 
31
    r'^# Bazaar revision bundle v(?P<version>\d+[\w.]*)(?P<lineending>\r?)\n$')
 
32
CHANGESET_OLD_HEADER_RE = re.compile(
 
33
    r'^# Bazaar-NG changeset v(?P<version>\d+[\w.]*)(?P<lineending>\r?)\n$')
32
34
 
33
35
 
34
36
_serializers = {}
50
52
    for line in f:
51
53
        m = BUNDLE_HEADER_RE.match(line)
52
54
        if m:
 
55
            if m.group('lineending') != '':
 
56
                raise errors.UnsupportedEOLMarker()
53
57
            version = m.group('version')
54
58
            break
55
59
        elif line.startswith(BUNDLE_HEADER):
56
 
            raise errors.MalformedHeader()
 
60
            raise errors.MalformedHeader(
 
61
                'Extra characters after version number')
57
62
        m = CHANGESET_OLD_HEADER_RE.match(line)
58
63
        if m:
59
64
            version = m.group('version')
60
 
            raise errors.BundleNotSupported(version, 'old format bundles not supported')
 
65
            raise errors.BundleNotSupported(version, 
 
66
                'old format bundles not supported')
61
67
 
62
68
    if version is None:
63
69
        raise errors.NotABundle('Did not find an opening header')
64
70
 
65
71
    # Now we have a version, to figure out how to read the bundle 
66
72
    if not _serializers.has_key(version):
67
 
        raise errors.BundleNotSupported(version, 'version not listed in known versions')
 
73
        raise errors.BundleNotSupported(version, 
 
74
            'version not listed in known versions')
68
75
 
69
76
    serializer = _serializers[version](version)
70
77
 
185
192
    # parse it
186
193
    dot_loc = date.find('.')
187
194
    if dot_loc == -1:
188
 
        raise ValueError('Date string does not contain high-precision seconds: %r' % date)
 
195
        raise ValueError(
 
196
            'Date string does not contain high-precision seconds: %r' % date)
189
197
    base_time = time.strptime(date[:dot_loc], "%a %Y-%m-%d %H:%M:%S")
190
198
    fract_seconds, offset = date[dot_loc:].split()
191
199
    fract_seconds = float(fract_seconds)