/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 breezy/plugins/weave_fmt/xml4.py

  • Committer: Jelmer Vernooij
  • Date: 2017-06-08 23:30:31 UTC
  • mto: This revision was merged to the branch mainline in revision 6690.
  • Revision ID: jelmer@jelmer.uk-20170608233031-3qavls2o7a1pqllj
Update imports.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
from ...bzr.xml_serializer import (
 
17
from __future__ import absolute_import
 
18
 
 
19
from ...xml_serializer import (
18
20
    Element,
19
21
    SubElement,
20
22
    XMLSerializer,
21
23
    escape_invalid_chars,
22
24
    )
23
25
from ...bzr.inventory import ROOT_ID, Inventory
24
 
from ...bzr import inventory
 
26
import ...bzr.inventory as inventory
25
27
from ...revision import Revision
26
28
from ...errors import BzrError
27
29
 
40
42
        """Convert InventoryEntry to XML element"""
41
43
        e = Element('entry')
42
44
        e.set('name', ie.name)
43
 
        e.set('file_id', ie.file_id.decode('ascii'))
 
45
        e.set('file_id', ie.file_id)
44
46
        e.set('kind', ie.kind)
45
47
 
46
48
        if ie.text_size is not None:
61
63
 
62
64
        return e
63
65
 
 
66
 
64
67
    def _unpack_inventory(self, elt, revision_id=None, entry_cache=None,
65
68
                          return_from_cache=False):
66
69
        """Construct from XML Element
67
70
 
68
71
        :param revision_id: Ignored parameter used by xml5.
69
72
        """
70
 
        root_id = elt.get('file_id')
71
 
        root_id = (root_id.encode('ascii') if root_id else ROOT_ID)
 
73
        root_id = elt.get('file_id') or ROOT_ID
72
74
        inv = Inventory(root_id)
73
75
        for e in elt:
74
76
            ie = self._unpack_entry(e, entry_cache=entry_cache,
78
80
            inv.add(ie)
79
81
        return inv
80
82
 
 
83
 
81
84
    def _unpack_entry(self, elt, entry_cache=None, return_from_cache=False):
82
 
        # original format inventories don't have a parent_id for
83
 
        # nodes in the root directory, but it's cleaner to use one
84
 
        # internally.
 
85
        ## original format inventories don't have a parent_id for
 
86
        ## nodes in the root directory, but it's cleaner to use one
 
87
        ## internally.
85
88
        parent_id = elt.get('parent_id')
86
 
        parent_id = (parent_id.encode('ascii') if parent_id else ROOT_ID)
 
89
        if parent_id is None:
 
90
            parent_id = ROOT_ID
87
91
 
88
 
        file_id = elt.get('file_id').encode('ascii')
89
92
        kind = elt.get('kind')
90
93
        if kind == 'directory':
91
 
            ie = inventory.InventoryDirectory(file_id,
 
94
            ie = inventory.InventoryDirectory(elt.get('file_id'),
92
95
                                              elt.get('name'),
93
96
                                              parent_id)
94
97
        elif kind == 'file':
95
 
            ie = inventory.InventoryFile(file_id,
 
98
            ie = inventory.InventoryFile(elt.get('file_id'),
96
99
                                         elt.get('name'),
97
100
                                         parent_id)
98
101
            ie.text_id = elt.get('text_id')
99
 
            if ie.text_id is not None:
100
 
                ie.text_id = ie.text_id.encode('utf-8')
101
102
            ie.text_sha1 = elt.get('text_sha1')
102
 
            if ie.text_sha1 is not None:
103
 
                ie.text_sha1 = ie.text_sha1.encode('ascii')
104
103
            v = elt.get('text_size')
105
104
            ie.text_size = v and int(v)
106
105
        elif kind == 'symlink':
107
 
            ie = inventory.InventoryLink(file_id,
 
106
            ie = inventory.InventoryLink(elt.get('file_id'),
108
107
                                         elt.get('name'),
109
108
                                         parent_id)
110
109
            ie.symlink_target = elt.get('symlink_target')
115
114
 
116
115
        return ie
117
116
 
 
117
 
118
118
    def _pack_revision(self, rev):
119
119
        """Revision object -> xml tree"""
120
120
        root = Element('revision',
121
 
                       committer=rev.committer,
122
 
                       timestamp='%.9f' % rev.timestamp,
123
 
                       revision_id=rev.revision_id,
124
 
                       inventory_id=rev.inventory_id,
125
 
                       inventory_sha1=rev.inventory_sha1,
 
121
                       committer = rev.committer,
 
122
                       timestamp = '%.9f' % rev.timestamp,
 
123
                       revision_id = rev.revision_id,
 
124
                       inventory_id = rev.inventory_id,
 
125
                       inventory_sha1 = rev.inventory_sha1,
126
126
                       )
127
127
        if rev.timezone:
128
128
            root.set('timezone', str(rev.timezone))
143
143
                    p.set('revision_sha1', rev.parent_sha1s[i])
144
144
        return root
145
145
 
146
 
    def write_revision_to_string(self, rev):
147
 
        return tostring(self._pack_revision(rev)) + b'\n'
148
 
 
149
 
    def _write_element(self, elt, f):
150
 
        ElementTree(elt).write(f, 'utf-8')
151
 
        f.write(b'\n')
152
146
 
153
147
    def _unpack_revision(self, elt):
154
148
        """XML Element -> Revision object"""
157
151
        if elt.tag not in ('revision', 'changeset'):
158
152
            raise BzrError("unexpected tag in revision file: %r" % elt)
159
153
 
160
 
        rev = Revision(committer=elt.get('committer'),
161
 
                       timestamp=float(elt.get('timestamp')),
162
 
                       revision_id=elt.get('revision_id'),
163
 
                       inventory_id=elt.get('inventory_id'),
164
 
                       inventory_sha1=elt.get('inventory_sha1')
 
154
        rev = Revision(committer = elt.get('committer'),
 
155
                       timestamp = float(elt.get('timestamp')),
 
156
                       revision_id = elt.get('revision_id'),
 
157
                       inventory_id = elt.get('inventory_id'),
 
158
                       inventory_sha1 = elt.get('inventory_sha1')
165
159
                       )
166
160
 
167
161
        precursor = elt.get('precursor')
185
179
        v = elt.get('timezone')
186
180
        rev.timezone = v and int(v)
187
181
 
188
 
        rev.message = elt.findtext('message')  # text of <message>
 
182
        rev.message = elt.findtext('message') # text of <message>
189
183
        return rev
190
184
 
191
185
 
 
186
 
 
187
 
192
188
"""singleton instance"""
193
189
serializer_v4 = _Serializer_v4()
 
190