def generic_load( yaml_string, schema=None, label=u"<unicode string>", allow_flow_style=False ): if not utils.is_string(yaml_string): raise TypeError("StrictYAML can only read a string of valid YAML.") # We manufacture a class that has the label we want DynamicStrictYAMLLoader = type( "DynamicStrictYAMLLoader", (StrictYAMLLoader,), {"label": label, "allow_flow_style": allow_flow_style}, ) try: document = ruamelyaml.load(yaml_string, Loader=DynamicStrictYAMLLoader) except ruamelyaml.YAMLError as parse_error: if parse_error.context_mark is not None: parse_error.context_mark.name = label if parse_error.problem_mark is not None: parse_error.problem_mark.name = label raise parse_error # Document is just a (string, int, etc.) if type(document) not in (CommentedMap, CommentedSeq): document = yaml_string if schema is None: schema = Any() return schema(YAMLChunk(document, label=label))
def to_yaml(self, data): if isinstance(data, list): return ", ".join([self._item_validator.to_yaml(item) for item in data]) elif utils.is_string(data): for item in data.split(","): self._item_validator.to_yaml(item) return data else: raise YAMLSerializationError( "expected string or list, got '{}' of type '{}'".format( data, type(data).__name__ ) )
def to_yaml(self, data): if isinstance(data, datetime): return data.isoformat() if utils.is_string(data): try: dateutil.parser.parse(data) return data except ValueError: raise YAMLSerializationError( "expected a datetime, got '{}'".format(data)) raise YAMLSerializationError( "expected a datetime, got '{}' of type '{}'".format( data, type(data).__name__))
def to_yaml(self, data): if isinstance(data, datetime): return data.isoformat() if utils.is_string(data): try: dateutil.parser.parse(data) return data except ValueError: raise YAMLSerializationError( "expected a datetime, got '{}'".format(data) ) raise YAMLSerializationError( "expected a datetime, got '{}' of type '{}'".format( data, type(data).__name__ ) )
def should_be_string(self, data, message): if not utils.is_string(data): raise YAMLSerializationError( "{0} got '{1}' of type {2}.".format(message, data, type(data).__name__) )
def to_yaml(self, data): if utils.has_number_type(data): return str(data) if utils.is_string(data) and utils.is_decimal(data): return data raise YAMLSerializationError("when expecting a float, got '{}'".format(data))
def to_yaml(self, data): if utils.is_string(data) or isinstance(data, int): if utils.is_integer(str(data)): return str(data) raise YAMLSerializationError("'{}' not an integer.".format(data))
def to_yaml(self, data): if not utils.is_string(data): raise YAMLSerializationError("'{}' is not a string".format(data)) return str(data)
def should_be_string(self, data, message): if not utils.is_string(data): raise YAMLSerializationError("{0} got '{1}' of type {2}.".format( message, data, type(data).__name__))
def to_yaml(self, data): if not utils.is_string(data): raise YAMLSerializationError("'{}' is not a string".format(data)) if "\n" in data: return PreservedScalarString(data) return data