# HG changeset patch # User Pierre-Yves David # Date 2014-10-02 23:59:41 # Node ID e8832cf1abf697a86d6549b37621e2918807f8bd # Parent adc43967d4019d8814b940991604c51d0ba9ad2f abstractsmartset: add a default implementation for min and max This default implementation takes advantage of the fast iterator if available. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2248,11 +2248,19 @@ class abstractsmartset(object): def min(self): """return the minimum element in the set""" - raise NotImplementedError() + if self.fastasc is not None: + for r in self.fastasc(): + return r + raise ValueError('arg is an empty sequence') + return min(self) def max(self): """return the maximum element in the set""" - raise NotImplementedError() + if self.fastdesc is not None: + for r in self.fastdesc(): + return r + raise ValueError('arg is an empty sequence') + return max(self) def reverse(self): """reverse the expected iteration order"""