datadog-checks-base 37.2.0__py2.py3-none-any.whl → 37.3.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datadog_checks/base/__about__.py +1 -1
- datadog_checks/base/checks/base.py +12 -1
- datadog_checks/base/checks/openmetrics/v2/metrics.py +9 -2
- datadog_checks/base/stubs/similar.py +64 -0
- datadog_checks/base/utils/db/utils.py +3 -0
- datadog_checks/base/utils/fips.py +32 -0
- {datadog_checks_base-37.2.0.dist-info → datadog_checks_base-37.3.0.dist-info}/METADATA +3 -3
- {datadog_checks_base-37.2.0.dist-info → datadog_checks_base-37.3.0.dist-info}/RECORD +9 -8
- {datadog_checks_base-37.2.0.dist-info → datadog_checks_base-37.3.0.dist-info}/WHEEL +1 -1
datadog_checks/base/__about__.py
CHANGED
|
@@ -6,6 +6,7 @@ import functools
|
|
|
6
6
|
import importlib
|
|
7
7
|
import inspect
|
|
8
8
|
import logging
|
|
9
|
+
import os
|
|
9
10
|
import re
|
|
10
11
|
import traceback
|
|
11
12
|
import unicodedata
|
|
@@ -46,6 +47,7 @@ from ..types import (
|
|
|
46
47
|
from ..utils.agent.utils import should_profile_memory
|
|
47
48
|
from ..utils.common import ensure_bytes, to_native_string
|
|
48
49
|
from ..utils.diagnose import Diagnosis
|
|
50
|
+
from ..utils.fips import enable_fips
|
|
49
51
|
from ..utils.http import RequestsWrapper
|
|
50
52
|
from ..utils.limiter import Limiter
|
|
51
53
|
from ..utils.metadata import MetadataManager
|
|
@@ -307,6 +309,9 @@ class AgentCheck(object):
|
|
|
307
309
|
self.__formatted_tags = None
|
|
308
310
|
self.__logs_enabled = None
|
|
309
311
|
|
|
312
|
+
if os.environ.get("GOFIPS", "0") == "1":
|
|
313
|
+
enable_fips()
|
|
314
|
+
|
|
310
315
|
def _create_metrics_pattern(self, metric_patterns, option_name):
|
|
311
316
|
all_patterns = metric_patterns.get(option_name, [])
|
|
312
317
|
|
|
@@ -1285,7 +1290,13 @@ class AgentCheck(object):
|
|
|
1285
1290
|
|
|
1286
1291
|
enter_pdb(self.check, line=self.init_config['set_breakpoint'], args=(instance,))
|
|
1287
1292
|
elif self.should_profile_memory():
|
|
1288
|
-
|
|
1293
|
+
# self.init_config['profile_memory'] could be `/tmp/datadog-agent-memory-profiler*`
|
|
1294
|
+
# that is generated by Datadog Agent.
|
|
1295
|
+
# If we use `--m-dir` for `agent check` command, a hidden flag, it should be same as a given value.
|
|
1296
|
+
namespaces = [self.init_config['profile_memory']]
|
|
1297
|
+
for id in self.check_id.split(":"):
|
|
1298
|
+
namespaces.append(id)
|
|
1299
|
+
self.profile_memory(func=self.check, namespaces=namespaces, args=(instance,))
|
|
1289
1300
|
else:
|
|
1290
1301
|
self.check(instance)
|
|
1291
1302
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
DEFAULT_GO_METRICS = {
|
|
2
2
|
'go_gc_duration_seconds': 'go.gc.duration.seconds',
|
|
3
3
|
'go_goroutines': 'go.goroutines',
|
|
4
|
+
'go_memstats_alloc_bytes': {'name': 'go.memstats.alloc_bytes', 'type': 'native_dynamic'},
|
|
4
5
|
'go_memstats_buck_hash_sys_bytes': 'go.memstats.buck_hash.sys_bytes',
|
|
5
6
|
'go_memstats_frees': 'go.memstats.frees',
|
|
6
7
|
'go_memstats_gc_cpu_fraction': 'go.memstats.gc.cpu_fraction',
|
|
@@ -11,7 +12,10 @@ DEFAULT_GO_METRICS = {
|
|
|
11
12
|
'go_memstats_heap_objects': 'go.memstats.heap.objects',
|
|
12
13
|
'go_memstats_heap_released_bytes': 'go.memstats.heap.released_bytes',
|
|
13
14
|
'go_memstats_heap_sys_bytes': 'go.memstats.heap.sys_bytes',
|
|
14
|
-
'go_memstats_last_gc_time_seconds':
|
|
15
|
+
'go_memstats_last_gc_time_seconds': {
|
|
16
|
+
'name': 'go.memstats.last_gc_time_seconds',
|
|
17
|
+
'type': 'time_elapsed',
|
|
18
|
+
},
|
|
15
19
|
'go_memstats_lookups': 'go.memstats.lookups',
|
|
16
20
|
'go_memstats_mallocs': 'go.memstats.mallocs',
|
|
17
21
|
'go_memstats_mcache_inuse_bytes': 'go.memstats.mcache.inuse_bytes',
|
|
@@ -28,7 +32,10 @@ DEFAULT_GO_METRICS = {
|
|
|
28
32
|
'process_max_fds': 'process.max_fds',
|
|
29
33
|
'process_open_fds': 'process.open_fds',
|
|
30
34
|
'process_resident_memory_bytes': 'process.resident_memory.bytes',
|
|
31
|
-
'process_start_time_seconds':
|
|
35
|
+
'process_start_time_seconds': {
|
|
36
|
+
'name': 'process.start_time.seconds',
|
|
37
|
+
'type': 'time_elapsed',
|
|
38
|
+
},
|
|
32
39
|
'process_virtual_memory_bytes': 'process.virtual_memory.bytes',
|
|
33
40
|
'process_virtual_memory_max_bytes': 'process.virtual_memory.max_bytes',
|
|
34
41
|
}
|
|
@@ -9,6 +9,62 @@ Build similar message for better test assertion failure message.
|
|
|
9
9
|
MAX_SIMILAR_TO_DISPLAY = 15
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
def dict_diff(expected, closest):
|
|
13
|
+
"""
|
|
14
|
+
Returns an array of key/value pairs that are different between the two dicts.
|
|
15
|
+
"""
|
|
16
|
+
diff = []
|
|
17
|
+
for key in closest.keys() | expected.keys():
|
|
18
|
+
expected_value = expected.get(key)
|
|
19
|
+
closest_value = closest.get(key)
|
|
20
|
+
|
|
21
|
+
if expected_value is not None and expected_value != closest_value:
|
|
22
|
+
diff.append((key, expected_value, closest_value))
|
|
23
|
+
|
|
24
|
+
return diff
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def tags_list_to_dict(tags):
|
|
28
|
+
return {tag.split(':', 1)[0]: (tag.split(':', 1)[1] if ":" in tag else '') for tag in tags}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def tags_diff(expected, closest):
|
|
32
|
+
"""
|
|
33
|
+
Returns an array of key/value pairs that are different between the two lists of tags.
|
|
34
|
+
"""
|
|
35
|
+
diff = []
|
|
36
|
+
expected_tags_dict = tags_list_to_dict(expected)
|
|
37
|
+
closest_tags_dict = tags_list_to_dict(closest)
|
|
38
|
+
for tag in expected_tags_dict:
|
|
39
|
+
if expected_tags_dict[tag] != closest_tags_dict.get(tag):
|
|
40
|
+
diff.append((tag, expected_tags_dict[tag], closest_tags_dict.get(tag)))
|
|
41
|
+
for tag in closest_tags_dict:
|
|
42
|
+
if tag not in expected_tags_dict:
|
|
43
|
+
diff.append((tag, None, closest_tags_dict[tag]))
|
|
44
|
+
return diff
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def format_metric_stub_diff(expected, closest):
|
|
48
|
+
"""
|
|
49
|
+
Return formatted difference between expected and closest metric stubs
|
|
50
|
+
"""
|
|
51
|
+
diff = []
|
|
52
|
+
|
|
53
|
+
closest_dict = closest._asdict()
|
|
54
|
+
expected_dict = expected._asdict()
|
|
55
|
+
dict_diffs = dict_diff(expected_dict, closest_dict)
|
|
56
|
+
for key, expected_value, closest_value in dict_diffs:
|
|
57
|
+
if key == "tags":
|
|
58
|
+
tag_diffs = tags_diff(expected_value, closest_value)
|
|
59
|
+
for tag, expected_tag_value, closest_tag_value in tag_diffs:
|
|
60
|
+
diff.append(
|
|
61
|
+
f" Expected tag {tag}:{expected_tag_value}\n" + f" Found {tag}:{closest_tag_value}"
|
|
62
|
+
)
|
|
63
|
+
else:
|
|
64
|
+
diff.append(f" Expected {key}: {expected_value}\n Found {closest_value}")
|
|
65
|
+
return diff
|
|
66
|
+
|
|
67
|
+
|
|
12
68
|
def build_similar_elements_msg(expected, submitted_elements):
|
|
13
69
|
"""
|
|
14
70
|
Return formatted similar elements (metrics, service checks) received compared to submitted elements
|
|
@@ -22,9 +78,17 @@ def build_similar_elements_msg(expected, submitted_elements):
|
|
|
22
78
|
metric_stub.tags.sort()
|
|
23
79
|
similar_metrics_to_print.append("{:.2f} {}".format(score, metric_stub))
|
|
24
80
|
|
|
81
|
+
closest_diff = []
|
|
82
|
+
if similar_metrics:
|
|
83
|
+
[_, closest] = similar_metrics[0]
|
|
84
|
+
closest_diff = format_metric_stub_diff(expected, closest)
|
|
85
|
+
|
|
25
86
|
return (
|
|
26
87
|
"Expected:\n"
|
|
27
88
|
+ " {}\n".format(expected)
|
|
89
|
+
+ "Difference to closest:\n"
|
|
90
|
+
+ "\n".join(closest_diff)
|
|
91
|
+
+ "\n\n"
|
|
28
92
|
+ "Similar submitted:\n"
|
|
29
93
|
+ "Score Most similar\n"
|
|
30
94
|
+ "\n".join(similar_metrics_to_print)
|
|
@@ -150,6 +150,9 @@ class RateLimitingTTLCache(TTLCache):
|
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
def resolve_db_host(db_host):
|
|
153
|
+
if db_host and db_host.endswith('.local'):
|
|
154
|
+
return db_host
|
|
155
|
+
|
|
153
156
|
agent_hostname = datadog_agent.get_hostname()
|
|
154
157
|
if not db_host or db_host in {'localhost', '127.0.0.1'} or db_host.startswith('/'):
|
|
155
158
|
return agent_hostname
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# (C) Datadog, Inc. 2024-present
|
|
2
|
+
# All rights reserved
|
|
3
|
+
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def enable_fips(path_to_openssl_conf=None, path_to_openssl_modules=None):
|
|
9
|
+
path_to_embedded = None
|
|
10
|
+
if os.getenv("OPENSSL_CONF") is None:
|
|
11
|
+
if path_to_openssl_conf is None:
|
|
12
|
+
path_to_embedded = _get_embedded_path() if path_to_embedded is None else path_to_embedded
|
|
13
|
+
path_to_openssl_conf = path_to_embedded / "ssl" / "openssl.cnf"
|
|
14
|
+
if not path_to_openssl_conf.exists():
|
|
15
|
+
raise RuntimeError(f'The configuration file "{path_to_openssl_conf}" does not exist')
|
|
16
|
+
os.environ["OPENSSL_CONF"] = str(path_to_openssl_conf)
|
|
17
|
+
|
|
18
|
+
if os.getenv("OPENSSL_MODULES") is None:
|
|
19
|
+
if path_to_openssl_modules is None:
|
|
20
|
+
path_to_embedded = _get_embedded_path() if path_to_embedded is None else path_to_embedded
|
|
21
|
+
path_to_openssl_modules = path_to_embedded / "lib" / "ossl-modules"
|
|
22
|
+
if not path_to_openssl_conf.exists():
|
|
23
|
+
raise RuntimeError(f'The directory "{path_to_openssl_modules}" does not exist')
|
|
24
|
+
os.environ["OPENSSL_MODULES"] = str(path_to_openssl_modules)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _get_embedded_path():
|
|
28
|
+
import sys
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
|
|
31
|
+
embedded_dir = "embedded3" if os.name == 'nt' else "embedded"
|
|
32
|
+
return Path(sys.executable.split("embedded")[0] + embedded_dir)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: datadog-checks-base
|
|
3
|
-
Version: 37.
|
|
3
|
+
Version: 37.3.0
|
|
4
4
|
Summary: The Datadog Check Toolkit
|
|
5
5
|
Project-URL: Source, https://github.com/DataDog/integrations-core
|
|
6
6
|
Author-email: Datadog <packages@datadoghq.com>
|
|
7
|
-
License: BSD-3-Clause
|
|
7
|
+
License-Expression: BSD-3-Clause
|
|
8
8
|
Keywords: agent,checks,datadog
|
|
9
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
@@ -3,7 +3,7 @@ datadog_checks/config.py,sha256=PrAXGdlLnoV2VMQff_noSaSJJ0wg4BAiGnw7jCQLSik,196
|
|
|
3
3
|
datadog_checks/errors.py,sha256=eFwmnrX-batIgbu-iJyseqAPNO_4rk1UuaKK89evLhg,155
|
|
4
4
|
datadog_checks/log.py,sha256=orvOgMKGNEsqSTLalCAQpWP-ouorpG1A7Gn-j2mRD80,301
|
|
5
5
|
datadog_checks/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
6
|
-
datadog_checks/base/__about__.py,sha256=
|
|
6
|
+
datadog_checks/base/__about__.py,sha256=QRM3_bwJhzb7uJLn2DucBJ-GivjWqyQ1VQY7Sj8SWC8,138
|
|
7
7
|
datadog_checks/base/__init__.py,sha256=rSTDo6-2p_RX6I6wnuXrNMglaatoLRyZFTE5wbHZY8s,1466
|
|
8
8
|
datadog_checks/base/agent.py,sha256=nX9x_BYYizRKGNYfXq5z7S0FZ9xcX_wd2tuxpGe3_8k,350
|
|
9
9
|
datadog_checks/base/config.py,sha256=qcAA4X9sXQZRdwQe8DgiGd2980VBp1SQA0d695tX_tU,604
|
|
@@ -13,7 +13,7 @@ datadog_checks/base/errors.py,sha256=fPcFaR3zHpSkMo8epvF3lRe9KrEnS8g4J0dXM_nvzsw
|
|
|
13
13
|
datadog_checks/base/log.py,sha256=3P5Tq-kWZkqx5AtvQhUk89O1s-5YnE49LJ8xeeKcvB8,6344
|
|
14
14
|
datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,1623
|
|
15
15
|
datadog_checks/base/checks/__init__.py,sha256=a0Wv-Od0BYUA45z37eVOvugflTZMijgGSOuJqndE3DU,263
|
|
16
|
-
datadog_checks/base/checks/base.py,sha256=
|
|
16
|
+
datadog_checks/base/checks/base.py,sha256=QlDA7UxnbiN2oY5sKZ4zhb5h1S9quf9BkIM1o9AedkU,58037
|
|
17
17
|
datadog_checks/base/checks/network.py,sha256=UijP1OVBCpCNKMy6bVkNazHgy6Sdm8qCvCYGPaWuTDo,1968
|
|
18
18
|
datadog_checks/base/checks/kube_leader/__init__.py,sha256=rEM1wqMkx8JLvJpYNHMOy6OdPmCwQ46JSOfE3QDApyY,399
|
|
19
19
|
datadog_checks/base/checks/kube_leader/base_check.py,sha256=2LIRU6a2cJb4byM4Q3v1SVVJjQW8NjVJr_yUKOfjKjU,708
|
|
@@ -39,7 +39,7 @@ datadog_checks/base/checks/openmetrics/v2/__init__.py,sha256=P81FBhJLA9MGpz4L7o_
|
|
|
39
39
|
datadog_checks/base/checks/openmetrics/v2/base.py,sha256=UXytG0ze00rXU13VB0BM_ZK_Y_qC6wfxA-OidFm_MyY,4096
|
|
40
40
|
datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py,sha256=In-tZXMzieSdL2OXJlIAFi78KbQVwuJnGP0iaLH9974,941
|
|
41
41
|
datadog_checks/base/checks/openmetrics/v2/labels.py,sha256=0F0ISh03wS2vVsjbns3FrYDn6gvxj0Xv-2fkA2Hh9D8,7310
|
|
42
|
-
datadog_checks/base/checks/openmetrics/v2/metrics.py,sha256=
|
|
42
|
+
datadog_checks/base/checks/openmetrics/v2/metrics.py,sha256=uDVZOHHRWMW8YUQZBY9jCLzecN5DueRNjImxBm1K82k,2189
|
|
43
43
|
datadog_checks/base/checks/openmetrics/v2/scraper.py,sha256=d4PcJM_b7wkHUBQ5b_IZo_VW_07jQj_gwTgfDrkp1BA,23279
|
|
44
44
|
datadog_checks/base/checks/openmetrics/v2/transform.py,sha256=qv7Y1yvqWm-269mGU7Oq0it8x3VkWUZU2m2d3q-VJZ0,8377
|
|
45
45
|
datadog_checks/base/checks/openmetrics/v2/utils.py,sha256=tpk3htJAz_KwCRqFs2CTjajHkLCs_2TbGdBp514rWOQ,3565
|
|
@@ -89,7 +89,7 @@ datadog_checks/base/stubs/aggregator.py,sha256=GIVfe0IAbvloKlm886PLjLyjVyz9nkOdq
|
|
|
89
89
|
datadog_checks/base/stubs/common.py,sha256=ZGzF2dXy1uVFQGdG_bvz_pMMiULaBcpzra_k9wo9f04,1088
|
|
90
90
|
datadog_checks/base/stubs/datadog_agent.py,sha256=u4e8ZFSt4CO9mxuZ4UinteIJOyLKQgzcHFa0pTzRaCY,5995
|
|
91
91
|
datadog_checks/base/stubs/log.py,sha256=A-eWnzY5gTpTW41Zch-W5CVclzldlmhMTW-vDNFdT1o,836
|
|
92
|
-
datadog_checks/base/stubs/similar.py,sha256=
|
|
92
|
+
datadog_checks/base/stubs/similar.py,sha256=3HO9htx9LV6pRaE1ZGKsPExavTbjPHPK6ZMM2BPYj3Y,8045
|
|
93
93
|
datadog_checks/base/stubs/tagging.py,sha256=zxLdPC4EqHxGiS_HEhbaOsL_s5nZIhN8BDkx2BATOqs,1439
|
|
94
94
|
datadog_checks/base/utils/__init__.py,sha256=TC0q7iCbNqcYjfU5azBNpCni8LAQYOfY6FADE3SZEPA,115
|
|
95
95
|
datadog_checks/base/utils/aws.py,sha256=wxFLWlVFtv5_EURdsXzDhORcTpM0jBlAokcMiPV1xD8,1945
|
|
@@ -98,6 +98,7 @@ datadog_checks/base/utils/constants.py,sha256=QwTey4CWB0NAxm2rcD-wPYRkEyglekQIrA
|
|
|
98
98
|
datadog_checks/base/utils/containers.py,sha256=LBqUzERHxx5TdgcWVQTq1A1WaGCMhzXT9k4Gn0fX3J8,2753
|
|
99
99
|
datadog_checks/base/utils/date.py,sha256=JJmqP84CgVcFJ0cvAmMu8EtM6v96tIESucQNm9eKeEc,2780
|
|
100
100
|
datadog_checks/base/utils/diagnose.py,sha256=eLMe0tISpkzS3yxVR83IHxorQJfHT_Xi6Cq4zzRNxVI,5285
|
|
101
|
+
datadog_checks/base/utils/fips.py,sha256=G92RNoZkrMojaTKi1DiccbvfMFO3adktDZgKjpxkkTw,1400
|
|
101
102
|
datadog_checks/base/utils/functions.py,sha256=iGlybxR6aPPElNxNb2ELOzbk328j9OVBAxredJxdCRw,695
|
|
102
103
|
datadog_checks/base/utils/headers.py,sha256=0SSdC71jwaB61BODfusahCVr1c56GvT9iwt7cidcHP0,1779
|
|
103
104
|
datadog_checks/base/utils/http.py,sha256=MWmPVsCQEkl02X0J4gIte1ACjB3LeK3cwZL2gPDhIX8,39116
|
|
@@ -131,7 +132,7 @@ datadog_checks/base/utils/db/statement_metrics.py,sha256=S0kHPoFqCZtRTZoTI6Pi-Zu
|
|
|
131
132
|
datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
|
|
132
133
|
datadog_checks/base/utils/db/transform.py,sha256=kNdiBZVoZm1oNRNWIatrAfgORjbkRKhs1AgW_aQCj3I,23879
|
|
133
134
|
datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
|
|
134
|
-
datadog_checks/base/utils/db/utils.py,sha256=
|
|
135
|
+
datadog_checks/base/utils/db/utils.py,sha256=95LmtY7rZcrPcNPauu87RDNTktjb7GE1km7nOvmRP9U,16939
|
|
135
136
|
datadog_checks/base/utils/discovery/__init__.py,sha256=fIlgRv7-WJM6Ifo5IhFGK4KcDKrCSGX_frXgiZ9z6Mk,148
|
|
136
137
|
datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
|
|
137
138
|
datadog_checks/base/utils/discovery/discovery.py,sha256=m8w9VRYu78ed0gKvVu4chNrRdSMCquJO3YU1mzeOc00,579
|
|
@@ -199,6 +200,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
|
|
|
199
200
|
datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
|
|
200
201
|
datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
|
|
201
202
|
datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
|
|
202
|
-
datadog_checks_base-37.
|
|
203
|
-
datadog_checks_base-37.
|
|
204
|
-
datadog_checks_base-37.
|
|
203
|
+
datadog_checks_base-37.3.0.dist-info/METADATA,sha256=VlGpxGtTRr5mXjDKJMVVrEc2qC0m5XO2yDNPMAs-6lA,3675
|
|
204
|
+
datadog_checks_base-37.3.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
205
|
+
datadog_checks_base-37.3.0.dist-info/RECORD,,
|