docs: def to_internal_value(self, data):
          """
          Validate that the input is a decimal number and return a Decimal
          instance.
          """
          data = smart_text(data).strip()
          if len(data) > self.MAX_STRING_LENGTH:
              self.fail('max_string_length')
  
          try:
              value = decimal.Decimal(data)
          except decimal.DecimalException:
              self.fail('invalid')
  
          # Check for NaN. It is the only value that isn't equal to itself,
          # so we can use this to identify NaN values.
          if value != value:
              self.fail('invalid')
  
          # Check for infinity and negative infinity.
          if value in (decimal.Decimal('Inf'), decimal.Decimal('-Inf')):
              self.fail('invalid')
  
          return self.validate_precision(value)