docs: def parse_single_value(value):
      """
      Tries to convert to int, float and then gives up and assumes the value
      is of type string. Useful when excepting values that may be string
      representations of numerical values
      """
      if isinstance(value, basestring):
          try:
              if value.startswith('"') and value.endswith('"'):
                  value = str(value[1:-1])
              elif '.' in value:
                  value = float(value)
              else:
                  value = int(value)
          except ValueError:
              value = str(value)
      elif not isinstance(value, (int, float)):
          raise ArcanaUsageError(
              "Unrecognised type for single value {}".format(value))
      return value