87 lines
2.1 KiB
Python
87 lines
2.1 KiB
Python
|
"""
|
||
|
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():
|
||
|
# SUBJECT TO CHANGE
|
||
|
|
||
|
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):
|
||
|
# GH#55139
|
||
|
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"]:
|
||
|
# NumericBlock and ObjectBlock are not in the internals.api namespace
|
||
|
with tm.assert_produces_warning(DeprecationWarning, match=msg):
|
||
|
getattr(api, name)
|
||
|
|
||
|
|
||
|
def test_make_block_2d_with_dti():
|
||
|
# GH#41168
|
||
|
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():
|
||
|
# GH#33892
|
||
|
# If they must, downstream packages should get this from internals.api,
|
||
|
# not internals.
|
||
|
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
|