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
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):