Skip to content

Commit ffc8e72

Browse files
committed
fix(review-feedback-997): address latest review comments
1 parent 3c6833f commit ffc8e72

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

data_provider/base.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,14 @@ def _try_scalar_isna(value: Any, context: str) -> Optional[bool]:
680680
try:
681681
isna_result = pd.isna(value)
682682
except (TypeError, ValueError) as exc:
683+
if hasattr(value, "__array__"):
684+
logger.debug(
685+
"[%s] pd.isna failed for array-like object; re-raise: value_type=%s error_type=%s",
686+
context,
687+
type(value).__name__,
688+
type(exc).__name__,
689+
)
690+
raise
683691
logger.debug(
684692
"[%s] pd.isna fallback: value_type=%s error_type=%s",
685693
context,
@@ -1813,7 +1821,7 @@ def _has_meaningful_payload(payload: Any) -> bool:
18131821
return False
18141822
return any(
18151823
DataFetcherManager._has_meaningful_payload(v)
1816-
for v in payload.to_numpy().reshape(-1).tolist()
1824+
for v in payload.to_numpy().flat
18171825
)
18181826
if isinstance(payload, (pd.Series, pd.Index)):
18191827
return any(DataFetcherManager._has_meaningful_payload(v) for v in payload.tolist())
@@ -1823,7 +1831,7 @@ def _has_meaningful_payload(payload: Any) -> bool:
18231831
else:
18241832
return any(
18251833
DataFetcherManager._has_meaningful_payload(v)
1826-
for v in payload.reshape(-1).tolist()
1834+
for v in payload.flat
18271835
)
18281836
if isinstance(payload, (list, tuple, set)):
18291837
return any(DataFetcherManager._has_meaningful_payload(v) for v in payload)

tests/test_fundamental_context.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,17 @@ def test_missing_value_helpers_log_expected_pd_isna_fallback(self) -> None:
491491
self.assertIn("[board_value] pd.isna fallback", joined_logs)
492492
self.assertIn("[fundamental_payload] pd.isna fallback", joined_logs)
493493

494+
def test_missing_value_helpers_propagate_array_protocol_pd_isna_errors(self) -> None:
495+
class _ArrayProtocolErrorPayload:
496+
def __array__(self):
497+
raise ValueError("boom")
498+
499+
payload = _ArrayProtocolErrorPayload()
500+
with self.assertRaises(ValueError):
501+
DataFetcherManager._is_missing_board_value(payload)
502+
with self.assertRaises(ValueError):
503+
DataFetcherManager._has_meaningful_payload(payload)
504+
494505
def test_missing_value_helpers_propagate_unexpected_pd_isna_errors(self) -> None:
495506
sentinel = object()
496507
with patch("data_provider.base.pd.isna", side_effect=RuntimeError("boom")):

0 commit comments

Comments
 (0)