~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-06-09 10:04:04 UTC
  • mfrom: (1755.1.3 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060609100404-a45cd70353a09a67
(robertc, ab)Merge some commit and fetch tuning steps.

Show diffs side-by-side

added added

removed removed

Lines of Context:
842
842
        self.revision_id = revision_id
843
843
        self._byid = {self.root.file_id: self.root}
844
844
 
845
 
 
846
845
    def copy(self):
847
846
        # TODO: jam 20051218 Should copy also copy the revision_id?
848
847
        other = Inventory(self.root.file_id)
854
853
            other.add(entry.copy())
855
854
        return other
856
855
 
857
 
 
858
856
    def __iter__(self):
859
857
        return iter(self._byid)
860
858
 
861
 
 
862
859
    def __len__(self):
863
860
        """Returns number of entries."""
864
861
        return len(self._byid)
865
862
 
866
 
 
867
863
    def iter_entries(self, from_dir=None):
868
864
        """Return (path, entry) pairs, in order by name."""
869
865
        if from_dir is None:
957
953
        descend(self.root, u'')
958
954
        return accum
959
955
 
960
 
 
961
956
    def directories(self):
962
957
        """Return (path, entry) pairs for all directories, including the root.
963
958
        """
974
969
        descend(self.root, u'')
975
970
        return accum
976
971
        
977
 
 
978
 
 
979
972
    def __contains__(self, file_id):
980
973
        """True if this entry contains a file with given id.
981
974
 
989
982
        """
990
983
        return file_id in self._byid
991
984
 
992
 
 
993
985
    def __getitem__(self, file_id):
994
986
        """Return the entry for given file_id.
995
987
 
1007
999
            else:
1008
1000
                raise BzrError("file_id {%s} not in inventory" % file_id)
1009
1001
 
1010
 
 
1011
1002
    def get_file_kind(self, file_id):
1012
1003
        return self._byid[file_id].kind
1013
1004
 
1014
1005
    def get_child(self, parent_id, filename):
1015
1006
        return self[parent_id].children.get(filename)
1016
1007
 
1017
 
 
1018
1008
    def add(self, entry):
1019
1009
        """Add entry to inventory.
1020
1010
 
1042
1032
        parent.children[entry.name] = entry
1043
1033
        return entry
1044
1034
 
1045
 
 
1046
1035
    def add_path(self, relpath, kind, file_id=None, parent_id=None):
1047
1036
        """Add entry from a path.
1048
1037
 
1087
1076
        if ie.parent_id is not None:
1088
1077
            del self[ie.parent_id].children[ie.name]
1089
1078
 
1090
 
 
1091
1079
    def __eq__(self, other):
1092
1080
        """Compare two sets by comparing their contents.
1093
1081
 
1113
1101
 
1114
1102
        return self._byid == other._byid
1115
1103
 
1116
 
 
1117
1104
    def __ne__(self, other):
1118
1105
        return not self.__eq__(other)
1119
1106
 
1120
 
 
1121
1107
    def __hash__(self):
1122
1108
        raise ValueError('not hashable')
1123
1109
 
1187
1173
 
1188
1174
        return parent.file_id
1189
1175
 
1190
 
 
1191
1176
    def has_filename(self, names):
1192
1177
        return bool(self.path2id(names))
1193
1178
 
1194
 
 
1195
1179
    def has_id(self, file_id):
1196
1180
        return self._byid.has_key(file_id)
1197
1181
 
1198
 
 
1199
1182
    def rename(self, file_id, new_parent_id, new_name):
1200
1183
        """Move a file within the inventory.
1201
1184