diff options
author | Eric Wieser <wieser.eric@gmail.com> | 2017-05-10 02:20:54 +0100 |
---|---|---|
committer | Eric Wieser <wieser.eric@gmail.com> | 2017-05-10 02:20:54 +0100 |
commit | 3cdcbe0f8402e795262341837afe39a279d9b888 (patch) | |
tree | 3d7829fa1dd237716563ab891498b08a59d3a87c /numpy/core/_internal.py | |
parent | 790dbcb6dde4259ec073444a3294975f304b6f49 (diff) | |
download | numpy-3cdcbe0f8402e795262341837afe39a279d9b888.tar.gz |
MAINT: Improve error message from sorting with duplicate key
Fixes #9082
Diffstat (limited to 'numpy/core/_internal.py')
-rw-r--r-- | numpy/core/_internal.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/numpy/core/_internal.py b/numpy/core/_internal.py index f7f579c75..3902d2f7d 100644 --- a/numpy/core/_internal.py +++ b/numpy/core/_internal.py @@ -281,20 +281,26 @@ class _ctypes(object): _as_parameter_ = property(get_as_parameter, None, doc="_as parameter_") -# Given a datatype and an order object -# return a new names tuple -# with the order indicated def _newnames(datatype, order): + """ + Given a datatype and an order object, return a new names tuple, with the + order indicated + """ oldnames = datatype.names nameslist = list(oldnames) if isinstance(order, str): order = [order] + seen = set() if isinstance(order, (list, tuple)): for name in order: try: nameslist.remove(name) except ValueError: - raise ValueError("unknown field name: %s" % (name,)) + if name in seen: + raise ValueError("duplicate field name: %s" % (name,)) + else: + raise ValueError("unknown field name: %s" % (name,)) + seen.add(name) return tuple(list(order) + nameslist) raise ValueError("unsupported order value: %s" % (order,)) |