diff --git a/attic/helpers.py b/attic/helpers.py index e8a0d8354..c5a7ca125 100644 --- a/attic/helpers.py +++ b/attic/helpers.py @@ -92,18 +92,17 @@ class Manifest: def prune_split(archives, pattern, n, skip=[]): - items = {} + last = None keep = [] - for a in archives: - key = to_localtime(a.ts).strftime(pattern) - items.setdefault(key, []) - items[key].append(a) - for key, values in sorted(items.items(), reverse=True): - if n: - values.sort(key=attrgetter('ts'), reverse=True) - if values[0] not in skip: - keep.append(values[0]) - n -= 1 + if n == 0: + return keep + for a in sorted(archives, key=attrgetter('ts'), reverse=True): + period = a.ts.strftime(pattern) + if period != last: + last = period + if a not in skip: + keep.append(a) + if len(keep) == n: break return keep