def __init__( self, config, default_value=FIELD_NO_DEFAULT_PROVIDED, is_required=None, description=None, ): from .validate import validate_config from .post_process import resolve_defaults self.config_type = check.inst(self._resolve_config_arg(config), ConfigType) self.description = check.opt_str_param(description, "description") check.opt_bool_param(is_required, "is_required") if default_value != FIELD_NO_DEFAULT_PROVIDED: check.param_invariant( not (callable(default_value)), "default_value", "default_value cannot be a callable" ) if is_required is True: check.param_invariant( default_value == FIELD_NO_DEFAULT_PROVIDED, "default_value", "required arguments should not specify default values", ) self._default_value = default_value # check explicit default value if self.default_provided: if self.config_type.kind == ConfigTypeKind.ENUM and is_enum_value(default_value): raise DagsterInvalidDefinitionError( ( "You have passed into a python enum value as the default value " "into of a config enum type {name}. You must pass in the underlying " "string represention as the default value. One of {value_set}." ).format( value_set=[ev.config_value for ev in self.config_type.enum_values], name=self.config_type.given_name, ) ) evr = validate_config(self.config_type, default_value) if not evr.success: raise DagsterInvalidConfigError( "Invalid default_value for Field.", evr.errors, default_value, ) if is_required is None: is_optional = has_implicit_default(self.config_type) or self.default_provided is_required = not is_optional # on implicitly optional - set the default value # by resolving the defaults of the type if is_optional and not self.default_provided: evr = resolve_defaults(self.config_type, None) if not evr.success: raise DagsterInvalidConfigError( "Unable to resolve implicit default_value for Field.", evr.errors, None, ) self._default_value = evr.value self._is_required = is_required
def test_enum_value(): assert is_enum_value(None) is False assert is_enum_value(1) is False assert is_enum_value('foo') is False assert is_enum_value('VAL') is False assert is_enum_value(APythonEnum.VAL) is True
def test_enum_value(): assert is_enum_value(None) is False assert is_enum_value(1) is False assert is_enum_value("foo") is False assert is_enum_value("VAL") is False assert is_enum_value(APythonEnum.VAL) is True
def __init__( self, config, default_value=FIELD_NO_DEFAULT_PROVIDED, is_optional=None, is_required=None, description=None, ): from .validate import validate_config from .post_process import resolve_defaults self.config_type = check.inst(self._resolve_config_arg(config), ConfigType) self.description = check.opt_str_param(description, 'description') check.opt_bool_param(is_optional, 'is_optional') check.opt_bool_param(is_required, 'is_required') if default_value != FIELD_NO_DEFAULT_PROVIDED: check.param_invariant( not (callable(default_value)), 'default_value', 'default_value cannot be a callable' ) canonical_is_required = canonicalize_backcompat_args( new_val=is_required, new_arg='is_required', old_val=is_optional, old_arg='is_optional', coerce_old_to_new=lambda val: not val, additional_warn_txt='"is_optional" deprecated in 0.7.0 and will be removed in 0.8.0. Users should use "is_required" instead.', ) if canonical_is_required is True: check.param_invariant( default_value == FIELD_NO_DEFAULT_PROVIDED, 'default_value', 'required arguments should not specify default values', ) self._default_value = default_value # check explicit default value if self.default_provided: if self.config_type.kind == ConfigTypeKind.ENUM and is_enum_value(default_value): raise DagsterInvalidDefinitionError( ( 'You have passed into a python enum value as the default value ' 'into of a config enum type {name}. You must pass in the underlying ' 'string represention as the default value. One of {value_set}.' ).format( value_set=[ev.config_value for ev in self.config_type.enum_values], name=self.config_type.given_name, ) ) evr = validate_config(self.config_type, default_value) if not evr.success: raise DagsterInvalidConfigError( 'Invalid default_value for Field.', evr.errors, default_value, ) if canonical_is_required is None: # neither is_required nor is_optional were specified canonical_is_required = not all_optional_type(self.config_type) # on implicitly optional - set the default value # by resolving the defaults of the type if not canonical_is_required and not self.default_provided: evr = resolve_defaults(self.config_type, None) if not evr.success: raise DagsterInvalidConfigError( 'Unable to resolve implicit default_value for Field.', evr.errors, None, ) self._default_value = evr.value self._is_required = canonical_is_required