From 2289903a708a5f59b6ac69ffd25e8ca28ede3180 Mon Sep 17 00:00:00 2001 From: Nitish Satyavolu Date: Sat, 11 Jan 2025 22:40:07 -0800 Subject: [PATCH 1/3] ENH: Expose NoDefault in pandas.api.extensions --- pandas/api/extensions/__init__.py | 6 +++++- pandas/tests/api/test_api.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pandas/api/extensions/__init__.py b/pandas/api/extensions/__init__.py index 1c88c0d35b4d7..e99374a1c9a0b 100644 --- a/pandas/api/extensions/__init__.py +++ b/pandas/api/extensions/__init__.py @@ -2,7 +2,10 @@ Public API for extending pandas objects. """ -from pandas._libs.lib import no_default +from pandas._libs.lib import ( + NoDefault, + no_default, +) from pandas.core.dtypes.base import ( ExtensionDtype, @@ -24,6 +27,7 @@ "ExtensionArray", "ExtensionDtype", "ExtensionScalarOpsMixin", + "NoDefault", "no_default", "register_dataframe_accessor", "register_extension_dtype", diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index c1d9f5ea4d25c..25bf517f76a9f 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -328,6 +328,7 @@ class TestApi(Base): ] allowed_api_extensions = [ "no_default", + "NoDefault", "ExtensionDtype", "register_extension_dtype", "register_dataframe_accessor", From 60407d2de79f4762f632693e3370e0fe01b2d65f Mon Sep 17 00:00:00 2001 From: Nitish Satyavolu Date: Sat, 11 Jan 2025 22:46:01 -0800 Subject: [PATCH 2/3] Add entry to whatsnew --- doc/source/whatsnew/v3.0.0.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/whatsnew/v3.0.0.rst b/doc/source/whatsnew/v3.0.0.rst index 47838d1e49d61..bf47652b1d472 100644 --- a/doc/source/whatsnew/v3.0.0.rst +++ b/doc/source/whatsnew/v3.0.0.rst @@ -30,6 +30,7 @@ Other enhancements ^^^^^^^^^^^^^^^^^^ - :class:`pandas.api.typing.FrozenList` is available for typing the outputs of :attr:`MultiIndex.names`, :attr:`MultiIndex.codes` and :attr:`MultiIndex.levels` (:issue:`58237`) - :class:`pandas.api.typing.SASReader` is available for typing the output of :func:`read_sas` (:issue:`55689`) +- :class:`pandas.api.extensions.NoDefault` is available for typing ``no_default`` - :func:`DataFrame.to_excel` now raises an ``UserWarning`` when the character count in a cell exceeds Excel's limitation of 32767 characters (:issue:`56954`) - :func:`pandas.merge` now validates the ``how`` parameter input (merge type) (:issue:`59435`) - :func:`read_spss` now supports kwargs to be passed to pyreadstat (:issue:`56356`) From 3a639f8a41783d4e16cb86c14e13608fdfb699b1 Mon Sep 17 00:00:00 2001 From: Nitish Satyavolu Date: Mon, 13 Jan 2025 16:55:19 -0800 Subject: [PATCH 3/3] Address review comment --- doc/source/whatsnew/v3.0.0.rst | 2 +- pandas/api/extensions/__init__.py | 6 +----- pandas/api/typing/__init__.py | 2 ++ pandas/tests/api/test_api.py | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/doc/source/whatsnew/v3.0.0.rst b/doc/source/whatsnew/v3.0.0.rst index bf47652b1d472..b096a3728041d 100644 --- a/doc/source/whatsnew/v3.0.0.rst +++ b/doc/source/whatsnew/v3.0.0.rst @@ -30,7 +30,7 @@ Other enhancements ^^^^^^^^^^^^^^^^^^ - :class:`pandas.api.typing.FrozenList` is available for typing the outputs of :attr:`MultiIndex.names`, :attr:`MultiIndex.codes` and :attr:`MultiIndex.levels` (:issue:`58237`) - :class:`pandas.api.typing.SASReader` is available for typing the output of :func:`read_sas` (:issue:`55689`) -- :class:`pandas.api.extensions.NoDefault` is available for typing ``no_default`` +- :class:`pandas.api.typing.NoDefault` is available for typing ``no_default`` - :func:`DataFrame.to_excel` now raises an ``UserWarning`` when the character count in a cell exceeds Excel's limitation of 32767 characters (:issue:`56954`) - :func:`pandas.merge` now validates the ``how`` parameter input (merge type) (:issue:`59435`) - :func:`read_spss` now supports kwargs to be passed to pyreadstat (:issue:`56356`) diff --git a/pandas/api/extensions/__init__.py b/pandas/api/extensions/__init__.py index e99374a1c9a0b..1c88c0d35b4d7 100644 --- a/pandas/api/extensions/__init__.py +++ b/pandas/api/extensions/__init__.py @@ -2,10 +2,7 @@ Public API for extending pandas objects. """ -from pandas._libs.lib import ( - NoDefault, - no_default, -) +from pandas._libs.lib import no_default from pandas.core.dtypes.base import ( ExtensionDtype, @@ -27,7 +24,6 @@ "ExtensionArray", "ExtensionDtype", "ExtensionScalarOpsMixin", - "NoDefault", "no_default", "register_dataframe_accessor", "register_extension_dtype", diff --git a/pandas/api/typing/__init__.py b/pandas/api/typing/__init__.py index a18a1e9d5cbb7..c1178c72f3edc 100644 --- a/pandas/api/typing/__init__.py +++ b/pandas/api/typing/__init__.py @@ -3,6 +3,7 @@ """ from pandas._libs import NaTType +from pandas._libs.lib import NoDefault from pandas._libs.missing import NAType from pandas.core.groupby import ( @@ -44,6 +45,7 @@ "JsonReader", "NAType", "NaTType", + "NoDefault", "PeriodIndexResamplerGroupby", "Resampler", "Rolling", diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index 25bf517f76a9f..4a05259a98087 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -261,6 +261,7 @@ class TestApi(Base): "JsonReader", "NaTType", "NAType", + "NoDefault", "PeriodIndexResamplerGroupby", "Resampler", "Rolling", @@ -328,7 +329,6 @@ class TestApi(Base): ] allowed_api_extensions = [ "no_default", - "NoDefault", "ExtensionDtype", "register_extension_dtype", "register_dataframe_accessor",