diff --git a/kallithea/lib/vcs/backends/base.py b/kallithea/lib/vcs/backends/base.py --- a/kallithea/lib/vcs/backends/base.py +++ b/kallithea/lib/vcs/backends/base.py @@ -169,14 +169,9 @@ class BaseRepository(object): """ raise NotImplementedError - def __getslice__(self, i, j): - """ - Returns a iterator of sliced repository - """ - for rev in self.revisions[i:j]: - yield self.get_changeset(rev) - def __getitem__(self, key): + if isinstance(key, slice): + return (self.get_changeset(rev) for rev in self.revisions[key]) return self.get_changeset(key) def count(self): diff --git a/kallithea/lib/vcs/nodes.py b/kallithea/lib/vcs/nodes.py --- a/kallithea/lib/vcs/nodes.py +++ b/kallithea/lib/vcs/nodes.py @@ -48,8 +48,9 @@ class NodeGeneratorBase(object): def __call__(self): return [n for n in self] - def __getslice__(self, i, j): - for p in self.current_paths[i:j]: + def __getitem__(self, key): + assert isinstance(key, slice), key + for p in self.current_paths[key]: yield self.cs.get_node(p) def __len__(self): @@ -82,8 +83,9 @@ class RemovedFileNodesGenerator(NodeGene for p in self.current_paths: yield RemovedFileNode(path=p) - def __getslice__(self, i, j): - for p in self.current_paths[i:j]: + def __getitem__(self, key): + assert isinstance(key, slice), key + for p in self.current_paths[key]: yield RemovedFileNode(path=p)