|
""" |
|
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 |
|
|