Skip to content

Commit b1b383a

Browse files
joshua-staufferbilldirksNathanFarmer
authored
[MAINTENANCE] Fix atomic diagnostic observed value renderers when used with datetime (#11033)
Co-authored-by: Bill Dirks <bill@greatexpectations.io> Co-authored-by: Nathan Farmer <NathanFarmer@users.noreply.github.com>
1 parent 868401f commit b1b383a

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed

great_expectations/expectations/core/expect_column_distinct_values_to_be_in_set.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,14 @@ def _atomic_diagnostic_observed_value(
502502
for name, schema in renderer_configuration.params:
503503
if not name.startswith(ov_param_prefix):
504504
continue
505+
# try to coerce value_set to a type that can be compared with schema.value
506+
coerced_value_set = {
507+
parse_value_to_observed_type(observed_value=schema.value, value=value)
508+
for value in value_set
509+
}
505510
render_state = (
506511
ObservedValueRenderState.EXPECTED.value
507-
if schema.value in value_set
512+
if schema.value in coerced_value_set
508513
else ObservedValueRenderState.UNEXPECTED.value
509514
)
510515
renderer_configuration.params.__dict__[name].render_state = render_state

great_expectations/expectations/core/expect_column_distinct_values_to_contain_set.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,16 @@ def _atomic_diagnostic_observed_value(
441441
template_str_list.append(f"${name}")
442442

443443
for name, schema in expected_values:
444-
if schema.value not in observed_value_set:
444+
# try to coerce the expected value to a type that can be compared with observed values
445+
if observed_value_set:
446+
sample_observed_value = next(iter(observed_value_set))
447+
expected_value = parse_value_to_observed_type(
448+
observed_value=sample_observed_value, value=schema.value
449+
)
450+
else:
451+
expected_value = schema.value
452+
453+
if expected_value not in observed_value_set:
445454
renderer_configuration.params.__dict__[
446455
name
447456
].render_state = ObservedValueRenderState.MISSING.value

great_expectations/expectations/core/expect_column_distinct_values_to_equal_set.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -430,20 +430,24 @@ def _atomic_diagnostic_observed_value(
430430
param_prefix=ov_param_prefix,
431431
renderer_configuration=renderer_configuration,
432432
)
433-
434-
expected_value_set = set(renderer_configuration.kwargs.get("value_set", []))
435433
observed_value_set = set(
436434
result.get("result", {}).get("observed_value", []) if result else []
437435
)
436+
sample_observed_value = next(iter(observed_value_set)) if observed_value_set else None
437+
expected_value_set = {
438+
parse_value_to_observed_type(observed_value=sample_observed_value, value=value)
439+
for value in renderer_configuration.kwargs.get("value_set", [])
440+
}
438441

439442
observed_values = (
440-
(name, sch)
441-
for name, sch in renderer_configuration.params
443+
(name, schema)
444+
for name, schema in renderer_configuration.params
442445
if name.startswith(ov_param_prefix)
443446
)
447+
444448
expected_values = (
445-
(name, sch)
446-
for name, sch in renderer_configuration.params
449+
(name, schema)
450+
for name, schema in renderer_configuration.params
447451
if name.startswith(expected_param_prefix)
448452
)
449453

@@ -458,7 +462,11 @@ def _atomic_diagnostic_observed_value(
458462
template_str_list.append(f"${name}")
459463

460464
for name, schema in expected_values:
461-
if schema.value not in observed_value_set:
465+
coerced_value = parse_value_to_observed_type(
466+
observed_value=sample_observed_value,
467+
value=schema.value,
468+
)
469+
if coerced_value not in observed_value_set:
462470
renderer_configuration.params.__dict__[
463471
name
464472
].render_state = ObservedValueRenderState.MISSING.value

0 commit comments

Comments
 (0)