code: def get_query_parameters(args, cell_body, date_time=datetime.datetime.now()):
    
  
    env = google.datalab.utils.commands.notebook_environment()
    config = google.datalab.utils.commands.parse_config(cell_body, env=env, as_dict=False)
    sql = args['query']
    if sql is None:
      raise Exception('Cannot extract query parameters in non-query cell')
  
    # Validate query_params
    if config:
      jsonschema.validate(config, BigQuerySchema.QUERY_PARAMS_SCHEMA)
  
    config = config or {}
    config_parameters = config.get('parameters', [])
    return bigquery.Query.get_query_parameters(config_parameters, date_time=date_time)
docs: Extract query parameters from cell body if provided
    Also validates the cell body schema using jsonschema to catch errors before sending the http
    request. This validation isn't complete, however; it does not validate recursive schemas,
    but it acts as a good filter against most simple schemas
  
    Args:
      args: arguments passed to the magic cell
      cell_body: body of the magic cell
      date_time: The timestamp at which the date-time related parameters need to be resolved.
  
    Returns:
      Validated object containing query parameters