This is an automated email from the ASF dual-hosted git repository.

raulcd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 4324a06004 GH-45296: [Python] Only enable the string dtype on pandas 
export for pandas>=2.3 (#45383)
4324a06004 is described below

commit 4324a06004e05137cec874486db7af0feefa5504
Author: Joris Van den Bossche <[email protected]>
AuthorDate: Thu Jan 30 13:16:04 2025 +0100

    GH-45296: [Python] Only enable the string dtype on pandas export for 
pandas>=2.3 (#45383)
    
    ### Rationale for this change
    
    The option already exists in pandas 2.2, but for that version our code does 
not work, so restricting it to pandas >= 2.3
    
    * GitHub Issue: #45296
    
    Authored-by: Joris Van den Bossche <[email protected]>
    Signed-off-by: Raúl Cumplido <[email protected]>
---
 python/pyarrow/pandas-shim.pxi | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/python/pyarrow/pandas-shim.pxi b/python/pyarrow/pandas-shim.pxi
index 5be6f03f86..aab9cf1079 100644
--- a/python/pyarrow/pandas-shim.pxi
+++ b/python/pyarrow/pandas-shim.pxi
@@ -38,7 +38,7 @@ cdef class _PandasAPIShim(object):
         object _array_like_types, _is_extension_array_dtype, _lock
         bint has_sparse
         bint _pd024
-        bint _is_v1, _is_ge_v21, _is_ge_v3, _is_ge_v3_strict
+        bint _is_v1, _is_ge_v21, _is_ge_v23, _is_ge_v3, _is_ge_v3_strict
 
     def __init__(self):
         self._lock = Lock()
@@ -79,6 +79,7 @@ cdef class _PandasAPIShim(object):
 
         self._is_v1 = self._loose_version < Version('2.0.0')
         self._is_ge_v21 = self._loose_version >= Version('2.1.0')
+        self._is_ge_v23 = self._loose_version >= Version('2.3.0')
         self._is_ge_v3 = self._loose_version >= Version('3.0.0.dev0')
         self._is_ge_v3_strict = self._loose_version >= Version('3.0.0')
 
@@ -171,6 +172,10 @@ cdef class _PandasAPIShim(object):
         self._check_import()
         return self._is_ge_v21
 
+    def is_ge_v23(self):
+        self._check_import()
+        return self._is_ge_v23
+
     def is_ge_v3(self):
         self._check_import()
         return self._is_ge_v3
@@ -183,7 +188,7 @@ cdef class _PandasAPIShim(object):
         if self.is_ge_v3_strict():
             return True
         try:
-            if self.pd.options.future.infer_string:
+            if self.is_ge_v23() and self.pd.options.future.infer_string:
                 return True
         except:
             pass

Reply via email to