https://dagster.io/ logo
Title
c

Charles Lariviere

04/29/2021, 9:16 PM
Hey 👋 I’m wondering if this is a bug or something incorrect on my end? I started getting this error in the Playground in Dagit after I upgraded from
0.11.0
to
0.11.6
today, while nothing changed in the code.
AttributeError: 'ConfigEnumValueSnap' object has no attribute 'config_value'
I have an
Enum
field with `EnumValue`s in the config schema for one of my solids, and I get this as a
PythonError
when I open the Playground tab without the config. This gets resolved when I do add a valid config for that field. It initially made me think something was wrong in the code and so it took quite a while before I realized it was simply because I was missing the config value in the Playground config.
Full stack trace:
AttributeError: 'ConfigEnumValueSnap' object has no attribute 'config_value'
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster_graphql/implementation/utils.py", line 14, in _fn
    return fn(*args, **kwargs)
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster_graphql/implementation/fetch_runs.py", line 146, in validate_pipeline_config
    ensure_valid_config(external_pipeline, mode, run_config)
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster_graphql/implementation/external.py", line 94, in ensure_valid_config
    validated_config = validate_config_from_snap(
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/validate.py", line 66, in validate_config_from_snap
    return _validate_config(
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/validate.py", line 101, in _validate_config
    return validate_shape_config(context, config_value)
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/validate.py", line 260, in validate_shape_config
    return _validate_shape_config(context, config_value, check_for_extra_incoming_fields=True)
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/validate.py", line 224, in _validate_shape_config
    errors, _compute_missing_fields_error(context, field_snaps, incoming_field_names)
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/validate.py", line 287, in _compute_missing_fields_error
    return create_missing_required_field_error(context, missing_fields[0])
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/errors.py", line 234, in create_missing_required_field_error
    minimal_config=minimal_config_for_type_snap(
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/snap.py", line 237, in minimal_config_for_type_snap
    default_dict[field.name] = minimal_config_for_type_snap(
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/snap.py", line 237, in minimal_config_for_type_snap
    default_dict[field.name] = minimal_config_for_type_snap(
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/snap.py", line 237, in minimal_config_for_type_snap
    default_dict[field.name] = minimal_config_for_type_snap(
  [Previous line repeated 1 more time]
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/snap.py", line 250, in minimal_config_for_type_snap
    return "|".join(sorted(map(lambda v: v.config_value, config_type_snap.enum_values)))
  File "/Users/charleslariviere/.local/share/virtualenvs/analytics-ommL1Clh/lib/python3.8/site-packages/dagster/config/snap.py", line 250, in <lambda>
    return "|".join(sorted(map(lambda v: v.config_value, config_type_snap.enum_values)))
And my Enum field:
partition_interval = Field(
    Enum("PartitionInterval", [EnumValue("day"), EnumValue("hour")]),
    description="Length of each partition.",
    is_required=True,
)
a

alex

04/29/2021, 9:18 PM
@owen think this is your new error message
o

owen

04/29/2021, 9:19 PM
guilty! thanks for the report, I'll get a fix out for that asap
c

Charles Lariviere

04/29/2021, 9:22 PM
Sounds good — thank you!