Hi all,

The docstring of np.full indicates that the result of the dtype is `np.array(fill_value).dtype`, as long as the keyword argument `dtype` itself is not set.  This is actually not the case: the current implementation always returns a float array when `dtype` is not set, see e.g.

In [1]: np.full(1, 1)
Out[1]: array([ 1.])

In [2]: np.full(1, None)
Out[2]: array([ nan])

In [3]: np.full(1, None).dtype
Out[3]: dtype('float64')

In [4]: np.array(None)
Out[4]: array(None, dtype=object)

The note about return value of the dtype was actually explicitly discussed in https://github.com/numpy/numpy/pull/2875 but the tests failed to cover the case where the `dtype` argument is not passed.

We could either change the docstring to match the current behavior, or fix the behavior to match what the docstring says (my preference).  @njsmith mentioned in https://github.com/numpy/numpy/issues/6366 that this may be acceptable as a bug fix, as "it's a very new function so there probably aren't many people relying on it" (it was introduced in 1.8).

I guess the options are:
- Fix the behavior outright and squeeze this in 1.10 as a bugfix (my preference).
- Emit a warning in 1.10, fix in 1.11.
- Do nothing for 1.10, warn in 1.11, fix in 1.12 (at that point the argument of `np.full` being a very new function starts becoming invalid...).
- Change the docstring.

Thoughts?

Antony