def GetAndValidateRowProperties(row):
    'From the object received, make a dictionary of properties for a Row.\n\n  This includes the default "value" and "error" columns as well as all\n  supplemental columns, but it doesn\'t include "revision", and it doesn\'t\n  include input fields that are properties of the parent TestMetadata, such as\n  "units".\n\n  This method is responsible for validating all properties that are to be\n  properties of the new Row.\n\n  Args:\n    row: A dictionary obtained from the input JSON.\n\n  Returns:\n    A dictionary of the properties and property values to set when creating\n    a Row. This will include "value" and "error" as well as all supplemental\n    columns.\n\n  Raises:\n    BadRequestError: The properties weren\'t formatted correctly.\n  '
    columns = {}
    if ('value' not in row):
        raise BadRequestError('No "value" given.')
    try:
        columns['value'] = float(row['value'])
    except (ValueError, TypeError):
        raise BadRequestError('Bad value for "value", should be numerical.')
    if ('error' in row):
        try:
            error = float(row['error'])
            columns['error'] = error
        except (ValueError, TypeError):
            logging.warn('Bad value for "error".')
    columns.update(_GetSupplementalColumns(row))
    return columns
From the object received, make a dictionary of properties for a Row.

This includes the default "value" and "error" columns as well as all
supplemental columns, but it doesn't include "revision", and it doesn't
include input fields that are properties of the parent TestMetadata, such as
"units".

This method is responsible for validating all properties that are to be
properties of the new Row.

Args:
  row: A dictionary obtained from the input JSON.

Returns:
  A dictionary of the properties and property values to set when creating
  a Row. This will include "value" and "error" as well as all supplemental
  columns.

Raises:
  BadRequestError: The properties weren't formatted correctly.
def GetAndValidateRowProperties(row):
    'From the object received, make a dictionary of properties for a Row.\n\n  This includes the default "value" and "error" columns as well as all\n  supplemental columns, but it doesn\'t include "revision", and it doesn\'t\n  include input fields that are properties of the parent TestMetadata, such as\n  "units".\n\n  This method is responsible for validating all properties that are to be\n  properties of the new Row.\n\n  Args:\n    row: A dictionary obtained from the input JSON.\n\n  Returns:\n    A dictionary of the properties and property values to set when creating\n    a Row. This will include "value" and "error" as well as all supplemental\n    columns.\n\n  Raises:\n    BadRequestError: The properties weren\'t formatted correctly.\n  '
    columns = {}
    if ('value' not in row):
        raise BadRequestError('No "value" given.')
    try:
        columns['value'] = float(row['value'])
    except (ValueError, TypeError):
        raise BadRequestError('Bad value for "value", should be numerical.')
    if ('error' in row):
        try:
            error = float(row['error'])
            columns['error'] = error
        except (ValueError, TypeError):
            logging.warn('Bad value for "error".')
    columns.update(_GetSupplementalColumns(row))
    return columns