diff options
author | Eric Wieser <wieser.eric@gmail.com> | 2017-03-30 20:04:41 +0100 |
---|---|---|
committer | Eric Wieser <wieser.eric@gmail.com> | 2017-04-06 11:21:34 +0100 |
commit | de0f5dcf501b29b173911b72c6e1488c4e573935 (patch) | |
tree | d10813145b8968d5384038df46af408b4521bc9b | |
parent | aa746c68d092022df0952e43b29ca4abe092d03b (diff) | |
download | numpy-de0f5dcf501b29b173911b72c6e1488c4e573935.tar.gz |
BUG: Use the same default ufunc name in all places
Previously the ufunc methods would use "(unknown)", but the basic __call__
would use "<unknown ufunc>"
-rw-r--r-- | numpy/core/src/umath/ufunc_object.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/numpy/core/src/umath/ufunc_object.c b/numpy/core/src/umath/ufunc_object.c index 22a73e6ba..33d65b5bc 100644 --- a/numpy/core/src/umath/ufunc_object.c +++ b/numpy/core/src/umath/ufunc_object.c @@ -757,6 +757,15 @@ _set_out_array(PyObject *obj, PyArrayObject **store) /********* GENERIC UFUNC USING ITERATOR *********/ /* + * Produce a name for the ufunc, if one is not already set + * This is used in the PyUFunc_handlefperr machinery, and in error messages + */ +static const char* +_get_ufunc_name(PyUFuncObject *ufunc) { + return ufunc->name ? ufunc->name : "<unnamed ufunc>"; +} + +/* * Parses the positional and keyword arguments for a generic ufunc call. * * Note that if an error is returned, the caller must free the @@ -779,14 +788,12 @@ get_ufunc_arguments(PyUFuncObject *ufunc, int nout = ufunc->nout; PyObject *obj, *context; PyObject *str_key_obj = NULL; - const char *ufunc_name; + const char *ufunc_name = _get_ufunc_name(ufunc); int type_num; int any_flexible = 0, any_object = 0, any_flexible_userloops = 0; int has_sig = 0; - ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>"; - *out_extobj = NULL; *out_typetup = NULL; if (out_wheremask != NULL) { @@ -2037,7 +2044,7 @@ PyUFunc_GeneralizedFunction(PyUFuncObject *ufunc, nout = ufunc->nout; nop = nin + nout; - ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>"; + ufunc_name = _get_ufunc_name(ufunc); NPY_UF_DBG_PRINT1("\nEvaluating ufunc %s\n", ufunc_name); @@ -2598,7 +2605,7 @@ PyUFunc_GenericFunction(PyUFuncObject *ufunc, nout = ufunc->nout; nop = nin + nout; - ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>"; + ufunc_name = _get_ufunc_name(ufunc); NPY_UF_DBG_PRINT1("\nEvaluating ufunc %s\n", ufunc_name); @@ -2838,7 +2845,7 @@ reduce_type_resolver(PyUFuncObject *ufunc, PyArrayObject *arr, int i, retcode; PyArrayObject *op[3] = {arr, arr, NULL}; PyArray_Descr *dtypes[3] = {NULL, NULL, NULL}; - const char *ufunc_name = ufunc->name ? ufunc->name : "(unknown)"; + const char *ufunc_name = _get_ufunc_name(ufunc); PyObject *type_tup = NULL; *out_dtype = NULL; @@ -3027,7 +3034,7 @@ PyUFunc_Reduce(PyUFuncObject *ufunc, PyArrayObject *arr, PyArrayObject *out, PyArray_Descr *dtype; PyArrayObject *result; PyArray_AssignReduceIdentityFunc *assign_identity = NULL; - const char *ufunc_name = ufunc->name ? ufunc->name : "(unknown)"; + const char *ufunc_name = _get_ufunc_name(ufunc); /* These parameters come from a TLS global */ int buffersize = 0, errormask = 0; @@ -3135,7 +3142,7 @@ PyUFunc_Accumulate(PyUFuncObject *ufunc, PyArrayObject *arr, PyArrayObject *out, PyUFuncGenericFunction innerloop = NULL; void *innerloopdata = NULL; - const char *ufunc_name = ufunc->name ? ufunc->name : "(unknown)"; + const char *ufunc_name = _get_ufunc_name(ufunc); /* These parameters come from extobj= or from a TLS global */ int buffersize = 0, errormask = 0; @@ -3510,7 +3517,7 @@ PyUFunc_Reduceat(PyUFuncObject *ufunc, PyArrayObject *arr, PyArrayObject *ind, PyUFuncGenericFunction innerloop = NULL; void *innerloopdata = NULL; - const char *ufunc_name = ufunc->name ? ufunc->name : "(unknown)"; + const char *ufunc_name = _get_ufunc_name(ufunc); char *opname = "reduceat"; /* These parameters come from extobj= or from a TLS global */ |