def schema_from_data(data, allow_empty): if isinstance(data, dict): if len(data) == 0: if allow_empty: return EmptyDict() raise YAMLSerializationError( "Empty dicts are not serializable to StrictYAML unless schema is used." ) return Map({ key: schema_from_data(value, allow_empty) for key, value in data.items() }) elif isinstance(data, list): if len(data) == 0: if allow_empty: return EmptyList() raise YAMLSerializationError( "Empty lists are not serializable to StrictYAML unless schema is used." ) return FixedSeq([schema_from_data(item, allow_empty) for item in data]) elif isinstance(data, bool): return Bool() elif isinstance(data, int): return Int() elif isinstance(data, float): return Float() else: return Str()
def schema_from_data(document): if isinstance(document, CommentedMap): return Map( {key: schema_from_data(value) for key, value in document.items()}) elif isinstance(document, CommentedSeq): return FixedSeq([schema_from_data(item) for item in document]) else: return Str()
def schema_from_data(data): if isinstance(data, dict): if len(data) == 0: raise YAMLSerializationError( "Empty dicts are not serializable to StrictYAML unless schema is used." ) return Map( {key: schema_from_data(value) for key, value in data.items()}) elif isinstance(data, list): if len(data) == 0: raise YAMLSerializationError( "Empty lists are not serializable to StrictYAML unless schema is used." ) return FixedSeq([schema_from_data(item) for item in data]) else: return Str()