in curator/indexlist.py [0:0]
def _sort_by_age(self, index_list, reverse=True):
"""
Take a list of indices and sort them by date.
By default, the youngest are first with ``reverse=True``, but the oldest
can be first by setting ``reverse=False``
"""
# Do the age-based sorting here.
# Build an temporary dictionary with just index and age as the key and
# value, respectively
temp = {}
for index in index_list:
try:
if self.index_info[index]['age'][self.age_keyfield]:
temp[index] = self.index_info[index]['age'][self.age_keyfield]
else:
msg = (
f'No date for "{index}" in IndexList metadata. '
f'Possible timestring mismatch. Excluding index "{index}".'
)
self.__excludify(True, True, index, msg)
except KeyError:
msg = (
f'{index} does not have key "{self.age_keyfield}" in IndexList '
f'metadata'
)
self.__excludify(True, True, index, msg)
# Sort alphabetically prior to age sort to keep sorting consistent
temp_tuple = sorted(temp.items(), key=lambda k: k[0], reverse=reverse)
# If reverse is True, this will sort so the youngest indices are first.
# However, if you want oldest first, set reverse to False.
# Effectively, this should set us up to act on everything older than
# meets the other set criteria. It starts as a tuple, but then becomes a list.
sorted_tuple = sorted(temp_tuple, key=lambda k: k[1], reverse=reverse)
return [x[0] for x in sorted_tuple]