Fix result_type handling for dtype specifiers and pandas ExtensionDtype#2
Open
Fix result_type handling for dtype specifiers and pandas ExtensionDtype#2
Conversation
Co-authored-by: Claude <[email protected]>
for more information, see https://pre-commit.ci
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
ExtensionDtyperesults (e.g.,CategoricalDtype) where appropriate and avoid unwanted promotion toobject.result_typereturnsnp.dtypeand ensure string/bytes promotion matches pandas semantics for indexing and alignment.Description
xarray.core.dtypes.result_typeto detect extension-dtype inputs only for actual extension types and not for dtype-specifierstr/bytes/typeobjects, and to returnExtensionDtypewhen appropriate.np.dtype,type,str/bytesspecifiers), runsmaybe_promote_to_variable_widthon them, and callsnp.result_typeto preserve fixed/variable-width string semantics.should_return_str_or_bytesso extension-array dtype detection excludes plaintypeobjects.union_unordered_categorical_and_scalarinxarray.core.extension_arrayto concatenate categoryIndexobjects and produce a uniquepd.CategoricalDtype(preserving order and uniqueness).maybe_coerce_to_strinxarray/core/utils.pyto only check.kindfor actualnp.dtypeinstances.cast(np.dtype, ...)whereresult_typeis used in a sparse conversion path (xarray/namedarray/core.py) to satisfy typing when a concretenp.dtypeis required.xarray/tests/test_dtypes.pywithcast, and usepd.NAin categorical-null tests inxarray/tests/test_dataarray.py.Testing
python -m pytest -c /dev/null xarray/tests/test_dtypes.py -k "result_type"and it passed (19 passed, 1 skipped).Codex Task