mirror of
https://github.com/meeb/tubesync.git
synced 2025-06-21 04:26:36 +00:00
Upgrade multi_key_sort
Use the Python 3.8 argument list. Accept `key_func` to allow customization.
This commit is contained in:
parent
b535f1324e
commit
c090453931
@ -2,7 +2,7 @@ import os
|
|||||||
import re
|
import re
|
||||||
import math
|
import math
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from operator import itemgetter
|
from operator import attrgetter, itemgetter
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from tempfile import NamedTemporaryFile
|
from tempfile import NamedTemporaryFile
|
||||||
import requests
|
import requests
|
||||||
@ -179,10 +179,16 @@ def seconds_to_timestr(seconds):
|
|||||||
return '{:02d}:{:02d}:{:02d}'.format(hour, minutes, seconds)
|
return '{:02d}:{:02d}:{:02d}'.format(hour, minutes, seconds)
|
||||||
|
|
||||||
|
|
||||||
def multi_key_sort(sort_dict, specs, use_reversed=False):
|
def multi_key_sort(iterable, specs, /, use_reversed=False, *, item=False, attr=False, key_func=None):
|
||||||
result = list(sort_dict)
|
result = list(iterable)
|
||||||
|
if key_func is None:
|
||||||
|
# itemgetter is the default
|
||||||
|
if item or not (item or attr):
|
||||||
|
key_func = itemgetter
|
||||||
|
elif attr:
|
||||||
|
key_func = attrgetter
|
||||||
for key, reverse in reversed(specs):
|
for key, reverse in reversed(specs):
|
||||||
result = sorted(result, key=itemgetter(key), reverse=reverse)
|
result.sort(key=key_func(key), reverse=reverse)
|
||||||
if use_reversed:
|
if use_reversed:
|
||||||
return list(reversed(result))
|
return list(reversed(result))
|
||||||
return result
|
return result
|
||||||
|
Loading…
Reference in New Issue
Block a user