1from pandas.core.internals.api import make_block # 2023-09-18 pyarrow uses this
2from pandas.core.internals.array_manager import (
3 ArrayManager,
4 SingleArrayManager,
5)
6from pandas.core.internals.base import (
7 DataManager,
8 SingleDataManager,
9)
10from pandas.core.internals.concat import concatenate_managers
11from pandas.core.internals.managers import (
12 BlockManager,
13 SingleBlockManager,
14)
15
16__all__ = [
17 "Block", # pylint: disable=undefined-all-variable
18 "DatetimeTZBlock", # pylint: disable=undefined-all-variable
19 "ExtensionBlock", # pylint: disable=undefined-all-variable
20 "make_block",
21 "DataManager",
22 "ArrayManager",
23 "BlockManager",
24 "SingleDataManager",
25 "SingleBlockManager",
26 "SingleArrayManager",
27 "concatenate_managers",
28]
29
30
31def __getattr__(name: str):
32 # GH#55139
33 import warnings
34
35 if name == "create_block_manager_from_blocks":
36 # GH#33892
37 warnings.warn(
38 f"{name} is deprecated and will be removed in a future version. "
39 "Use public APIs instead.",
40 DeprecationWarning,
41 # https://github.com/pandas-dev/pandas/pull/55139#pullrequestreview-1720690758
42 # on hard-coding stacklevel
43 stacklevel=2,
44 )
45 from pandas.core.internals.managers import create_block_manager_from_blocks
46
47 return create_block_manager_from_blocks
48
49 if name in [
50 "NumericBlock",
51 "ObjectBlock",
52 "Block",
53 "ExtensionBlock",
54 "DatetimeTZBlock",
55 ]:
56 warnings.warn(
57 f"{name} is deprecated and will be removed in a future version. "
58 "Use public APIs instead.",
59 DeprecationWarning,
60 # https://github.com/pandas-dev/pandas/pull/55139#pullrequestreview-1720690758
61 # on hard-coding stacklevel
62 stacklevel=2,
63 )
64 if name == "NumericBlock":
65 from pandas.core.internals.blocks import NumericBlock
66
67 return NumericBlock
68 elif name == "DatetimeTZBlock":
69 from pandas.core.internals.blocks import DatetimeTZBlock
70
71 return DatetimeTZBlock
72 elif name == "ExtensionBlock":
73 from pandas.core.internals.blocks import ExtensionBlock
74
75 return ExtensionBlock
76 elif name == "Block":
77 from pandas.core.internals.blocks import Block
78
79 return Block
80 else:
81 from pandas.core.internals.blocks import ObjectBlock
82
83 return ObjectBlock
84
85 raise AttributeError(f"module 'pandas.core.internals' has no attribute '{name}'")