def extract_values_query(query, field_list, out_stream=None):
    """Get list of dicts where each dict holds values from one SciObj.

    Args:
        field_list: list of str
            List of field names for which to return values. Must be strings from
            FIELD_NAME_TO_generate_dict.keys().

            If None, return all fields.

        filter_arg_dict: dict
            Dict of arguments to pass to ``ScienceObject.objects.filter()``.

        out_stream: open file-like object
            If provided, the JSON doc is streamed out instead of buffered in memory.

    Returns:
        list of dict: The keys in the returned dict correspond to the field names in
        ``field_list``.

    Raises:
        raise d1_common.types.exceptions.InvalidRequest() if ``field_list`` contains any
        invalid field names. A list of the invalid fields is included in the exception.

    """
    lookup_dict, generate_dict = _split_field_list(field_list)

    query, annotate_key_list = _annotate_query(query, generate_dict)
    # return query, annotate_key_list
    #
    # query, annotate_key_list = _create_query(filter_arg_dict, generate_dict)

    lookup_list = [v["lookup_str"] for k, v in lookup_dict.items()] + annotate_key_list

    if out_stream is None:
        return _create_sciobj_list(query, lookup_list, lookup_dict, generate_dict)
    else:
        return _write_stream(query, lookup_list, lookup_dict, generate_dict, out_stream)
Get list of dicts where each dict holds values from one SciObj.

    Args:
        field_list: list of str
            List of field names for which to return values. Must be strings from
            FIELD_NAME_TO_generate_dict.keys().

            If None, return all fields.

        filter_arg_dict: dict
            Dict of arguments to pass to ``ScienceObject.objects.filter()``.

        out_stream: open file-like object
            If provided, the JSON doc is streamed out instead of buffered in memory.

    Returns:
        list of dict: The keys in the returned dict correspond to the field names in
        ``field_list``.

    Raises:
        raise d1_common.types.exceptions.InvalidRequest() if ``field_list`` contains any
        invalid field names. A list of the invalid fields is included in the exception.