Comments
Patch
@@ -283,6 +283,8 @@
[
(r'\blist\(repo\)',
"use _safesubset(repo) as subset instead of list(repo) in revset"),
+ (r'\bset\(subset\)',
+ "use _ensureset(subset) instead of set(suset) in revset"),
],
# warnings
[]
@@ -218,6 +218,11 @@
def __contains__(self, key):
return key in self._o
+def _ensureset(subset):
+ if not isinstance(subset, (set, _safesubset)):
+ return set(subset) # check-code-ignore
+ return subset
+
# operator methods
def stringset(repo, subset, x):
@@ -246,14 +251,14 @@
r = range(m, n + 1)
else:
r = range(m, n - 1, -1)
- s = set(subset)
+ s = _ensureset(subset)
return [x for x in r if x in s]
def dagrange(repo, subset, x, y):
if subset:
r = _safesubset(repo)
xs = _revsbetween(repo, getset(repo, r, x), getset(repo, r, y))
- s = set(subset)
+ s = _ensureset(subset)
return [r for r in xs if r in s]
return []
@@ -943,7 +948,7 @@
except (TypeError, ValueError):
# i18n: "limit" is a keyword
raise error.ParseError(_("limit expects a number"))
- ss = set(subset)
+ ss = _ensureset(subset)
os = getset(repo, _safesubset(repo), l[0])[:lim]
return [r for r in os if r in ss]
@@ -961,7 +966,7 @@
except (TypeError, ValueError):
# i18n: "last" is a keyword
raise error.ParseError(_("last expects a number"))
- ss = set(subset)
+ ss = _ensureset(subset)
os = getset(repo, _safesubset(repo), l[0])[-lim:]
return [r for r in os if r in ss]
@@ -1542,8 +1547,7 @@
s = getstring(x, "internal error")
if not s:
return []
- if not isinstance(subset, set):
- subset = set(subset)
+ subset = _ensureset(subset)
ls = [repo[r].rev() for r in s.split('\0')]
return [r for r in ls if r in subset]