diff --git a/pandas/__init__.py b/pandas/__init__.py index cc5d835a52833..2b64100075987 100644 --- a/pandas/__init__.py +++ b/pandas/__init__.py @@ -19,7 +19,7 @@ del hard_dependencies, dependency, missing_dependencies # numpy compat -from pandas.compat.numpy import ( +from pandas.compat import ( np_version_under1p17 as _np_version_under1p17, np_version_under1p18 as _np_version_under1p18, is_numpy_dev as _is_numpy_dev, diff --git a/pandas/compat/__init__.py b/pandas/compat/__init__.py index 2ac9b9e2c875c..eb6cf4f9d7d85 100644 --- a/pandas/compat/__init__.py +++ b/pandas/compat/__init__.py @@ -12,6 +12,15 @@ import warnings from pandas._typing import F +from pandas.compat.numpy import ( + is_numpy_dev, + np_array_datetime64_compat, + np_datetime64_compat, + np_version_under1p17, + np_version_under1p18, + np_version_under1p19, + np_version_under1p20, +) PY38 = sys.version_info >= (3, 8) PY39 = sys.version_info >= (3, 9) @@ -118,3 +127,14 @@ def get_lzma_file(lzma): "might be required to solve this issue." ) return lzma.LZMAFile + + +__all__ = [ + "is_numpy_dev", + "np_array_datetime64_compat", + "np_datetime64_compat", + "np_version_under1p17", + "np_version_under1p18", + "np_version_under1p19", + "np_version_under1p20", +] diff --git a/pandas/compat/numpy/__init__.py b/pandas/compat/numpy/__init__.py index a2444b7ba5a0d..1d8077da76469 100644 --- a/pandas/compat/numpy/__init__.py +++ b/pandas/compat/numpy/__init__.py @@ -10,8 +10,8 @@ _nlv = LooseVersion(_np_version) np_version_under1p17 = _nlv < LooseVersion("1.17") np_version_under1p18 = _nlv < LooseVersion("1.18") -_np_version_under1p19 = _nlv < LooseVersion("1.19") -_np_version_under1p20 = _nlv < LooseVersion("1.20") +np_version_under1p19 = _nlv < LooseVersion("1.19") +np_version_under1p20 = _nlv < LooseVersion("1.20") is_numpy_dev = ".dev" in str(_nlv) _min_numpy_ver = "1.16.5" diff --git a/pandas/core/array_algos/masked_reductions.py b/pandas/core/array_algos/masked_reductions.py index ec0f2c61e0a29..553cdc557ec95 100644 --- a/pandas/core/array_algos/masked_reductions.py +++ b/pandas/core/array_algos/masked_reductions.py @@ -8,7 +8,7 @@ import numpy as np from pandas._libs import missing as libmissing -from pandas.compat.numpy import np_version_under1p17 +from pandas.compat import np_version_under1p17 from pandas.core.nanops import check_below_min_count diff --git a/pandas/core/common.py b/pandas/core/common.py index e23091b2efa45..aa24e12bf2cf1 100644 --- a/pandas/core/common.py +++ b/pandas/core/common.py @@ -26,7 +26,7 @@ from pandas._libs import lib from pandas._typing import AnyArrayLike, NpDtype, Scalar, T -from pandas.compat.numpy import np_version_under1p18 +from pandas.compat import np_version_under1p18 from pandas.core.dtypes.cast import construct_1d_object_array_from_listlike from pandas.core.dtypes.common import ( diff --git a/pandas/tests/arithmetic/test_datetime64.py b/pandas/tests/arithmetic/test_datetime64.py index a3d30cf0bc3c6..b2d88b3556388 100644 --- a/pandas/tests/arithmetic/test_datetime64.py +++ b/pandas/tests/arithmetic/test_datetime64.py @@ -12,7 +12,7 @@ from pandas._libs.tslibs.conversion import localize_pydatetime from pandas._libs.tslibs.offsets import shift_months -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import np_datetime64_compat from pandas.errors import PerformanceWarning import pandas as pd diff --git a/pandas/tests/arrays/integer/test_arithmetic.py b/pandas/tests/arrays/integer/test_arithmetic.py index 8ba984e649e35..0c1b10f66a73b 100644 --- a/pandas/tests/arrays/integer/test_arithmetic.py +++ b/pandas/tests/arrays/integer/test_arithmetic.py @@ -3,7 +3,7 @@ import numpy as np import pytest -from pandas.compat.numpy import _np_version_under1p20 +from pandas.compat import np_version_under1p20 import pandas as pd import pandas._testing as tm @@ -208,7 +208,7 @@ def test_arith_coerce_scalar(data, all_arithmetic_operators): expected = op(s.astype(float), other) expected = expected.astype("Float64") # rfloordiv results in nan instead of inf - if all_arithmetic_operators == "__rfloordiv__" and _np_version_under1p20: + if all_arithmetic_operators == "__rfloordiv__" and np_version_under1p20: # for numpy 1.20 https://github.com/numpy/numpy/pull/16161 # updated floordiv, now matches our behavior defined in core.ops mask = ( diff --git a/pandas/tests/arrays/sparse/test_arithmetics.py b/pandas/tests/arrays/sparse/test_arithmetics.py index 61f4e3e50d09d..013814681b5f6 100644 --- a/pandas/tests/arrays/sparse/test_arithmetics.py +++ b/pandas/tests/arrays/sparse/test_arithmetics.py @@ -3,7 +3,7 @@ import numpy as np import pytest -from pandas.compat.numpy import _np_version_under1p20 +from pandas.compat import np_version_under1p20 import pandas as pd import pandas._testing as tm @@ -122,7 +122,7 @@ def test_float_scalar( ): op = all_arithmetic_functions - if not _np_version_under1p20: + if not np_version_under1p20: if op in [operator.floordiv, ops.rfloordiv]: mark = pytest.mark.xfail(strict=False, reason="GH#38172") request.node.add_marker(mark) @@ -169,7 +169,7 @@ def test_float_same_index_with_nans( # when sp_index are the same op = all_arithmetic_functions - if not _np_version_under1p20: + if not np_version_under1p20: if op in [operator.floordiv, ops.rfloordiv]: mark = pytest.mark.xfail(strict=False, reason="GH#38172") request.node.add_marker(mark) @@ -349,7 +349,7 @@ def test_bool_array_logical(self, kind, fill_value): def test_mixed_array_float_int(self, kind, mix, all_arithmetic_functions, request): op = all_arithmetic_functions - if not _np_version_under1p20: + if not np_version_under1p20: if op in [operator.floordiv, ops.rfloordiv] and mix: mark = pytest.mark.xfail(strict=True, reason="GH#38172") request.node.add_marker(mark) diff --git a/pandas/tests/arrays/test_datetimelike.py b/pandas/tests/arrays/test_datetimelike.py index 36a52e5802396..d42bfca1271aa 100644 --- a/pandas/tests/arrays/test_datetimelike.py +++ b/pandas/tests/arrays/test_datetimelike.py @@ -5,7 +5,7 @@ import pytest from pandas._libs import NaT, OutOfBoundsDatetime, Timestamp -from pandas.compat.numpy import np_version_under1p18 +from pandas.compat import np_version_under1p18 import pandas as pd from pandas import DatetimeIndex, Index, Period, PeriodIndex, TimedeltaIndex diff --git a/pandas/tests/base/test_value_counts.py b/pandas/tests/base/test_value_counts.py index e9713e38f9874..4151781f0dbf5 100644 --- a/pandas/tests/base/test_value_counts.py +++ b/pandas/tests/base/test_value_counts.py @@ -6,7 +6,7 @@ import pytest from pandas._libs import iNaT -from pandas.compat.numpy import np_array_datetime64_compat +from pandas.compat import np_array_datetime64_compat from pandas.core.dtypes.common import needs_i8_conversion diff --git a/pandas/tests/computation/test_eval.py b/pandas/tests/computation/test_eval.py index 3e16ec134db46..37ee61417eeab 100644 --- a/pandas/tests/computation/test_eval.py +++ b/pandas/tests/computation/test_eval.py @@ -8,8 +8,7 @@ import numpy as np import pytest -from pandas.compat import is_platform_windows -from pandas.compat.numpy import np_version_under1p17 +from pandas.compat import is_platform_windows, np_version_under1p17 from pandas.errors import PerformanceWarning import pandas.util._test_decorators as td diff --git a/pandas/tests/frame/methods/test_sample.py b/pandas/tests/frame/methods/test_sample.py index 6c1c352d8286c..e17c14940746d 100644 --- a/pandas/tests/frame/methods/test_sample.py +++ b/pandas/tests/frame/methods/test_sample.py @@ -1,7 +1,7 @@ import numpy as np import pytest -from pandas.compat.numpy import np_version_under1p17 +from pandas.compat import np_version_under1p17 from pandas import DataFrame, Series import pandas._testing as tm diff --git a/pandas/tests/frame/test_constructors.py b/pandas/tests/frame/test_constructors.py index 6a0f86e133752..a6aaf3a6af750 100644 --- a/pandas/tests/frame/test_constructors.py +++ b/pandas/tests/frame/test_constructors.py @@ -10,7 +10,7 @@ import pytest import pytz -from pandas.compat.numpy import _np_version_under1p19 +from pandas.compat import np_version_under1p19 from pandas.core.dtypes.common import is_integer_dtype from pandas.core.dtypes.dtypes import DatetimeTZDtype, IntervalDtype, PeriodDtype @@ -149,7 +149,7 @@ def test_constructor_dtype_list_data(self): assert df.loc[1, 0] is None assert df.loc[0, 1] == "2" - @pytest.mark.skipif(_np_version_under1p19, reason="NumPy change.") + @pytest.mark.skipif(np_version_under1p19, reason="NumPy change.") def test_constructor_list_of_2d_raises(self): # https://github.com/pandas-dev/pandas/issues/32289 a = DataFrame() diff --git a/pandas/tests/indexes/multi/test_analytics.py b/pandas/tests/indexes/multi/test_analytics.py index 25e2f6a3777d1..e842fafda0327 100644 --- a/pandas/tests/indexes/multi/test_analytics.py +++ b/pandas/tests/indexes/multi/test_analytics.py @@ -1,7 +1,7 @@ import numpy as np import pytest -from pandas.compat.numpy import np_version_under1p17 +from pandas.compat import np_version_under1p17 import pandas as pd from pandas import Index, MultiIndex, date_range, period_range diff --git a/pandas/tests/indexes/period/test_searchsorted.py b/pandas/tests/indexes/period/test_searchsorted.py index 6ffdbbfcd2ce6..5e1a3b899755d 100644 --- a/pandas/tests/indexes/period/test_searchsorted.py +++ b/pandas/tests/indexes/period/test_searchsorted.py @@ -2,7 +2,7 @@ import pytest from pandas._libs.tslibs import IncompatibleFrequency -from pandas.compat.numpy import np_version_under1p18 +from pandas.compat import np_version_under1p18 from pandas import NaT, Period, PeriodIndex, Series, array import pandas._testing as tm diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index 1eca7f7a5d261..ad15bfa335acc 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -9,8 +9,7 @@ import pytest from pandas._libs.tslib import Timestamp -from pandas.compat import IS64 -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import IS64, np_datetime64_compat from pandas.util._test_decorators import async_mark import pandas as pd diff --git a/pandas/tests/indexes/test_numpy_compat.py b/pandas/tests/indexes/test_numpy_compat.py index 47f7b7f37cf48..f7f6456f736c0 100644 --- a/pandas/tests/indexes/test_numpy_compat.py +++ b/pandas/tests/indexes/test_numpy_compat.py @@ -1,7 +1,7 @@ import numpy as np import pytest -from pandas.compat.numpy import np_version_under1p17, np_version_under1p18 +from pandas.compat import np_version_under1p17, np_version_under1p18 from pandas import ( DatetimeIndex, diff --git a/pandas/tests/indexing/test_loc.py b/pandas/tests/indexing/test_loc.py index 8b13bafdd012f..aec5e3adfe111 100644 --- a/pandas/tests/indexing/test_loc.py +++ b/pandas/tests/indexing/test_loc.py @@ -7,7 +7,7 @@ import numpy as np import pytest -from pandas.compat.numpy import is_numpy_dev +from pandas.compat import is_numpy_dev import pandas.util._test_decorators as td import pandas as pd diff --git a/pandas/tests/io/parser/test_parse_dates.py b/pandas/tests/io/parser/test_parse_dates.py index c0b29d5019675..eb640e324e676 100644 --- a/pandas/tests/io/parser/test_parse_dates.py +++ b/pandas/tests/io/parser/test_parse_dates.py @@ -15,8 +15,7 @@ from pandas._libs.tslib import Timestamp from pandas._libs.tslibs import parsing from pandas._libs.tslibs.parsing import parse_datetime_string -from pandas.compat import is_platform_windows -from pandas.compat.numpy import np_array_datetime64_compat +from pandas.compat import is_platform_windows, np_array_datetime64_compat import pandas as pd from pandas import DataFrame, DatetimeIndex, Index, MultiIndex, Series diff --git a/pandas/tests/plotting/test_converter.py b/pandas/tests/plotting/test_converter.py index 38e67a0e55a79..4f332bfbac397 100644 --- a/pandas/tests/plotting/test_converter.py +++ b/pandas/tests/plotting/test_converter.py @@ -7,8 +7,7 @@ import pandas._config.config as cf -from pandas.compat import is_platform_windows -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import is_platform_windows, np_datetime64_compat import pandas.util._test_decorators as td from pandas import Index, Period, Series, Timestamp, date_range diff --git a/pandas/tests/scalar/period/test_period.py b/pandas/tests/scalar/period/test_period.py index 9b87e32510b41..55787f73d7a2f 100644 --- a/pandas/tests/scalar/period/test_period.py +++ b/pandas/tests/scalar/period/test_period.py @@ -10,7 +10,7 @@ from pandas._libs.tslibs.parsing import DateParseError from pandas._libs.tslibs.period import INVALID_FREQ_ERR_MSG, IncompatibleFrequency from pandas._libs.tslibs.timezones import dateutil_gettz, maybe_get_tz -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import np_datetime64_compat import pandas as pd from pandas import NaT, Period, Timedelta, Timestamp, offsets diff --git a/pandas/tests/scalar/timedelta/test_arithmetic.py b/pandas/tests/scalar/timedelta/test_arithmetic.py index 7aefd42ada322..41671343c2800 100644 --- a/pandas/tests/scalar/timedelta/test_arithmetic.py +++ b/pandas/tests/scalar/timedelta/test_arithmetic.py @@ -7,7 +7,7 @@ import numpy as np import pytest -from pandas.compat.numpy import is_numpy_dev +from pandas.compat import is_numpy_dev import pandas as pd from pandas import NaT, Timedelta, Timestamp, compat, offsets diff --git a/pandas/tests/scalar/timestamp/test_timestamp.py b/pandas/tests/scalar/timestamp/test_timestamp.py index 36d1b0911c909..f2a95044dec61 100644 --- a/pandas/tests/scalar/timestamp/test_timestamp.py +++ b/pandas/tests/scalar/timestamp/test_timestamp.py @@ -12,7 +12,7 @@ from pytz import timezone, utc from pandas._libs.tslibs.timezones import dateutil_gettz as gettz, get_timezone -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import np_datetime64_compat import pandas.util._test_decorators as td from pandas import NaT, Timedelta, Timestamp diff --git a/pandas/tests/test_algos.py b/pandas/tests/test_algos.py index 93900fa223966..fb982c02acd99 100644 --- a/pandas/tests/test_algos.py +++ b/pandas/tests/test_algos.py @@ -6,8 +6,7 @@ import pytest from pandas._libs import algos as libalgos, hashtable as ht -from pandas.compat import IS64 -from pandas.compat.numpy import np_array_datetime64_compat +from pandas.compat import IS64, np_array_datetime64_compat import pandas.util._test_decorators as td from pandas.core.dtypes.common import ( diff --git a/pandas/tests/test_common.py b/pandas/tests/test_common.py index 8e1186b790e3d..696395e50dd02 100644 --- a/pandas/tests/test_common.py +++ b/pandas/tests/test_common.py @@ -6,7 +6,7 @@ import numpy as np import pytest -from pandas.compat.numpy import np_version_under1p17 +from pandas.compat import np_version_under1p17 import pandas as pd from pandas import Series diff --git a/pandas/tests/tseries/offsets/test_business_day.py b/pandas/tests/tseries/offsets/test_business_day.py index d3c4fb50e2ab0..9b3ded9844e24 100644 --- a/pandas/tests/tseries/offsets/test_business_day.py +++ b/pandas/tests/tseries/offsets/test_business_day.py @@ -7,7 +7,7 @@ import pytest from pandas._libs.tslibs.offsets import ApplyTypeError, BDay, BMonthEnd, CDay -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import np_datetime64_compat from pandas import DatetimeIndex, _testing as tm, read_pickle from pandas.tests.tseries.offsets.common import ( diff --git a/pandas/tests/tseries/offsets/test_offsets.py b/pandas/tests/tseries/offsets/test_offsets.py index b65f8084e4bec..8d718d055f02d 100644 --- a/pandas/tests/tseries/offsets/test_offsets.py +++ b/pandas/tests/tseries/offsets/test_offsets.py @@ -11,7 +11,7 @@ import pandas._libs.tslibs.offsets as liboffsets from pandas._libs.tslibs.offsets import _get_offset, _offset_map from pandas._libs.tslibs.period import INVALID_FREQ_ERR_MSG -from pandas.compat.numpy import np_datetime64_compat +from pandas.compat import np_datetime64_compat from pandas.errors import PerformanceWarning from pandas import DatetimeIndex diff --git a/pandas/tests/tslibs/test_array_to_datetime.py b/pandas/tests/tslibs/test_array_to_datetime.py index e3f586d391fc6..24fdb3840bf52 100644 --- a/pandas/tests/tslibs/test_array_to_datetime.py +++ b/pandas/tests/tslibs/test_array_to_datetime.py @@ -6,7 +6,7 @@ import pytz from pandas._libs import iNaT, tslib -from pandas.compat.numpy import np_array_datetime64_compat +from pandas.compat import np_array_datetime64_compat from pandas import Timestamp import pandas._testing as tm