diff options
author | ahaldane <ealloc@gmail.com> | 2017-05-10 21:03:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-10 21:03:20 -0400 |
commit | 81728dc0bd862b8cd0b2dfec05afdea9dca419a5 (patch) | |
tree | c62be4313d446c817de1fa08fe22d655ca6eafb4 /numpy/core/_internal.py | |
parent | 22ccc378253c3c2beefc603a2e0bccc5a3a9e1d1 (diff) | |
parent | 3cdcbe0f8402e795262341837afe39a279d9b888 (diff) | |
download | numpy-81728dc0bd862b8cd0b2dfec05afdea9dca419a5.tar.gz |
Merge pull request #9083 from eric-wieser/fix-duplicate-order-error
MAINT: Improve error message from sorting with duplicate key
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 9c46b3297..163145cdd 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,)) |