""" Base test suite for extension arrays. These tests are intended for third-party libraries to subclass to validate that their extension arrays and dtypes satisfy the interface. Moving or renaming the tests should not be done lightly. Libraries are expected to implement a few pytest fixtures to provide data for the tests. The fixtures may be located in either * The same module as your test class. * A ``conftest.py`` in the same directory as your test class. The full list of fixtures may be found in the ``conftest.py`` next to this file. .. code-block:: python import pytest from pandas.tests.extension.base import BaseDtypeTests @pytest.fixture def dtype(): return MyDtype() class TestMyDtype(BaseDtypeTests): pass Your class ``TestDtype`` will inherit all the tests defined on ``BaseDtypeTests``. pytest's fixture discover will supply your ``dtype`` wherever the test requires it. You're free to implement additional tests. """ from pandas.tests.extension.base.accumulate import BaseAccumulateTests from pandas.tests.extension.base.casting import BaseCastingTests from pandas.tests.extension.base.constructors import BaseConstructorsTests from pandas.tests.extension.base.dim2 import ( # noqa: F401 Dim2CompatTests, NDArrayBacked2DTests, ) from pandas.tests.extension.base.dtype import BaseDtypeTests from pandas.tests.extension.base.getitem import BaseGetitemTests from pandas.tests.extension.base.groupby import BaseGroupbyTests from pandas.tests.extension.base.index import BaseIndexTests from pandas.tests.extension.base.interface import BaseInterfaceTests from pandas.tests.extension.base.io import BaseParsingTests from pandas.tests.extension.base.methods import BaseMethodsTests from pandas.tests.extension.base.missing import BaseMissingTests from pandas.tests.extension.base.ops import ( # noqa: F401 BaseArithmeticOpsTests, BaseComparisonOpsTests, BaseOpsUtil, BaseUnaryOpsTests, ) from pandas.tests.extension.base.printing import BasePrintingTests from pandas.tests.extension.base.reduce import BaseReduceTests from pandas.tests.extension.base.reshaping import BaseReshapingTests from pandas.tests.extension.base.setitem import BaseSetitemTests # One test class that you can inherit as an alternative to inheriting all the # test classes above. # Note 1) this excludes Dim2CompatTests and NDArrayBacked2DTests. # Note 2) this uses BaseReduceTests and and _not_ BaseBooleanReduceTests, # BaseNoReduceTests, or BaseNumericReduceTests class ExtensionTests( BaseAccumulateTests, BaseCastingTests, BaseConstructorsTests, BaseDtypeTests, BaseGetitemTests, BaseGroupbyTests, BaseIndexTests, BaseInterfaceTests, BaseParsingTests, BaseMethodsTests, BaseMissingTests, BaseArithmeticOpsTests, BaseComparisonOpsTests, BaseUnaryOpsTests, BasePrintingTests, BaseReduceTests, BaseReshapingTests, BaseSetitemTests, Dim2CompatTests, ): pass def __getattr__(name: str): import warnings if name == "BaseNoReduceTests": warnings.warn( "BaseNoReduceTests is deprecated and will be removed in a " "future version. Use BaseReduceTests and override " "`_supports_reduction` instead.", FutureWarning, ) from pandas.tests.extension.base.reduce import BaseNoReduceTests return BaseNoReduceTests elif name == "BaseNumericReduceTests": warnings.warn( "BaseNumericReduceTests is deprecated and will be removed in a " "future version. Use BaseReduceTests and override " "`_supports_reduction` instead.", FutureWarning, ) from pandas.tests.extension.base.reduce import BaseNumericReduceTests return BaseNumericReduceTests elif name == "BaseBooleanReduceTests": warnings.warn( "BaseBooleanReduceTests is deprecated and will be removed in a " "future version. Use BaseReduceTests and override " "`_supports_reduction` instead.", FutureWarning, ) from pandas.tests.extension.base.reduce import BaseBooleanReduceTests return BaseBooleanReduceTests raise AttributeError( f"module 'pandas.tests.extension.base' has no attribute '{name}'" )