From 4cc58e281fec3638ca6672475e9e0175b0793047 Mon Sep 17 00:00:00 2001 From: Seth Morton Date: Sat, 30 Oct 2021 21:32:38 -0700 Subject: [PATCH] Actually do overloads correctly Originally I did not realize that it was possible to put the keyword arguments in an overload, so I ended up doing way more overload definitions than needed. --- natsort/natsort.py | 194 ++++++++++++++++----------------------------- 1 file changed, 68 insertions(+), 126 deletions(-) diff --git a/natsort/natsort.py b/natsort/natsort.py index e3a6b95..a95f9a9 100644 --- a/natsort/natsort.py +++ b/natsort/natsort.py @@ -253,62 +253,16 @@ def natsort_keygen( @overload -def natsorted(seq: Iter_ns) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, *, reverse: bool) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, *, alg: NSType) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, *, reverse: bool, alg: NSType) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, key: None) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, key: None, reverse: bool) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, key: None, *, alg: NSType) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_ns, key: None, reverse: bool, alg: NSType) -> List_ns: - ... - - -@overload -def natsorted(seq: Iter_any, key: KeyType) -> List_any: - ... - - -@overload -def natsorted(seq: Iter_any, key: KeyType, reverse: bool) -> List_any: - ... - - -@overload -def natsorted(seq: Iter_any, key: KeyType, *, alg: NSType) -> List_any: +def natsorted( + seq: Iter_ns, key: None = None, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_ns: ... @overload -def natsorted(seq: Iter_any, key: KeyType, reverse: bool, alg: NSType) -> List_any: +def natsorted( + seq: Iter_any, key: KeyType, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_any: ... @@ -365,6 +319,20 @@ def natsorted( return sorted(seq, reverse=reverse, key=natsort_keygen(key, alg)) +@overload +def humansorted( + seq: Iter_ns, key: None = None, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_ns: + ... + + +@overload +def humansorted( + seq: Iter_any, key: KeyType, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_any: + ... + + def humansorted( seq: Iter_any, key: MaybeKeyType = None, @@ -422,6 +390,20 @@ def humansorted( return natsorted(seq, key, reverse, alg | ns.LOCALE) +@overload +def realsorted( + seq: Iter_ns, key: None = None, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_ns: + ... + + +@overload +def realsorted( + seq: Iter_any, key: KeyType, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_any: + ... + + def realsorted( seq: Iter_any, key: MaybeKeyType = None, @@ -481,63 +463,15 @@ def realsorted( @overload -def index_natsorted(seq: Iter_ns) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, *, reverse: bool) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, *, alg: NSType) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, *, reverse: bool, alg: NSType) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, key: None) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, key: None, reverse: bool) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, key: None, *, alg: NSType) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_ns, key: None, reverse: bool, alg: NSType) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_any, key: KeyType) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_any, key: KeyType, reverse: bool) -> List_int: - ... - - -@overload -def index_natsorted(seq: Iter_any, key: KeyType, *, alg: NSType) -> List_int: +def index_natsorted( + seq: Iter_ns, key: None = None, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_int: ... @overload def index_natsorted( - seq: Iter_any, key: KeyType, reverse: bool, alg: NSType + seq: Iter_any, key: KeyType, reverse: bool = False, alg: NSType = ns.DEFAULT ) -> List_int: ... @@ -617,6 +551,20 @@ def newkey(x: Any) -> NatsortInType: return [x for x, _ in index_seq_pair] +@overload +def index_humansorted( + seq: Iter_ns, key: None = None, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_int: + ... + + +@overload +def index_humansorted( + seq: Iter_any, key: KeyType, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_int: + ... + + def index_humansorted( seq: Iter_any, key: MaybeKeyType = None, @@ -671,6 +619,20 @@ def index_humansorted( return index_natsorted(seq, key, reverse, alg | ns.LOCALE) +@overload +def index_realsorted( + seq: Iter_ns, key: None = None, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_int: + ... + + +@overload +def index_realsorted( + seq: Iter_any, key: KeyType, reverse: bool = False, alg: NSType = ns.DEFAULT +) -> List_int: + ... + + def index_realsorted( seq: Iter_any, key: MaybeKeyType = None, @@ -897,32 +859,12 @@ def os_sort_keygen(key: MaybeKeyType = None) -> OSSortKeyType: @overload -def os_sorted(seq: Iter_path) -> List_path: - ... - - -@overload -def os_sorted(seq: Iter_path, *, reverse: bool) -> List_path: - ... - - -@overload -def os_sorted(seq: Iter_path, key: None) -> List_path: - ... - - -@overload -def os_sorted(seq: Iter_path, key: None, reverse: bool) -> List_path: - ... - - -@overload -def os_sorted(seq: Iter_any, key: KeyType) -> List_any: +def os_sorted(seq: Iter_path, key: None = None, reverse: bool = False) -> List_path: ... @overload -def os_sorted(seq: Iter_any, key: KeyType, reverse: bool) -> List_any: +def os_sorted(seq: Iter_any, key: KeyType, reverse: bool = False) -> List_any: ...