summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth M Morton <seth.m.morton@gmail.com>2016-05-02 22:38:32 -0700
committerSeth M Morton <seth.m.morton@gmail.com>2016-05-02 23:01:46 -0700
commitbdc83f4e30e479507e17b5fccf225f0c093c9c0e (patch)
tree68e6c03724abf29c8bf840a0a68ea25fb55a2db3
parentd3a9c463353fb4dc2404a7eebdd676f9c56aae3d (diff)
downloadnatsort-bdc83f4e30e479507e17b5fccf225f0c093c9c0e.tar.gz
Cleaned some of the top-level functions.
The main sorting functions had some code to handle TYPECAFE addition. This is no longer needed since TYPESAFE is default. Further, calls to _kwargs_to_alg are pushed to natsort_keygen.
-rw-r--r--natsort/natsort.py33
1 files changed, 4 insertions, 29 deletions
diff --git a/natsort/natsort.py b/natsort/natsort.py
index b69021a..419b876 100644
--- a/natsort/natsort.py
+++ b/natsort/natsort.py
@@ -235,21 +235,8 @@ def natsorted(seq, key=None, reverse=False, alg=0, **_kwargs):
[{u}'num2', {u}'num3', {u}'num5']
"""
- alg = _args_to_enum(**_kwargs) | alg
- try:
- return sorted(seq, reverse=reverse, key=natsort_keygen(key, alg=alg))
- except TypeError as e: # pragma: no cover
- # In the event of an unresolved "unorderable types" error
- # for string to number type comparisons (not str/bytes),
- # attempt to sort again, being careful to prevent this error.
- r = re.compile(r'(?:str|bytes)\(\) [<>] (?:str|bytes)\(\)')
- if 'unorderable types' in str(e) and not r.search(str(e)):
- return sorted(seq, reverse=reverse,
- key=natsort_keygen(key,
- alg=alg | ns.TYPESAFE))
- else:
- # Re-raise if the problem was not "unorderable types"
- raise
+ natsort_key = natsort_keygen(key, alg, **_kwargs)
+ return sorted(seq, reverse=reverse, key=natsort_key)
@u_format
@@ -463,7 +450,6 @@ def index_natsorted(seq, key=None, reverse=False, alg=0, **_kwargs):
[{u}'baz', {u}'foo', {u}'bar']
"""
- alg = _args_to_enum(**_kwargs) | alg
if key is None:
newkey = itemgetter(1)
else:
@@ -471,19 +457,8 @@ def index_natsorted(seq, key=None, reverse=False, alg=0, **_kwargs):
return key(itemgetter(1)(x))
# Pair the index and sequence together, then sort by element
index_seq_pair = [[x, y] for x, y in enumerate(seq)]
- try:
- index_seq_pair.sort(reverse=reverse,
- key=natsort_keygen(newkey, alg=alg))
- except TypeError as e: # pragma: no cover
- # In the event of an unresolved "unorderable types" error
- # attempt to sort again, being careful to prevent this error.
- if 'unorderable types' in str(e):
- index_seq_pair.sort(reverse=reverse,
- key=natsort_keygen(newkey,
- alg=alg | ns.TYPESAFE))
- else:
- # Re-raise if the problem was not "unorderable types"
- raise
+ index_seq_pair.sort(reverse=reverse,
+ key=natsort_keygen(newkey, alg, **_kwargs))
return [x for x, _ in index_seq_pair]