File tree 4 files changed +24
-18
lines changed
4 files changed +24
-18
lines changed Original file line number Diff line number Diff line change @@ -136,12 +136,16 @@ def __init__(
136
136
# infer defaults
137
137
if storage is None :
138
138
if na_value is not libmissing .NA :
139
- if HAS_PYARROW :
140
- storage = "pyarrow"
141
- else :
142
- storage = "python"
139
+ storage = get_option ("mode.string_storage" )
140
+ if storage == "auto" :
141
+ if HAS_PYARROW :
142
+ storage = "pyarrow"
143
+ else :
144
+ storage = "python"
143
145
else :
144
146
storage = get_option ("mode.string_storage" )
147
+ if storage == "auto" :
148
+ storage = "python"
145
149
146
150
if storage == "pyarrow_numpy" :
147
151
# TODO raise a deprecation warning
Original file line number Diff line number Diff line change @@ -505,13 +505,12 @@ def use_inf_as_na_cb(key) -> None:
505
505
506
506
string_storage_doc = """
507
507
: string
508
- The default storage for StringDtype. This option is ignored if
509
- ``future.infer_string`` is set to True.
508
+ The default storage for StringDtype.
510
509
"""
511
510
512
511
513
512
def is_valid_string_storage (value : Any ) -> None :
514
- legal_values = ["python" , "pyarrow" ]
513
+ legal_values = ["auto" , " python" , "pyarrow" ]
515
514
if value not in legal_values :
516
515
msg = "Value must be one of python|pyarrow"
517
516
if value == "pyarrow_numpy" :
@@ -526,7 +525,7 @@ def is_valid_string_storage(value: Any) -> None:
526
525
with cf .config_prefix ("mode" ):
527
526
cf .register_option (
528
527
"string_storage" ,
529
- "python " ,
528
+ "auto " ,
530
529
string_storage_doc ,
531
530
# validator=is_one_of_factory(["python", "pyarrow"]),
532
531
validator = is_valid_string_storage ,
Original file line number Diff line number Diff line change 4
4
import numpy as np
5
5
import pytest
6
6
7
- from pandas .compat import HAS_PYARROW
8
7
import pandas .util ._test_decorators as td
9
8
10
9
import pandas as pd
@@ -27,11 +26,10 @@ def test_eq_all_na():
27
26
tm .assert_extension_array_equal (result , expected )
28
27
29
28
30
- def test_config (string_storage , request , using_infer_string ):
31
- if using_infer_string and string_storage == "python" and HAS_PYARROW :
32
- # string storage with na_value=NaN always uses pyarrow if available
33
- # -> does not yet honor the option
34
- request .applymarker (pytest .mark .xfail (reason = "TODO(infer_string)" ))
29
+ def test_config (string_storage , using_infer_string ):
30
+ # with the default string_storage setting
31
+ # always "python" at the moment
32
+ assert StringDtype ().storage == "python"
35
33
36
34
with pd .option_context ("string_storage" , string_storage ):
37
35
assert StringDtype ().storage == string_storage
Original file line number Diff line number Diff line change 3
3
import numpy as np
4
4
import pytest
5
5
6
+ from pandas .compat import HAS_PYARROW
6
7
import pandas .util ._test_decorators as td
7
8
8
9
from pandas .core .dtypes .astype import astype_array
@@ -802,13 +803,17 @@ def test_pandas_dtype_ea_not_instance():
802
803
803
804
804
805
def test_pandas_dtype_string_dtypes (string_storage ):
805
- # TODO(infer_string) remove skip if "python" is supported
806
- pytest .importorskip ("pyarrow" )
806
+ with pd .option_context ("future.infer_string" , True ):
807
+ # with the default string_storage setting
808
+ result = pandas_dtype ("str" )
809
+ assert result == pd .StringDtype (
810
+ "pyarrow" if HAS_PYARROW else "python" , na_value = np .nan
811
+ )
812
+
807
813
with pd .option_context ("future.infer_string" , True ):
808
814
with pd .option_context ("string_storage" , string_storage ):
809
815
result = pandas_dtype ("str" )
810
- # TODO(infer_string) hardcoded to pyarrow until python is supported
811
- assert result == pd .StringDtype ("pyarrow" , na_value = np .nan )
816
+ assert result == pd .StringDtype (string_storage , na_value = np .nan )
812
817
813
818
with pd .option_context ("future.infer_string" , False ):
814
819
with pd .option_context ("string_storage" , string_storage ):
You can’t perform that action at this time.
0 commit comments