Ejemplo n.º 1
0
 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))
Ejemplo n.º 2
0
    def as_marked_up(self):
        """
        Returns ruamel.yaml CommentedSeq/CommentedMap objects
        with comments. This can be fed directly into a ruamel.yaml
        dumper.
        """
        if isinstance(self._value, CommentedMap):
            new_commented_map = deepcopy(self._value)

            for key, value in self._value.items():
                del new_commented_map[key._value]
                new_commented_map[key._value] = value.as_marked_up()
            return new_commented_map
        elif isinstance(self._value, CommentedSeq):
            new_commented_seq = deepcopy(self._value)

            for i, item in enumerate(self._value):
                new_commented_seq[i] = item.as_marked_up()
            return new_commented_seq
        else:
            if utils.is_integer(self._text):
                return int(self._text)
            elif utils.is_decimal(self._text):
                return decimal.Decimal(self._text)
            else:
                return self._text
Ejemplo n.º 3
0
 def validate_scalar(self, chunk):
     val = chunk.contents
     if utils.is_infinity(val) or utils.is_not_a_number(val):
         val = val.replace(".", "")
     elif not utils.is_decimal(val):
         chunk.expecting_but_found("when expecting a float")
     return float(val)
Ejemplo n.º 4
0
 def validate_scalar(self, chunk):
     val = chunk.contents
     if utils.is_infinity(val) or utils.is_not_a_number(val):
         val = val.replace(".", "")
     elif not utils.is_decimal(val):
         chunk.expecting_but_found("when expecting a float")
     # Only Python 3.6+ supports underscores in numeric literals
     return float(val.replace("_", ""))
Ejemplo n.º 5
0
 def validate_scalar(self, chunk, value=None):
     val = unicode(chunk.contents) if value is None else value
     if not utils.is_decimal(val):
         raise_exception(
             "when expecting a decimal",
             "found non-decimal",
             chunk,
         )
     else:
         return YAML(decimal.Decimal(val), val, chunk=chunk, validator=self)
Ejemplo n.º 6
0
 def found(self):
     if self.is_sequence():
         return u"a sequence"
     elif self.is_mapping():
         return u"a mapping"
     elif self.contents == u"":
         return u"a blank string"
     elif utils.is_integer(self.contents):
         return u"an arbitrary integer"
     elif utils.is_decimal(self.contents):
         return u"an arbitrary number"
     else:
         return u"arbitrary text"
Ejemplo n.º 7
0
 def found(self):
     if self.is_sequence():
         return u"a sequence"
     elif self.is_mapping():
         return u"a mapping"
     elif self.contents == u"":
         return u"a blank string"
     elif utils.is_integer(self.contents):
         return u"an arbitrary integer"
     elif utils.is_decimal(self.contents):
         return u"an arbitrary number"
     else:
         return u"arbitrary text"
Ejemplo n.º 8
0
 def validate_scalar(self, chunk):
     val = chunk.contents
     if not utils.is_decimal(val):
         chunk.expecting_but_found("when expecting a decimal")
     else:
         return decimal.Decimal(val)
Ejemplo n.º 9
0
 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))
Ejemplo n.º 10
0
 def validate_scalar(self, chunk):
     val = chunk.contents
     if not utils.is_decimal(val):
         chunk.expecting_but_found("when expecting a decimal")
     else:
         return decimal.Decimal(val)