| """ |
| Tests for the pseudo-public API implemented in internals/api.py and exposed |
| in core.internals |
| """ |
|
|
| import pytest |
|
|
| import pandas as pd |
| import pandas._testing as tm |
| from pandas.core import internals |
| from pandas.core.internals import api |
|
|
|
|
| def test_internals_api(): |
| assert internals.make_block is api.make_block |
|
|
|
|
| def test_namespace(): |
| |
|
|
| modules = [ |
| "blocks", |
| "concat", |
| "managers", |
| "construction", |
| "array_manager", |
| "base", |
| "api", |
| "ops", |
| ] |
| expected = [ |
| "make_block", |
| "DataManager", |
| "ArrayManager", |
| "BlockManager", |
| "SingleDataManager", |
| "SingleBlockManager", |
| "SingleArrayManager", |
| "concatenate_managers", |
| ] |
|
|
| result = [x for x in dir(internals) if not x.startswith("__")] |
| assert set(result) == set(expected + modules) |
|
|
|
|
| @pytest.mark.parametrize( |
| "name", |
| [ |
| "NumericBlock", |
| "ObjectBlock", |
| "Block", |
| "ExtensionBlock", |
| "DatetimeTZBlock", |
| ], |
| ) |
| def test_deprecations(name): |
| |
| msg = f"{name} is deprecated.* Use public APIs instead" |
| with tm.assert_produces_warning(DeprecationWarning, match=msg): |
| getattr(internals, name) |
|
|
| if name not in ["NumericBlock", "ObjectBlock"]: |
| |
| with tm.assert_produces_warning(DeprecationWarning, match=msg): |
| getattr(api, name) |
|
|
|
|
| def test_make_block_2d_with_dti(): |
| |
| dti = pd.date_range("2012", periods=3, tz="UTC") |
| blk = api.make_block(dti, placement=[0]) |
|
|
| assert blk.shape == (1, 3) |
| assert blk.values.shape == (1, 3) |
|
|
|
|
| def test_create_block_manager_from_blocks_deprecated(): |
| |
| |
| |
| msg = ( |
| "create_block_manager_from_blocks is deprecated and will be " |
| "removed in a future version. Use public APIs instead" |
| ) |
| with tm.assert_produces_warning(DeprecationWarning, match=msg): |
| internals.create_block_manager_from_blocks |
|
|