diff --git a/doc/source/user_guide/io.rst b/doc/source/user_guide/io.rst index 543489194535d..1552f2a8d257b 100644 --- a/doc/source/user_guide/io.rst +++ b/doc/source/user_guide/io.rst @@ -198,7 +198,7 @@ dtype : Type name or dict of column -> type, default ``None`` the default determines the dtype of the columns which are not explicitly listed. -use_nullable_dtypes: bool = False +use_nullable_dtypes : bool = False Whether or not to use nullable dtypes as default when reading data. If set to True, nullable dtypes are used for all dtypes that have a nullable implementation, even if no nulls are present. diff --git a/pandas/io/parsers/base_parser.py b/pandas/io/parsers/base_parser.py index ffeafd6289999..fdf806d883151 100644 --- a/pandas/io/parsers/base_parser.py +++ b/pandas/io/parsers/base_parser.py @@ -15,6 +15,7 @@ Hashable, Iterable, List, + Literal, Mapping, Sequence, Tuple, @@ -716,7 +717,10 @@ def _infer_types(self, values, na_values, cast_type, try_num_bool: bool = True): np.putmask(values, mask, np.nan) return values, na_count - use_nullable_dtypes = self.use_nullable_dtypes and cast_type is None + use_nullable_dtypes: Literal[True] | Literal[False] = ( + self.use_nullable_dtypes and cast_type is None + ) + result: ArrayLike if try_num_bool and is_object_dtype(values.dtype): # exclude e.g DatetimeIndex here @@ -753,16 +757,16 @@ def _infer_types(self, values, na_values, cast_type, try_num_bool: bool = True): na_count = parsers.sanitize_objects(values, na_values) if result.dtype == np.object_ and try_num_bool: - result, mask = libops.maybe_convert_bool( + result, bool_mask = libops.maybe_convert_bool( np.asarray(values), true_values=self.true_values, false_values=self.false_values, convert_to_masked_nullable=use_nullable_dtypes, ) if result.dtype == np.bool_ and use_nullable_dtypes: - if mask is None: - mask = np.zeros(result.shape, dtype=np.bool_) - result = BooleanArray(result, mask) + if bool_mask is None: + bool_mask = np.zeros(result.shape, dtype=np.bool_) + result = BooleanArray(result, bool_mask) elif result.dtype == np.object_ and use_nullable_dtypes: result = StringDtype().construct_array_type()._from_sequence(values) diff --git a/pandas/io/parsers/readers.py b/pandas/io/parsers/readers.py index 4a59966384897..ae8d778b9138d 100644 --- a/pandas/io/parsers/readers.py +++ b/pandas/io/parsers/readers.py @@ -427,7 +427,7 @@ .. versionadded:: 1.2 -use_nullable_dtypes: bool = False +use_nullable_dtypes : bool = False Whether or not to use nullable dtypes as default when reading data. If set to True, nullable dtypes are used for all dtypes that have a nullable implementation, even if no nulls are present.