/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.12.3 by Aaron Bentley
Add pack serialization
1
from bzrlib import pack
0.12.1 by Aaron Bentley
Initial bencode-based encoding
2
from bzrlib.util import bencode
3
4
5
def serialize(tt):
6
    new_name = dict((k, v.encode('utf-8')) for k, v in tt._new_name.items())
7
    attribs = {
8
        '_id_number': tt._id_number,
9
        '_new_name': new_name,
0.12.2 by Aaron Bentley
Handle parents
10
        '_new_parent': tt._new_parent,
0.12.1 by Aaron Bentley
Initial bencode-based encoding
11
        '_new_id': tt._new_id,
12
        }
0.12.3 by Aaron Bentley
Add pack serialization
13
    serializer = pack.ContainerSerialiser()
14
    yield serializer.begin()
15
    yield serializer.bytes_record(bencode.bencode(attribs), (('attribs',),))
0.12.4 by Aaron Bentley
Start deserializing files
16
    for trans_id, kind in tt._new_contents.items():
17
        if kind == 'file':
0.12.5 by Aaron Bentley
Test file content
18
            cur_file = open(tt._limbo_name(trans_id), 'rb')
19
            try:
20
                content = cur_file.read()
21
            finally:
22
                cur_file.close()
0.12.6 by Aaron Bentley
Support serializing/deserializing directories
23
        if kind == 'directory':
24
            content = ''
0.12.4 by Aaron Bentley
Start deserializing files
25
        yield serializer.bytes_record(content, ((trans_id, kind),))
0.12.3 by Aaron Bentley
Add pack serialization
26
    yield serializer.end()
27
0.12.1 by Aaron Bentley
Initial bencode-based encoding
28
29
def deserialize(tt, input):
0.12.3 by Aaron Bentley
Add pack serialization
30
    parser = pack.ContainerPushParser()
31
    for bytes in input:
32
        parser.accept_bytes(bytes)
33
    iterator = iter(parser.read_pending_records())
34
    names, content = iterator.next()
35
    attribs = bencode.bdecode(content)
0.12.1 by Aaron Bentley
Initial bencode-based encoding
36
    tt._id_number = attribs['_id_number']
37
    tt._new_name = dict((k, v.decode('utf-8'))
38
                        for k, v in attribs['_new_name'].items())
0.12.2 by Aaron Bentley
Handle parents
39
    tt._new_parent = attribs['_new_parent']
0.12.1 by Aaron Bentley
Initial bencode-based encoding
40
    tt._new_id = attribs['_new_id']
41
    tt._r_new_id = dict((v, k) for k, v in tt._new_id.items())
0.12.4 by Aaron Bentley
Start deserializing files
42
    for ((trans_id, kind),), content in iterator:
43
        if kind == 'file':
44
            tt.create_file(content, trans_id)
0.12.6 by Aaron Bentley
Support serializing/deserializing directories
45
        if kind == 'directory':
46
            tt.create_directory(trans_id)