From d60b98b03739b615ec4b7f72da4ab9d7a21a1c9c Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Wed, 10 Feb 2021 17:28:39 -0500 Subject: [PATCH] Add logical utility functions (#8590) --- .../base/checks/openmetrics/v2/labels.py | 2 +- .../base/checks/openmetrics/v2/scraper.py | 4 +-- .../datadog_checks/base/utils/common.py | 4 --- .../datadog_checks/base/utils/functions.py | 31 +++++++++++++++++++ 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 datadog_checks_base/datadog_checks/base/utils/functions.py diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/labels.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/labels.py index 50c4a75db4e31..22f150e9dbee3 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/labels.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/labels.py @@ -1,7 +1,7 @@ # (C) Datadog, Inc. 2020-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from ....utils.common import no_op +from ....utils.functions import no_op class LabelAggregator: diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py index eaa36afcf985e..5fd50e10f2c6f 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py @@ -15,7 +15,7 @@ from ....config import is_affirmative from ....constants import ServiceCheck from ....errors import ConfigurationError -from ....utils.common import no_op +from ....utils.functions import no_op, return_true from ....utils.http import RequestsWrapper from .labels import LabelAggregator, get_label_normalizer from .transform import MetricTransformer @@ -118,7 +118,7 @@ def __init__(self, check, config): elif exclude_metrics_by_labels: for label, values in exclude_metrics_by_labels.items(): if values is True: - self.exclude_metrics_by_labels[label] = lambda label_value: True + self.exclude_metrics_by_labels[label] = return_true elif isinstance(values, list): for i, value in enumerate(values, 1): if not isinstance(value, str): diff --git a/datadog_checks_base/datadog_checks/base/utils/common.py b/datadog_checks_base/datadog_checks/base/utils/common.py index 9c5fce469012b..ef90b595afb65 100644 --- a/datadog_checks_base/datadog_checks/base/utils/common.py +++ b/datadog_checks_base/datadog_checks/base/utils/common.py @@ -38,10 +38,6 @@ def ensure_unicode(s): to_string = to_native_string -def no_op(*args, **kwargs): - pass - - def compute_percent(part, total): if total: return part / total * 100 diff --git a/datadog_checks_base/datadog_checks/base/utils/functions.py b/datadog_checks_base/datadog_checks/base/utils/functions.py new file mode 100644 index 0000000000000..1e441560afa0f --- /dev/null +++ b/datadog_checks_base/datadog_checks/base/utils/functions.py @@ -0,0 +1,31 @@ +# (C) Datadog, Inc. 2021-present +# All rights reserved +# Licensed under a 3-clause BSD style license (see LICENSE) + + +def identity(obj, **kwargs): + """ + https://en.wikipedia.org/wiki/Identity_function + """ + return obj + + +def no_op(*args, **kwargs): + """ + https://en.wikipedia.org/wiki/NOP_(code) + """ + + +def predicate(assertion): + """ + https://en.wikipedia.org/wiki/Predicate_(mathematical_logic) + """ + return return_true if bool(assertion) else return_false + + +def return_true(*args, **kwargs): + return True + + +def return_false(*args, **kwargs): + return False