8000 API: Update `lib.function_base` namespace by mtsokol · Pull Request #24538 · numpy/numpy · GitHub
[go: up one dir, main page]

Skip to content

API: Update lib.function_base namespace #24538

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 25 additions & 20 deletions numpy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,30 +183,27 @@

from . import lib
from .lib import (
DataSource, angle, append, apply_along_axis, apply_over_axes,
array_split, asarray_chkfinite, average, bartlett,
bincount, blackman, broadcast_arrays, broadcast_shapes,
DataSource, apply_along_axis, apply_over_axes,
array_split, broadcast_arrays, broadcast_shapes,
broadcast_to, byte_bounds, c_, column_stack, common_type,
copy, corrcoef, cov, delete, diag, diag_indices,
diag_indices_from, diagflat, diff, digitize, dsplit, dstack,
ediff1d, emath, expand_dims, extract, eye, fill_diagonal, fix,
flip, fliplr, flipud, fromregex, get_array_wrap, genfromtxt,
get_include, gradient, hamming, hanning, histogram2d,
hsplit, i0, imag, in1d,
index_exp, info, insert, interp, intersect1d, iscomplex,
diag, diag_indices,
diag_indices_from, diagflat, dsplit, dstack,
ediff1d, emath, expand_dims, eye, fill_diagonal, fix,
fliplr, flipud, fromregex, get_array_wrap, genfromtxt,
get_include, histogram2d,
hsplit, imag, in1d, index_exp, info, intersect1d, iscomplex,
iscomplexobj, isin, isneginf, isreal, isrealobj,
iterable, ix_, kaiser, kron, load, loadtxt, mask_indices,
median, meshgrid, mgrid, mintypecode, nan_to_num,
ndenumerate, ndindex, ogrid, packbits, pad,
percentile, piecewise, place, poly, poly1d, polyadd, polyder,
ix_, kron, load, loadtxt, mask_indices,
mgrid, mintypecode, nan_to_num, ndenumerate, ndindex, ogrid,
packbits, pad, poly, poly1d, polyadd, polyder,
polydiv, polyfit, polyint, polymul, polysub, polyval,
put_along_axis, quantile, r_, ravel_multi_index, real, real_if_close,
roots, rot90, row_stack, s_, save, savetxt, savez, savez_compressed,
select, setdiff1d, setxor1d, show_runtime, sinc, sort_complex, split,
take_along_axis, tile, trapz, tri, tril,
put_along_axis, r_, ravel_multi_index, real, real_if_close,
roots, row_stack, s_, save, savetxt, savez, savez_compressed,
setdiff1d, setxor1d, show_runtime, split,
take_along_axis, tile, tri, tril,
tril_indices, tril_indices_from, typename, union1d, unique, unpackbits,
unravel_index, unwrap, vander, vectorize, vsplit, trim_zeros,
triu, triu_indices, triu_indices_from, isposinf
unravel_index, vander, vsplit, triu, triu_indices, triu_indices_from,
isposinf
)
from .lib._histograms_impl import (
histogram, histogram_bin_edges, histogramdd
Expand All @@ -216,6 +213,13 @@
nanmedian, nanmin, nanpercentile, nanprod, nanquantile, nanstd,
nansum, nanvar
)
from .lib._function_base_impl import (
select, piecewise, trim_zeros, copy, iterable, percentile, diff,
gradient, angle, unwrap, sort_complex, flip, rot90, extract, place,
vectorize, asarray_chkfinite, average, bincount, digitize, cov,
corrcoef, median, sinc, hamming, hanning, bartlett, blackman,
kaiser, trapz, i0, meshgrid, delete, insert, append, interp, quantile
)
from . import matrixlib as _mat
from .matrixlib import (
asmatrix, bmat, matrix
Expand Down Expand Up @@ -278,6 +282,7 @@
__numpy_submodules__ | set(core.__all__) | set(lib.__all__) |
set(_mat.__all__) | set(lib._histograms_impl.__all__) |
set(lib._nanfunctions_impl.__all__) |
set(lib._function_base_impl.__all__) |
{"show_config", "__version__"}
)

Expand Down
2 changes: 1 addition & 1 deletion numpy/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ from numpy.lib.arraysetops import (
isin as isin,
)

from numpy.lib.function_base import (
from numpy.lib._function_base_impl import (
select as select,
piecewise as piecewise,
trim_zeros as trim_zeros,
Expand Down
1 change: 1 addition & 0 deletions numpy/_expired_attrs_2_0.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,5 @@
"recfromtxt": "Use `np.genfromtxt` instead.",
"deprecate": "Raise `DeprecationWarning` instead.",
"deprecate_with_doc": "Raise `DeprecationWarning` instead.",
"disp": "Use your own printing function instead.",
}
2 changes: 1 addition & 1 deletion numpy/core/tests/test_deprecations.py
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@ class TestLibImports(_DeprecationTestCase):
def test_lib_functions_deprecation_call(self):
from numpy.lib.utils import safe_eval
from numpy.lib.npyio import recfromcsv, recfromtxt
from numpy.lib.function_base import disp
from numpy.lib._function_base_impl import disp
from numpy.lib.shape_base import get_array_wrap
from numpy.core.numerictypes import maximum_sctype
from numpy.lib.tests.test_io import TextIO
Expand Down
5 changes: 1 addition & 4 deletions numpy/lib/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
# load module names. See https://github.com/networkx/networkx/issues/5838
from . import type_check
from . import index_tricks
from . import function_base
from . import _nanfunctions_impl
from . import _function_base_impl
from . import shape_base
from . import stride_tricks
from . import twodim_base
Expand All @@ -38,7 +38,6 @@

from .type_check import *
from .index_tricks import *
from .function_base import *
from .shape_base import *
from .stride_tricks import *
from .twodim_base import *
Expand All @@ -52,12 +51,10 @@
from .arraypad import *
from ._version import *
from numpy.core._multiarray_umath import tracemalloc_domain
from .function_base import add_newdoc, add_docstring

__all__ = ['emath']
__all__ += type_check.__all__
__all__ += index_tricks.__all__
__all__ += function_base.__all__
__all__ += shape_base.__all__
__all__ += stride_tricks.__all__
__all__ += twodim_base.__all__
Expand Down
43 changes: 0 additions & 43 deletions numpy/lib/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -40,49 +40,6 @@ from numpy.lib.arrayterator import (
Arrayterator as Arrayterator,
)

from numpy.lib.function_base import (
select as select,
piecewise as piecewise,
trim_zeros as trim_zeros,
copy as copy,
iterable as iterable,
percentile as percentile,
diff as diff,
gradient as gradient,
angle as angle,
unwrap as unwrap,
sort_complex as sort_complex,
disp as disp,
flip as flip,
rot90 as rot90,
extract as extract,
place as place,
vectorize as vectorize,
asarray_chkfinite as asarray_chkfinite,
average as average,
bincount as bincount,
digitize as digitize,
cov as cov,
corrcoef as corrcoef,
median as median,
sinc as sinc,
hamming as hamming,
hanning as hanning,
bartlett as bartlett,
blackman as blackman,
kaiser as kaiser,
trapz as trapz,
i0 as i0,
add_newdoc as add_newdoc,
add_docstring as add_docstring,
meshgrid as meshgrid,
delete as delete,
insert as insert,
append as append,
interp as interp,
quantile as quantile,
)

from numpy.lib.index_tricks import (
ravel_multi_index as ravel_multi_index,
unravel_index as unravel_index,
Expand Down
File renamed without changes.
File renamed without changes.
34 changes: 17 additions & 17 deletions numpy/lib/_nanfunctions_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import functools
import warnings
import numpy as np
from numpy.lib import function_base
from numpy.lib import _function_base_impl as fnb
from numpy.core import overrides


Expand Down Expand Up @@ -1213,9 +1213,9 @@ def nanmedian(a, axis=None, out=None, overwrite_input=False, keepdims=np._NoValu
if a.size == 0:
return np.nanmean(a, axis, out=out, keepdims=keepdims)

return function_base._ureduce(a, func=_nanmedian, keepdims=keepdims,
axis=axis, out=out,
overwrite_input=overwrite_input)
return fnb._ureduce(a, func=_nanmedian, keepdims=keepdims,
axis=axis, out=out,
overwrite_input=overwrite_input)


def _nanpercentile_dispatcher(
Expand Down Expand Up @@ -1368,7 +1368,7 @@ def nanpercentile(

"""
if interpolation is not None:
method = function_base._check_interpolation_as_method(
method = fnb._check_interpolation_as_method(
method, interpolation, "nanpercentile")

a = np.asanyarray(a)
Expand All @@ -1378,7 +1378,7 @@ def nanpercentile(
q = np.true_divide(q, 100.0)
# undo any decay that the ufunc performed (see gh-13105)
q = np.asanyarray(q)
if not function_base._quantile_is_valid(q):
if not fnb._quantile_is_valid(q):
raise ValueError("Percentiles must be in the range [0, 100]")
return _nanquantile_unchecked(
a, q, axis, out, overwrite_input, method, keepdims)
Expand Down Expand Up @@ -1531,15 +1531,15 @@ def nanquantile(
"""

if interpolation is not None:
method = function_base._check_interpolation_as_method(
method = fnb._check_interpolation_as_method(
method, interpolation, "nanquantile")

a = np.asanyarray(a)
if a.dtype.kind == "c":
raise TypeError("a must be an array of real numbers")

q = np.asanyarray(q)
if not function_base._quantile_is_valid(q):
if not fnb._quantile_is_valid(q):
raise ValueError("Quantiles must be in the range [0, 1]")
return _nanquantile_unchecked(
a, q, axis, out, overwrite_input, method, keepdims)
Expand All @@ -1559,14 +1559,14 @@ def _nanquantile_unchecked(
# so deal them upfront
if a.size == 0:
return np.nanmean(a, axis, out=out, keepdims=keepdims)
return function_base._ureduce(a,
func=_nanquantile_ureduce_func,
q=q,
keepdims=keepdims,
axis=axis,
out=out,
overwrite_input=overwrite_input,
method=method)
return fnb._ureduce(a,
func=_nanquantile_ureduce_func,
q=q,
keepdims=keepdims,
axis=axis,
out=out,
overwrite_input=overwrite_input,
method=method)


def _nanquantile_ureduce_func(a, q, axis=None, out=None, overwrite_input=False,
Expand Down Expand Up @@ -1604,7 +1604,7 @@ def _nanquantile_1d(arr1d, q, overwrite_input=False, method="linear"):
# convert to scalar
return np.full(q.shape, np.nan, dtype=arr1d.dtype)[()]

return function_base._quantile_unchecked(
return fnb._quantile_unchecked(
arr1d, q, overwrite_input=overwrite_input, method=method)


Expand Down
2 changes: 1 addition & 1 deletion numpy/lib/_nanfunctions_impl.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ from numpy.core.fromnumeric import (
std
)

from numpy.lib.function_base import (
from numpy.lib._function_base_impl import (
median,
percentile,
quantile,
Expand Down
2 changes: 1 addition & 1 deletion numpy/lib/index_tricks.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
from numpy.core.numerictypes import issubdtype

import numpy.matrixlib as matrixlib
from .function_base import diff
from numpy.core.multiarray import ravel_multi_index, unravel_index
from numpy.core import overrides, linspace
from numpy.lib.stride_tricks import as_strided
from numpy.lib._function_base_impl import diff


array_function_dispatch = functools.partial(
Expand Down
2 changes: 1 addition & 1 deletion numpy/lib/polynomial.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from numpy.core import overrides
from numpy.exceptions import RankWarning
from numpy.lib.twodim_base import diag, vander
from numpy.lib.function_base import trim_zeros
from numpy.lib._function_base_impl import trim_zeros
from numpy.lib.type_check import iscomplex, real, imag, mintypecode
from numpy.linalg import eigvals, lstsq, inv

Expand Down
23 changes: 11 additions & 12 deletions numpy/lib/tests/test_function_base.py
F438
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,20 @@
from functools import partial

import numpy as np
from numpy import ma
from numpy import (
ma, angle, average, bartlett, blackman, corrcoef, cov,
delete, diff, digitize, extract, flipud, gradient, hamming, hanning,
i0, insert, interp, kaiser, meshgrid, piecewise, place, rot90,
select, setxor1d, sinc, trapz, trim_zeros, unwrap, unique, vectorize
)
from numpy.exceptions import AxisError
from numpy.testing import (
assert_, assert_equal, assert_array_equal, assert_almost_equal,
assert_array_almost_equal, assert_raises, assert_allclose, IS_PYPY,
assert_warns, assert_raises_regex, suppress_warnings, HAS_REFCOUNT, IS_WASM
)
import numpy.lib.function_base as nfb
import numpy.lib._function_base_impl as nfb
from numpy.random import rand
from numpy.lib import (
angle, average, bartlett, blackman, corrcoef, cov,
delete, diff, digitize, extract, flipud, gradient, hamming, hanning,
i0, insert, interp, kaiser, meshgrid, piecewise, place, rot90,
select, setxor1d, sinc, trapz, trim_zeros, unwrap, unique, vectorize
)
from numpy.core.numeric import normalize_axis_tuple


Expand Down Expand Up @@ -2212,14 +2211,14 @@ def test_simple(self):
a = [1, 2, 3]
b = [1, 2, np.inf]
c = [1, 2, np.nan]
np.lib.asarray_chkfinite(a)
assert_raises(ValueError, np.lib.asarray_chkfinite, b)
assert_raises(ValueError, np.lib.asarray_chkfinite, c)
np.asarray_chkfinite(a)
assert_raises(ValueError, np.asarray_chkfinite, b)
assert_raises(ValueError, np.asarray_chkfinite, c)

def test_dtype_order(self):
# Regression test for missing dtype and order arguments
a = [1, 2, 3]
a = np.lib.asarray_chkfinite(a, order='F', dtype=np.float64)
a = np.asarray_chkfinite(a, order='F', dtype=np.float64)
assert_(a.dtype == np.float64)


Expand Down
8 changes: 3 additions & 5 deletions numpy/ma/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,8 @@
import numpy.core.umath as umath
import numpy.core.numerictypes as ntypes
from numpy.core import multiarray as mu
from numpy import ndarray, amax, amin, iscomplexobj, bool_, _NoValue
from numpy import array as narray
from numpy.lib.function_base import angle
from numpy import expand_dims
from numpy import ndarray, amax, amin, iscomplexobj, bool_, _NoValue, angle
from numpy import array as narray, expand_dims
from numpy.core.numeric import normalize_axis_tuple
from numpy._utils._inspect import getargspec, formatargspec

Expand Down Expand Up @@ -1206,7 +1204,7 @@ def __call__(self, a, b, *args, **kwargs):
cosh = _MaskedUnaryOperation(umath.cosh)
tanh = _MaskedUnaryOperation(umath.tanh)
abs = absolute = _MaskedUnaryOperation(umath.absolute)
angle = _MaskedUnaryOperation(angle) # from numpy.lib.function_base
angle = _MaskedUnaryOperation(angle)
fabs = _MaskedUnaryOperation(umath.fabs)
negative = _MaskedUnaryOperation(umath.negative)
floor = _MaskedUnaryOperation(umath.floor)
Expand Down
5 changes: 1 addition & 4 deletions numpy/ma/core.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ from numpy import (
ones_like as ones_like,
squeeze as squeeze,
zeros_like as zeros_like,
)

from numpy.lib.function_base import (
angle as angle,
angle as angle
)

# TODO: Set the `bound` to something more suitable once we
Expand Down
2 changes: 1 addition & 1 deletion numpy/ma/extras.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
from numpy import ndarray, array as nxarray
from numpy.core.multiarray import normalize_axis_index
from numpy.core.numeric import normalize_axis_tuple
from numpy.lib.function_base import _ureduce
from numpy.lib._function_base_impl import _ureduce
from numpy.lib.index_tricks import AxisConcatenator


Expand Down
1 change: 0 additions & 1 deletion numpy/tests/test_public_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,6 @@ def test_NPY_NO_EXPORT():
"lib.arraypad",
"lib.arraysetops",
"lib.arrayterator",
"lib.function_base",
"lib.index_tricks",
"lib.npyio",
"lib.polynomial",
Expand Down
0