Exemple #1
0
def apply_default_values_to_selector(selector_type, config_value):
    check.param_invariant(selector_type.is_selector, 'selector_type')

    if config_value:
        check.invariant(config_value and len(config_value) == 1)
        field_name, incoming_field_value = single_item(config_value)
    else:
        field_name, field_def = single_item(selector_type.fields)
        incoming_field_value = field_def.default_value if field_def.default_provided else None

    parent_field = selector_type.fields[field_name]
    field_value = apply_default_values(parent_field.config_type,
                                       incoming_field_value)
    return {field_name: field_value}
def _is_selector_field_optional(config_type):
    check.inst_param(config_type, 'config_type', ConfigType)
    if len(config_type.fields) > 1:
        return False
    else:
        _name, field = single_item(config_type.fields)
        return field.is_optional
def define_context_context_cls(pipeline_name, context_definitions):
    check.str_param(pipeline_name, 'pipeline_name')
    check.dict_param(
        context_definitions,
        'context_definitions',
        key_type=str,
        value_type=PipelineContextDefinition,
    )
    full_type_name = '{pipeline_name}.ContextConfig'.format(
        pipeline_name=pipeline_name)
    field_dict = {}
    if len(context_definitions) == 1:
        context_name, context_definition = single_item(context_definitions)
        field_dict[context_name] = Field(
            define_specific_context_cls(pipeline_name, context_name,
                                        context_definition))
    else:
        for context_name, context_definition in context_definitions.items():
            field_dict[context_name] = Field(
                define_specific_context_cls(pipeline_name, context_name,
                                            context_definition),
                is_optional=True,
            )

    return SystemNamedSelector(full_type_name, field_dict)
def construct_context_config(config_value):
    context_name, context_value = single_item(config_value)
    return ContextConfig(
        name=context_name,
        config=context_value.get('config'),
        resources=context_value['resources'],
        persistence=context_value['persistence'],
    )
Exemple #5
0
def validate_selector_config_value(selector_type, config_value, stack):
    check.param_invariant(selector_type.is_selector, 'selector_type')
    check.inst_param(stack, 'stack', EvaluationStack)

    if config_value and not isinstance(config_value, dict):
        yield EvaluationError(
            stack=stack,
            reason=DagsterEvaluationErrorReason.RUNTIME_TYPE_MISMATCH,
            message='Value for selector type {type_name} must be a dict'.
            format(type_name=selector_type.name),
            error_data=RuntimeMismatchErrorData(config_type=selector_type,
                                                value_rep=repr(config_value)),
        )
        return

    if config_value and len(config_value) > 1:
        incoming_fields = sorted(list(config_value.keys()))
        defined_fields = sorted(list(selector_type.fields.keys()))
        yield EvaluationError(
            stack=stack,
            reason=DagsterEvaluationErrorReason.SELECTOR_FIELD_ERROR,
            message=
            ('You can only specify a single field {path_msg}. You specified {incoming_fields}. '
             'The available fields are {defined_fields}').format(
                 incoming_fields=incoming_fields,
                 defined_fields=defined_fields,
                 path_msg=_get_friendly_path_msg(stack),
             ),
            error_data=SelectorTypeErrorData(dagster_type=selector_type,
                                             incoming_fields=incoming_fields),
        )
        return

    elif not config_value:
        defined_fields = sorted(list(selector_type.fields.keys()))
        if len(selector_type.fields) > 1:
            yield EvaluationError(
                stack=stack,
                reason=DagsterEvaluationErrorReason.SELECTOR_FIELD_ERROR,
                message=
                ('Must specify a field {path_msg} if more than one field is defined. '
                 'Defined fields: {defined_fields}').format(
                     defined_fields=defined_fields,
                     path_msg=_get_friendly_path_msg(stack)),
                error_data=SelectorTypeErrorData(dagster_type=selector_type,
                                                 incoming_fields=[]),
            )
            return

        field_name, field_def = single_item(selector_type.fields)

        if not field_def.is_optional:
            yield EvaluationError(
                stack=stack,
                reason=DagsterEvaluationErrorReason.SELECTOR_FIELD_ERROR,
                message=
                ('Must specify the required field {path_msg}. Defined fields: {defined_fields}'
                 ).format(defined_fields=defined_fields,
                          path_msg=_get_friendly_path_msg(stack)),
                error_data=SelectorTypeErrorData(dagster_type=selector_type,
                                                 incoming_fields=[]),
            )
            return

        incoming_field_value = field_def.default_value if field_def.default_provided else None

    else:
        check.invariant(config_value and len(config_value) == 1)

        field_name, incoming_field_value = single_item(config_value)
        if field_name not in selector_type.fields:
            yield create_field_not_defined_error(selector_type, stack,
                                                 field_name)
            return

    parent_field = selector_type.fields[field_name]
    for error in _validate_config(
            parent_field.config_type,
            incoming_field_value,
            stack_with_field(stack, field_name, parent_field),
    ):
        yield error
def construct_storage_config(config_value):
    check.opt_dict_param(config_value, 'config_value', key_type=str)
    if config_value:
        storage_mode, storage_config = single_item(config_value)
        return StorageConfig(storage_mode, storage_config)
    return StorageConfig(None, None)
Exemple #7
0
 def _selector(context, config_value):
     selector_key, selector_value = single_item(config_value)
     return func(context, selector_key, selector_value)
Exemple #8
0
 def from_dict(config=None):
     check.opt_dict_param(config, 'config', key_type=str)
     if config:
         system_storage_name, system_storage_config = single_item(config)
         return StorageConfig(system_storage_name, system_storage_config.get('config'))
     return StorageConfig(None, None)
Exemple #9
0
 def _selector(config_value, runtime_value):
     selector_key, selector_value = single_item(config_value)
     return func(selector_key, selector_value, runtime_value)
Exemple #10
0
 def from_dict(config=None):
     check.opt_dict_param(config, 'config', key_type=str)
     if config:
         storage_mode, storage_config = single_item(config)
         return StorageConfig(storage_mode, storage_config)
     return StorageConfig(None, None)