Fix StringDtype vs object dtype mismatch in Data._safecast_df#4795
Open
mgarrard wants to merge 2 commits intofacebook:mainfrom
Open
Fix StringDtype vs object dtype mismatch in Data._safecast_df#4795mgarrard wants to merge 2 commits intofacebook:mainfrom
mgarrard wants to merge 2 commits intofacebook:mainfrom
Conversation
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4795 +/- ##
=======================================
Coverage 96.70% 96.70%
=======================================
Files 587 587
Lines 61294 61296 +2
=======================================
+ Hits 59275 59277 +2
Misses 2019 2019 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
Summary: I'm not sure why these are showing up as failures today, we migrated to Python scientific stack in july 2024, but these are deprecation warnings we should go ahead and take care of anyway. Figured would knock them out while they are causing me issues Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Add `.copy()` after `.numpy()` calls to ensure arrays are writeable. PyTorch tensors converted via `.detach().cpu().numpy()` return read-only arrays in some cases. The subsequent squeeze operations create read-only views, and the in-place assignment `loo_covs[:, diag_idx, diag_idx] = loo_vars` fails with "assignment destination is read-only" error. Differential Revision: D91185467
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
e35c0e1 to
94da5d0
Compare
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
mgarrard
added a commit
to mgarrard/Ax
that referenced
this pull request
Jan 22, 2026
…ok#4795) Summary: Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA Pandas 2.0+ changed default string column dtype from `object` to `StringDtype(na_value=nan)`. The `_safecast_df()` method doesn't properly handle the comparison between `StringDtype` and `np.dtype("O")` because they are different types that don't compare equal. Add explicit check for `pd.StringDtype` to force casting when needed. Differential Revision: D91185469
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.
Summary:
Prompted after some failures in exports not related to my changes: https://github.com/facebook/Ax/actions/runs/21225324302/job/61070638075?fbclid=IwY2xjawPeXMFleHRuA2FlbQIxMQBicmlkETFRTkR6WlE4NHVrd3IyQXNlc3J0YwZhcHBfaWQBMAABHjTAiZi71n24w95hvzEewrKNPKOGzJisgR7t4qJ3APRMYlusgFC-gu7RLiSb_aem_Zk3pmTDonCFsJvZCTkpeMA
Pandas 2.0+ changed default string column dtype from
objecttoStringDtype(na_value=nan). The_safecast_df()method doesn't properlyhandle the comparison between
StringDtypeandnp.dtype("O")becausethey are different types that don't compare equal.
Add explicit check for
pd.StringDtypeto force casting when needed.Differential Revision: D91185469