/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/weavefile.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
# an iterator returning the weave lines...  We don't really need to
41
41
# deserialize it into memory.
42
42
 
43
 
FORMAT_1 = b'# bzr weave file v5\n'
 
43
FORMAT_1 = '# bzr weave file v5\n'
44
44
 
45
45
 
46
46
def write_weave(weave, f, format=None):
58
58
        if included:
59
59
            # mininc = weave.minimal_parents(version)
60
60
            mininc = included
61
 
            f.write(b'i ')
62
 
            f.write(b' '.join(str(i).encode('ascii') for i in mininc))
63
 
            f.write(b'\n')
 
61
            f.write('i ')
 
62
            f.write(' '.join(str(i) for i in mininc))
 
63
            f.write('\n')
64
64
        else:
65
 
            f.write(b'i\n')
66
 
        f.write(b'1 ' + weave._sha1s[version] + b'\n')
67
 
        f.write(b'n ' + weave._names[version] + b'\n')
68
 
        f.write(b'\n')
 
65
            f.write('i\n')
 
66
        f.write('1 ' + weave._sha1s[version] + '\n')
 
67
        f.write('n ' + weave._names[version] + '\n')
 
68
        f.write('\n')
69
69
 
70
 
    f.write(b'w\n')
 
70
    f.write('w\n')
71
71
 
72
72
    for l in weave._weave:
73
73
        if isinstance(l, tuple):
74
 
            if l[0] == b'}':
75
 
                f.write(b'}\n')
 
74
            if l[0] == '}':
 
75
                f.write('}\n')
76
76
            else:
77
 
                f.write(l[0] + b' %d\n' % l[1])
 
77
                f.write('%s %d\n' % l)
78
78
        else: # text line
79
79
            if not l:
80
 
                f.write(b', \n')
81
 
            elif l[-1] == b'\n':
82
 
                f.write(b'. ' + l)
 
80
                f.write(', \n')
 
81
            elif l[-1] == '\n':
 
82
                f.write('. ' + l)
83
83
            else:
84
 
                f.write(b', ' + l + b'\n')
 
84
                f.write(', ' + l + '\n')
85
85
 
86
 
    f.write(b'W\n')
 
86
    f.write('W\n')
87
87
 
88
88
 
89
89
 
90
90
def read_weave(f):
91
91
    # FIXME: detect the weave type and dispatch
92
 
    from .weave import Weave
 
92
    from bzrlib.weave import Weave
93
93
    w = Weave(getattr(f, 'name', None))
94
94
    _read_weave_v5(f, w)
95
95
    return w
100
100
 
101
101
    This is only to be used by read_weave and WeaveFile.__init__.
102
102
    """
103
 
    #  200   0   2075.5080   1084.0360   breezy.weavefile:104(_read_weave_v5)
 
103
    #  200   0   2075.5080   1084.0360   bzrlib.weavefile:104(_read_weave_v5)
104
104
    # +60412 0    366.5900    366.5900   +<method 'readline' of 'file' objects>
105
105
    # +59982 0    320.5280    320.5280   +<method 'startswith' of 'str' objects>
106
106
    # +59363 0    297.8080    297.8080   +<method 'append' of 'list' objects>
107
107
    # replace readline call with iter over all lines ->
108
108
    # safe because we already suck on memory.
109
 
    #  200   0   1492.7170    802.6220   breezy.weavefile:104(_read_weave_v5)
 
109
    #  200   0   1492.7170    802.6220   bzrlib.weavefile:104(_read_weave_v5)
110
110
    # +59982 0    329.9100    329.9100   +<method 'startswith' of 'str' objects>
111
111
    # +59363 0    320.2980    320.2980   +<method 'append' of 'list' objects>
112
112
    # replaced startswith with slice lookups:
113
 
    #  200   0    851.7250    501.1120   breezy.weavefile:104(_read_weave_v5)
 
113
    #  200   0    851.7250    501.1120   bzrlib.weavefile:104(_read_weave_v5)
114
114
    # +59363 0    311.8780    311.8780   +<method 'append' of 'list' objects>
115
115
    # +200   0     30.2500     30.2500   +<method 'readlines' of 'file' objects>
116
116
 
117
 
    from .weave import WeaveFormatError
 
117
    from bzrlib.weave import WeaveFormatError
118
118
 
119
119
    try:
120
120
        lines = iter(f.readlines())
122
122
        f.close()
123
123
 
124
124
    try:
125
 
        l = next(lines)
 
125
        l = lines.next()
126
126
    except StopIteration:
127
127
        raise WeaveFormatError('invalid weave file: no header')
128
128
 
132
132
    ver = 0
133
133
    # read weave header.
134
134
    while True:
135
 
        l = next(lines)
136
 
        if l[0:1] == b'i':
 
135
        l = lines.next()
 
136
        if l[0] == 'i':
137
137
            if len(l) > 2:
138
 
                w._parents.append(list(map(int, l[2:].split(b' '))))
 
138
                w._parents.append(map(int, l[2:].split(' ')))
139
139
            else:
140
140
                w._parents.append([])
141
141
            l = lines.next()[:-1]
142
142
            w._sha1s.append(l[2:])
143
 
            l = next(lines)
 
143
            l = lines.next()
144
144
            name = l[2:-1]
145
145
            w._names.append(name)
146
146
            w._name_map[name] = ver
147
 
            l = next(lines)
 
147
            l = lines.next()
148
148
            ver += 1
149
 
        elif l == b'w\n':
 
149
        elif l == 'w\n':
150
150
            break
151
151
        else:
152
152
            raise WeaveFormatError('unexpected line %r' % l)
153
153
 
154
154
    # read weave body
155
155
    while True:
156
 
        l = next(lines)
157
 
        if l == b'W\n':
 
156
        l = lines.next()
 
157
        if l == 'W\n':
158
158
            break
159
 
        elif b'. ' == l[0:2]:
 
159
        elif '. ' == l[0:2]:
160
160
            w._weave.append(l[2:])  # include newline
161
 
        elif b', ' == l[0:2]:
 
161
        elif ', ' == l[0:2]:
162
162
            w._weave.append(l[2:-1])        # exclude newline
163
 
        elif l == b'}\n':
164
 
            w._weave.append((b'}', None))
 
163
        elif l == '}\n':
 
164
            w._weave.append(('}', None))
165
165
        else:
166
166
            w._weave.append((intern(l[0]), int(l[2:])))
167
167
    return w