Example #1
0
def get_value_meta_from_value(
    value_name,
    value,
    meta_conf,
    raise_on_error=False
):  # type: (str, Any, ValueMetaConf, bool) -> Optional[ValueMeta]
    if value is None:
        return None

    obj_value_type = get_value_type_of_obj(
        value, default_value_type=ObjectValueType())
    if obj_value_type is None:
        logger.info("Can't detect known type for '%s' with type='%s' ",
                    value_name, type(value))
        return None
    try:
        return obj_value_type.get_value_meta(value, meta_conf=meta_conf)

    except Exception as ex:
        log_exception(
            "Failed to get value meta info for '%s' with type='%s'"
            " ( detected as %s)" % (value_name, type(value), obj_value_type),
            ex,
            non_critical=not raise_on_error,
        )
        if raise_on_error:
            raise
    return None
Example #2
0
    SetValueType(),
    TupleValueType(),
    # targets, path
    TargetValueType(),
    TargetPathValueType(),
    TargetPathLibValueType(),
    TargetConfigValueType(),
    CallableValueType(),
    # str types
    VersionValueType(),
    StrValueType(),
    NullableStrValueType(),
])

# OBJECT VALUE is always the last
known_values.append(ObjectValueType())

_VALUE_TYPES = ValueTypeRegistry(known_value_types=known_values)


def get_types_registry():
    # type: ()-> ValueTypeRegistry
    return _VALUE_TYPES


def get_value_type_of_obj(obj, default_value_type=None):
    # type: (object, Optional[ValueType]) -> Optional[ValueType]
    return get_types_registry().get_value_type_of_obj(obj, default_value_type)


def get_value_type_of_type(obj_type, inline_value_type=False):