Skip to content

Commit

Permalink
[Data] Support pandas 2.2.0 for pandas tensor extensions (#42892)
Browse files Browse the repository at this point in the history
`ExtensionArrayFormatter` is replaced with `_ ExtensionArrayFormatter` in pandas 2.2.0. If Ray Data users have this version of pandas installed, it will result in the error in #42842.

This PR adds the case to support the change to `ExtensionArrayFormatter`. Tested locally with pandas 2.2.0 and Ray Data usage works without the error. 

Signed-off-by: Scott Lee <sjl@anyscale.com>
  • Loading branch information
scottjlee committed Feb 1, 2024
1 parent 9fd7a7f commit cd67a82
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions python/ray/air/util/tensor_extensions/pandas.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
from pandas.compat import set_function_name
from pandas.core.dtypes.generic import ABCDataFrame, ABCSeries
from pandas.core.indexers import check_array_indexer, validate_indices
from pandas.io.formats.format import ExtensionArrayFormatter

from ray.air.util.tensor_extensions.utils import (
_create_possibly_ragged_ndarray,
Expand Down Expand Up @@ -167,14 +166,20 @@ def _format(x):
_FORMATTER_ENABLED_ENV_VAR = "TENSOR_COLUMN_EXTENSION_FORMATTER_ENABLED"

if os.getenv(_FORMATTER_ENABLED_ENV_VAR, "1") == "1":
ExtensionArrayFormatter._format_strings_orig = (
ExtensionArrayFormatter._format_strings
)
if Version(pd.__version__) < Version("2.2.0"):
from pandas.io.formats.format import ExtensionArrayFormatter

formatter_cls = ExtensionArrayFormatter
else:
from pandas.io.formats.format import _ExtensionArrayFormatter

formatter_cls = _ExtensionArrayFormatter
formatter_cls._format_strings_orig = formatter_cls._format_strings
if Version("1.1.0") <= Version(pd.__version__) < Version("1.3.0"):
ExtensionArrayFormatter._format_strings = _format_strings_patched
formatter_cls._format_strings = _format_strings_patched
else:
ExtensionArrayFormatter._format_strings = _format_strings_patched_v1_0_0
ExtensionArrayFormatter._patched_by_ray_datasets = True
formatter_cls._format_strings = _format_strings_patched_v1_0_0
formatter_cls._patched_by_ray_datasets = True

###########################################
# End patching of ExtensionArrayFormatter #
Expand Down

0 comments on commit cd67a82

Please sign in to comment.