1from pandas.core.internals.api import make_block # 2023-09-18 pyarrow uses this
2from pandas.core.internals.concat import concatenate_managers
3from pandas.core.internals.managers import (
4 BlockManager,
5 SingleBlockManager,
6)
7
8__all__ = [
9 "Block", # pyright:ignore[reportUnsupportedDunderAll)]
10 "BlockManager",
11 "DatetimeTZBlock", # pyright:ignore[reportUnsupportedDunderAll)]
12 "ExtensionBlock", # pyright:ignore[reportUnsupportedDunderAll)]
13 "SingleBlockManager",
14 "concatenate_managers",
15 "make_block",
16]
17
18
19def __getattr__(name: str):
20 # GH#55139
21 import warnings
22
23 from pandas.errors import Pandas4Warning
24
25 if name == "create_block_manager_from_blocks":
26 # GH#33892, GH#58715
27 warnings.warn(
28 f"{name} is deprecated and will be removed in a future version. "
29 "Use public APIs instead.",
30 Pandas4Warning,
31 # https://github.com/pandas-dev/pandas/pull/55139#pullrequestreview-1720690758
32 # on hard-coding stacklevel
33 stacklevel=2,
34 )
35 from pandas.core.internals.managers import create_block_manager_from_blocks
36
37 return create_block_manager_from_blocks
38
39 if name in [
40 "Block",
41 "ExtensionBlock",
42 "DatetimeTZBlock",
43 ]:
44 warnings.warn(
45 f"{name} is deprecated and will be removed in a future version. "
46 "Use public APIs instead.",
47 Pandas4Warning,
48 # https://github.com/pandas-dev/pandas/pull/55139#pullrequestreview-1720690758
49 # on hard-coding stacklevel
50 stacklevel=2,
51 )
52 if name == "DatetimeTZBlock":
53 from pandas.core.internals.api import _DatetimeTZBlock as DatetimeTZBlock
54
55 return DatetimeTZBlock
56 if name == "ExtensionBlock":
57 from pandas.core.internals.blocks import ExtensionBlock
58
59 return ExtensionBlock
60 else:
61 from pandas.core.internals.blocks import Block
62
63 return Block
64
65 raise AttributeError(f"module 'pandas.core.internals' has no attribute '{name}'")