fmeval.data_loaders.jmespath_util

 1import jmespath
 2import logging
 3from typing import Any, List, Dict, Union, Optional
 4from jmespath.exceptions import JMESPathError
 5from jmespath.parser import ParsedResult
 6from fmeval.exceptions import EvalAlgorithmClientError
 7
 8logger = logging.getLogger(__name__)
 9
10
11def compile_jmespath(jmespath_expression: str):
12    """
13    Compiles a JMESPath expression to be used for JSON data.
14    """
15    try:
16        return jmespath.compile(jmespath_expression)
17    except (TypeError, JMESPathError) as e:
18        raise EvalAlgorithmClientError(f"Unable to compile JMESPath {jmespath_expression}") from e
19
20
21def search_jmespath(
22    jmespath_parser: ParsedResult,
23    jmespath_query_type: str,
24    dataset: Union[Dict, List],
25    dataset_name: str,
26) -> Optional[List[Any]]:
27    """Searches a dataset using a JMESPath query.
28
29    :param jmespath_parser: The JMESPath parser, used for parsing model inputs, model outputs,
30        target outputs, or categories.
31    :param jmespath_query_type: Used for error logging. Will always be the `name` attribute
32        of a fmeval.constants.DatasetColumns enumeration.
33    :param dataset: The data to be searched, already deserialized into a dict/list.
34    :param dataset_name: A name associated with the dataset being parsed for logging purposes.
35    :returns: The result of executing the JMESPath query on the dataset.
36    """
37    try:
38        result = jmespath_parser.search(dataset)
39        if result is None:
40            logger.warning(
41                f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath "
42                f"query '{jmespath_parser.expression}'."
43            )
44        return result
45    except ValueError:
46        logger.warning(
47            f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath query "
48            f"'{jmespath_parser.expression}'."
49        )
50        return None
logger = <Logger fmeval.data_loaders.jmespath_util (INFO)>
def compile_jmespath(jmespath_expression: str):
12def compile_jmespath(jmespath_expression: str):
13    """
14    Compiles a JMESPath expression to be used for JSON data.
15    """
16    try:
17        return jmespath.compile(jmespath_expression)
18    except (TypeError, JMESPathError) as e:
19        raise EvalAlgorithmClientError(f"Unable to compile JMESPath {jmespath_expression}") from e

Compiles a JMESPath expression to be used for JSON data.

def search_jmespath( jmespath_parser: jmespath.parser.ParsedResult, jmespath_query_type: str, dataset: Union[Dict, List], dataset_name: str) -> Optional[List[Any]]:
22def search_jmespath(
23    jmespath_parser: ParsedResult,
24    jmespath_query_type: str,
25    dataset: Union[Dict, List],
26    dataset_name: str,
27) -> Optional[List[Any]]:
28    """Searches a dataset using a JMESPath query.
29
30    :param jmespath_parser: The JMESPath parser, used for parsing model inputs, model outputs,
31        target outputs, or categories.
32    :param jmespath_query_type: Used for error logging. Will always be the `name` attribute
33        of a fmeval.constants.DatasetColumns enumeration.
34    :param dataset: The data to be searched, already deserialized into a dict/list.
35    :param dataset_name: A name associated with the dataset being parsed for logging purposes.
36    :returns: The result of executing the JMESPath query on the dataset.
37    """
38    try:
39        result = jmespath_parser.search(dataset)
40        if result is None:
41            logger.warning(
42                f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath "
43                f"query '{jmespath_parser.expression}'."
44            )
45        return result
46    except ValueError:
47        logger.warning(
48            f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath query "
49            f"'{jmespath_parser.expression}'."
50        )
51        return None

Searches a dataset using a JMESPath query.

Parameters
  • jmespath_parser: The JMESPath parser, used for parsing model inputs, model outputs, target outputs, or categories.
  • jmespath_query_type: Used for error logging. Will always be the name attribute of a fmeval.constants.DatasetColumns enumeration.
  • dataset: The data to be searched, already deserialized into a dict/list.
  • dataset_name: A name associated with the dataset being parsed for logging purposes. :returns: The result of executing the JMESPath query on the dataset.