File tree Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -2339,7 +2339,7 @@ def construct_from_string(cls, string: str) -> ArrowDtype:
2339
2339
)
2340
2340
if not string .endswith ("[pyarrow]" ):
2341
2341
raise TypeError (f"'{ string } ' must end with '[pyarrow]'" )
2342
- if string == "string[pyarrow]" :
2342
+ if string in ( "string[pyarrow]" , "str[pyarrow]" ) :
2343
2343
# Ensure Registry.find skips ArrowDtype to use StringDtype instead
2344
2344
raise TypeError ("string[pyarrow] should be constructed by StringDtype" )
2345
2345
if pa_version_under10p1 :
Original file line number Diff line number Diff line change @@ -837,6 +837,26 @@ def test_pandas_dtype_string_dtypes(string_storage):
837
837
assert result == pd .StringDtype (string_storage , na_value = pd .NA )
838
838
839
839
840
+ def test_pandas_dtype_string_dtype_alias_with_storage ():
841
+ with pytest .raises (TypeError ):
842
+ pandas_dtype ("str[python]" )
843
+
844
+ with pytest .raises (TypeError ):
845
+ pandas_dtype ("str[pyarrow]" )
846
+
847
+ result = pandas_dtype ("string[python]" )
848
+ assert result == pd .StringDtype ("python" , na_value = pd .NA )
849
+
850
+ if HAS_PYARROW :
851
+ result = pandas_dtype ("string[pyarrow]" )
852
+ assert result == pd .StringDtype ("pyarrow" , na_value = pd .NA )
853
+ else :
854
+ with pytest .raises (
855
+ ImportError , match = "required for PyArrow backed StringArray"
856
+ ):
857
+ pandas_dtype ("string[pyarrow]" )
858
+
859
+
840
860
@td .skip_if_installed ("pyarrow" )
841
861
def test_construct_from_string_without_pyarrow_installed ():
842
862
# GH 57928
You can’t perform that action at this time.
0 commit comments