/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/transform.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-07-25 03:06:42 UTC
  • mfrom: (7045.3.4 python3-r)
  • Revision ID: breezy.the.bot@gmail.com-20180725030642-oghhedvui3470wy6
Fix another ~500 tests on Python 3.

Merged from https://code.launchpad.net/~jelmer/brz/python3-r/+merge/350430

Show diffs side-by-side

added added

removed removed

Lines of Context:
1099
1099
 
1100
1100
        :param serializer: A Serialiser like pack.ContainerSerializer.
1101
1101
        """
1102
 
        new_name = dict((k, v.encode('utf-8')) for k, v in
1103
 
                        viewitems(self._new_name))
1104
 
        new_executability = dict((k, int(v)) for k, v in
1105
 
                                 viewitems(self._new_executability))
1106
 
        tree_path_ids = dict((k.encode('utf-8'), v)
1107
 
                             for k, v in viewitems(self._tree_path_ids))
 
1102
        new_name = {k.encode('utf-8'): v.encode('utf-8')
 
1103
                    for k, v in viewitems(self._new_name)}
 
1104
        new_parent = {k.encode('utf-8'): v.encode('utf-8')
 
1105
                      for k, v in viewitems(self._new_parent)}
 
1106
        new_id = {k.encode('utf-8'): v
 
1107
                  for k, v in viewitems(self._new_id)}
 
1108
        new_executability = {k: int(v)
 
1109
                             for k, v in viewitems(self._new_executability)}
 
1110
        tree_path_ids = {k.encode('utf-8'): v.encode('utf-8')
 
1111
                         for k, v in viewitems(self._tree_path_ids)}
 
1112
        non_present_ids = {k: v.encode('utf-8')
 
1113
                           for k, v in viewitems(self._non_present_ids)}
 
1114
        removed_contents = [trans_id.encode('utf-8')
 
1115
                            for trans_id in self._removed_contents]
 
1116
        removed_id = [trans_id.encode('utf-8')
 
1117
                      for trans_id in self._removed_id]
1108
1118
        attribs = {
1109
1119
            b'_id_number': self._id_number,
1110
1120
            b'_new_name': new_name,
1111
 
            b'_new_parent': self._new_parent,
 
1121
            b'_new_parent': new_parent,
1112
1122
            b'_new_executability': new_executability,
1113
 
            b'_new_id': self._new_id,
 
1123
            b'_new_id': new_id,
1114
1124
            b'_tree_path_ids': tree_path_ids,
1115
 
            b'_removed_id': list(self._removed_id),
1116
 
            b'_removed_contents': list(self._removed_contents),
1117
 
            b'_non_present_ids': self._non_present_ids,
 
1125
            b'_removed_id': removed_id,
 
1126
            b'_removed_contents': removed_contents,
 
1127
            b'_non_present_ids': non_present_ids,
1118
1128
            }
1119
1129
        yield serializer.bytes_record(bencode.bencode(attribs),
1120
1130
                                      ((b'attribs',),))
1129
1139
                content = b''
1130
1140
            if kind == 'symlink':
1131
1141
                content = self._read_symlink_target(trans_id)
1132
 
            yield serializer.bytes_record(content, ((trans_id, kind),))
 
1142
                if not isinstance(content, bytes):
 
1143
                    content = content.encode('utf-8')
 
1144
            yield serializer.bytes_record(
 
1145
                    content, ((trans_id.encode('utf-8'), kind.encode('ascii')),))
1133
1146
 
1134
1147
    def deserialize(self, records):
1135
1148
        """Deserialize a stored TreeTransform.
1140
1153
        names, content = next(records)
1141
1154
        attribs = bencode.bdecode(content)
1142
1155
        self._id_number = attribs[b'_id_number']
1143
 
        self._new_name = dict((k, v.decode('utf-8'))
1144
 
                              for k, v in viewitems(attribs[b'_new_name']))
1145
 
        self._new_parent = attribs[b'_new_parent']
1146
 
        self._new_executability = dict((k, bool(v))
1147
 
            for k, v in viewitems(attribs[b'_new_executability']))
1148
 
        self._new_id = attribs[b'_new_id']
1149
 
        self._r_new_id = dict((v, k) for k, v in viewitems(self._new_id))
 
1156
        self._new_name = {k.decode('utf-8'): v.decode('utf-8')
 
1157
                          for k, v in viewitems(attribs[b'_new_name'])}
 
1158
        self._new_parent = {k.decode('utf-8'): v.decode('utf-8')
 
1159
                            for k, v in viewitems(attribs[b'_new_parent'])}
 
1160
        self._new_executability = {k: bool(v)
 
1161
            for k, v in viewitems(attribs[b'_new_executability'])}
 
1162
        self._new_id = {k.decode('utf-8'): v
 
1163
                        for k, v in viewitems(attribs[b'_new_id'])}
 
1164
        self._r_new_id = {v: k for k, v in viewitems(self._new_id)}
1150
1165
        self._tree_path_ids = {}
1151
1166
        self._tree_id_paths = {}
1152
1167
        for bytepath, trans_id in viewitems(attribs[b'_tree_path_ids']):
1153
1168
            path = bytepath.decode('utf-8')
 
1169
            trans_id = trans_id.decode('utf-8')
1154
1170
            self._tree_path_ids[path] = trans_id
1155
1171
            self._tree_id_paths[trans_id] = path
1156
 
        self._removed_id = set(attribs[b'_removed_id'])
1157
 
        self._removed_contents = set(attribs[b'_removed_contents'])
1158
 
        self._non_present_ids = attribs[b'_non_present_ids']
 
1172
        self._removed_id = {trans_id.decode('utf-8')
 
1173
                            for trans_id in attribs[b'_removed_id']}
 
1174
        self._removed_contents = set(trans_id.decode('utf-8')
 
1175
                                     for trans_id in attribs[b'_removed_contents'])
 
1176
        self._non_present_ids = {k: v.decode('utf-8')
 
1177
                                 for k, v in viewitems(attribs[b'_non_present_ids'])}
1159
1178
        for ((trans_id, kind),), content in records:
 
1179
            trans_id = trans_id.decode('utf-8')
 
1180
            kind = kind.decode('ascii')
1160
1181
            if kind == 'file':
1161
1182
                mpdiff = multiparent.MultiParent.from_patch(content)
1162
1183
                lines = mpdiff.to_lines(self._get_parents_texts(trans_id))
1686
1707
        self._limbo_children_names[parent][filename] = trans_id
1687
1708
        return limbo_name
1688
1709
 
1689
 
 
1690
1710
    def apply(self, no_conflicts=False, precomputed_delta=None, _mover=None):
1691
1711
        """Apply all changes to the inventory and filesystem.
1692
1712