12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- """
- Template for each `dtype` helper function using 1-d template
- WARNING: DO NOT edit .pxi FILE directly, .pxi is generated from .pxi.in
- """
- # ----------------------------------------------------------------------
- # ensure_dtype
- # ----------------------------------------------------------------------
- def ensure_platform_int(object arr):
- # GH3033, GH1392
- # platform int is the size of the int pointer, e.g. np.intp
- if util.is_array(arr):
- if (<ndarray>arr).descr.type_num == cnp.NPY_INTP:
- return arr
- else:
- # equiv: arr.astype(np.intp)
- return cnp.PyArray_Cast(<ndarray>arr, cnp.NPY_INTP)
- else:
- return np.array(arr, dtype=np.intp)
- def ensure_object(object arr):
- if util.is_array(arr):
- if (<ndarray>arr).descr.type_num == NPY_OBJECT:
- return arr
- else:
- # equiv: arr.astype(object)
- return cnp.PyArray_Cast(<ndarray>arr, NPY_OBJECT)
- else:
- return np.array(arr, dtype=np.object_)
- {{py:
- # name, c_type, dtype
- dtypes = [('float64', 'FLOAT64', 'float64'),
- # ('float32', 'FLOAT32', 'float32'), # disabling bc unused
- ('int8', 'INT8', 'int8'),
- ('int16', 'INT16', 'int16'),
- ('int32', 'INT32', 'int32'),
- ('int64', 'INT64', 'int64'),
- ('uint64', 'UINT64', 'uint64'),
- # Disabling uint and complex dtypes because we do not use them
- # (and compiling them increases wheel size) (except uint64)
- # ('uint8', 'UINT8', 'uint8'),
- # ('uint16', 'UINT16', 'uint16'),
- # ('uint32', 'UINT32', 'uint32'),
- # ('complex64', 'COMPLEX64', 'complex64'),
- # ('complex128', 'COMPLEX128', 'complex128')
- ]
- def get_dispatch(dtypes):
- for name, c_type, dtype in dtypes:
- yield name, c_type, dtype
- }}
- {{for name, c_type, dtype in get_dispatch(dtypes)}}
- def ensure_{{name}}(object arr):
- if util.is_array(arr):
- if (<ndarray>arr).descr.type_num == NPY_{{c_type}}:
- return arr
- else:
- # equiv: arr.astype(np.{{dtype}})
- return cnp.PyArray_Cast(<ndarray>arr, cnp.NPY_{{c_type}})
- else:
- return np.asarray(arr, dtype=np.{{dtype}})
- {{endfor}}
|