datadog-checks-base 37.4.0__tar.gz → 37.6.1__tar.gz

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.
Files changed (370) hide show
  1. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/PKG-INFO +13 -14
  2. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/__about__.py +1 -1
  3. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/labels.py +57 -19
  4. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/scraper.py +37 -2
  5. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/agent/packages.py +1 -6
  6. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/http.py +38 -2
  7. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/pyproject.toml +12 -13
  8. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/logs/crawler/test_base.py +0 -1
  9. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_options.py +194 -0
  10. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_authtoken.py +19 -4
  11. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_http.py +34 -0
  12. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/.gitignore +0 -0
  13. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/README.md +0 -0
  14. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/__init__.py +0 -0
  15. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/__init__.py +0 -0
  16. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/agent.py +0 -0
  17. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/__init__.py +0 -0
  18. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/base.py +0 -0
  19. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/kube_leader/__init__.py +0 -0
  20. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/kube_leader/base_check.py +0 -0
  21. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/kube_leader/mixins.py +0 -0
  22. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/kube_leader/record.py +0 -0
  23. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/kubelet_base/__init__.py +0 -0
  24. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/kubelet_base/base.py +0 -0
  25. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/__init__.py +0 -0
  26. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/prometheus.py +0 -0
  27. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/thread_pool.py +0 -0
  28. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/timer.py +0 -0
  29. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/vmware/__init__.py +0 -0
  30. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/vmware/all_metrics.py +0 -0
  31. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/libs/vmware/basic_metrics.py +0 -0
  32. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/logs/__init__.py +0 -0
  33. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/logs/crawler/__init__.py +0 -0
  34. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/logs/crawler/base.py +0 -0
  35. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/logs/crawler/stream.py +0 -0
  36. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/network.py +0 -0
  37. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/__init__.py +0 -0
  38. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/base_check.py +0 -0
  39. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/mixins.py +0 -0
  40. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/__init__.py +0 -0
  41. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/base.py +0 -0
  42. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py +0 -0
  43. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/metrics.py +0 -0
  44. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transform.py +0 -0
  45. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/__init__.py +0 -0
  46. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/counter.py +0 -0
  47. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/counter_gauge.py +0 -0
  48. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/gauge.py +0 -0
  49. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py +0 -0
  50. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/metadata.py +0 -0
  51. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/rate.py +0 -0
  52. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py +0 -0
  53. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/summary.py +0 -0
  54. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py +0 -0
  55. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py +0 -0
  56. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/openmetrics/v2/utils.py +0 -0
  57. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/prometheus/__init__.py +0 -0
  58. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/prometheus/base_check.py +0 -0
  59. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/prometheus/mixins.py +0 -0
  60. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/prometheus/prometheus_base.py +0 -0
  61. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/__init__.py +0 -0
  62. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/winpdh.py +0 -0
  63. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/winpdh_base.py +0 -0
  64. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/winpdh_stub.py +0 -0
  65. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/wmi/__init__.py +0 -0
  66. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/wmi/counter_type.py +0 -0
  67. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/wmi/sampler.py +0 -0
  68. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/win/wmi/types.py +0 -0
  69. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/__init__.py +0 -0
  70. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/__init__.py +0 -0
  71. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/base.py +0 -0
  72. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/connection.py +0 -0
  73. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/constants.py +0 -0
  74. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/counter.py +0 -0
  75. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transform.py +0 -0
  76. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
  77. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/count.py +0 -0
  78. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/gauge.py +0 -0
  79. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/monotonic_count.py +0 -0
  80. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/rate.py +0 -0
  81. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py +0 -0
  82. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py +0 -0
  83. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py +0 -0
  84. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/utils.py +0 -0
  85. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/checks/windows/perf_counters/utils_win32pdh_fix.py +0 -0
  86. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/config.py +0 -0
  87. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/constants.py +0 -0
  88. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/ddyaml.py +0 -0
  89. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/errors.py +0 -0
  90. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/log.py +0 -0
  91. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/__init__.py +0 -0
  92. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/_util.py +0 -0
  93. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/aggregator.py +0 -0
  94. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/common.py +0 -0
  95. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/datadog_agent.py +0 -0
  96. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/log.py +0 -0
  97. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/similar.py +0 -0
  98. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/stubs/tagging.py +0 -0
  99. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/types.py +0 -0
  100. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/__init__.py +0 -0
  101. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/agent/__init__.py +0 -0
  102. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/agent/common.py +0 -0
  103. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/agent/debug.py +0 -0
  104. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/agent/memory.py +0 -0
  105. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/agent/utils.py +0 -0
  106. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/aws.py +0 -0
  107. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/common.py +0 -0
  108. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/concurrency/__init__.py +0 -0
  109. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/concurrency/limiter.py +0 -0
  110. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/constants.py +0 -0
  111. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/containers.py +0 -0
  112. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/date.py +0 -0
  113. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/__init__.py +0 -0
  114. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/core.py +0 -0
  115. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/query.py +0 -0
  116. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/sql.py +0 -0
  117. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/sql_commenter.py +0 -0
  118. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/statement_metrics.py +0 -0
  119. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/timed_cache.py +0 -0
  120. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/transform.py +0 -0
  121. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/types.py +0 -0
  122. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/db/utils.py +0 -0
  123. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/diagnose.py +0 -0
  124. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/discovery/__init__.py +0 -0
  125. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/discovery/cache.py +0 -0
  126. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/discovery/discovery.py +0 -0
  127. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/discovery/filter.py +0 -0
  128. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/fips.py +0 -0
  129. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/functions.py +0 -0
  130. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/headers.py +0 -0
  131. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/limiter.py +0 -0
  132. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/metadata/__init__.py +0 -0
  133. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/metadata/constants.py +0 -0
  134. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/metadata/core.py +0 -0
  135. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/metadata/utils.py +0 -0
  136. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/metadata/version.py +0 -0
  137. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/models/__init__.py +0 -0
  138. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/models/types.py +0 -0
  139. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/models/validation/__init__.py +0 -0
  140. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/models/validation/core.py +0 -0
  141. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/models/validation/utils.py +0 -0
  142. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/network.py +0 -0
  143. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/platform.py +0 -0
  144. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/prometheus/__init__.py +0 -0
  145. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/prometheus/functions.py +0 -0
  146. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/prometheus/metrics_pb2.py +0 -0
  147. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/replay/__init__.py +0 -0
  148. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/replay/constants.py +0 -0
  149. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/replay/execute.py +0 -0
  150. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/replay/redirect.py +0 -0
  151. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/secrets.py +0 -0
  152. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/serialization.py +0 -0
  153. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/subprocess_output.py +0 -0
  154. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/tagging.py +0 -0
  155. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/tailfile.py +0 -0
  156. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/time.py +0 -0
  157. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/timeout.py +0 -0
  158. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/tls.py +0 -0
  159. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/tracing.py +0 -0
  160. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/base/utils/tracking.py +0 -0
  161. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/__init__.py +0 -0
  162. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/base.py +0 -0
  163. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/__init__.py +0 -0
  164. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/thread_pool.py +0 -0
  165. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/timer.py +0 -0
  166. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/vmware/__init__.py +0 -0
  167. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/vmware/all_metrics.py +0 -0
  168. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/vmware/basic_metrics.py +0 -0
  169. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/wmi/__init__.py +0 -0
  170. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/libs/wmi/sampler.py +0 -0
  171. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/network.py +0 -0
  172. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/network_checks.py +0 -0
  173. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/openmetrics/__init__.py +0 -0
  174. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/openmetrics/base_check.py +0 -0
  175. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/openmetrics/mixins.py +0 -0
  176. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/prometheus/__init__.py +0 -0
  177. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/prometheus/base_check.py +0 -0
  178. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/prometheus/mixins.py +0 -0
  179. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/prometheus/prometheus_base.py +0 -0
  180. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/prometheus_check/__init__.py +0 -0
  181. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/__init__.py +0 -0
  182. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/winpdh.py +0 -0
  183. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/winpdh_base.py +0 -0
  184. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/winpdh_stub.py +0 -0
  185. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/wmi/__init__.py +0 -0
  186. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/wmi/counter_type.py +0 -0
  187. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/win/wmi/sampler.py +0 -0
  188. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/checks/winwmi_check.py +0 -0
  189. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/config.py +0 -0
  190. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/errors.py +0 -0
  191. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/log.py +0 -0
  192. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/py.typed +0 -0
  193. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/stubs/__init__.py +0 -0
  194. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/stubs/_util.py +0 -0
  195. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/stubs/aggregator.py +0 -0
  196. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/stubs/datadog_agent.py +0 -0
  197. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/__init__.py +0 -0
  198. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/common.py +0 -0
  199. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/containers.py +0 -0
  200. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/headers.py +0 -0
  201. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/limiter.py +0 -0
  202. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/platform.py +0 -0
  203. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/prometheus/__init__.py +0 -0
  204. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/prometheus/functions.py +0 -0
  205. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/prometheus/metrics_pb2.py +0 -0
  206. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/proxy.py +0 -0
  207. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/subprocess_output.py +0 -0
  208. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/tailfile.py +0 -0
  209. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/timeout.py +0 -0
  210. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/datadog_checks/utils/tracing.py +0 -0
  211. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/hatch.toml +0 -0
  212. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/__init__.py +0 -0
  213. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/__init__.py +0 -0
  214. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/__init__.py +0 -0
  215. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/logs/__init__.py +0 -0
  216. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/logs/crawler/__init__.py +0 -0
  217. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/__init__.py +0 -0
  218. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/bench_utils.py +0 -0
  219. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_legacy/__init__.py +0 -0
  220. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_legacy/test_bench.py +0 -0
  221. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_legacy/test_compat_scraper.py +0 -0
  222. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_legacy/test_openmetrics.py +0 -0
  223. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_legacy/test_openmetrics_base_check.py +0 -0
  224. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_legacy/utils.py +0 -0
  225. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/__init__.py +0 -0
  226. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_bench.py +0 -0
  227. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_config.py +0 -0
  228. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_first_scrape_handler.py +0 -0
  229. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_interface.py +0 -0
  230. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/__init__.py +0 -0
  231. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter.py +0 -0
  232. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter_gauge.py +0 -0
  233. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_gauge.py +0 -0
  234. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_histogram.py +0 -0
  235. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_metadata.py +0 -0
  236. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_native_dynamic.py +0 -0
  237. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_rate.py +0 -0
  238. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_service_check.py +0 -0
  239. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_summary.py +0 -0
  240. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_temporal_percent.py +0 -0
  241. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_time_elapsed.py +0 -0
  242. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_type_override.py +0 -0
  243. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/openmetrics/test_v2/utils.py +0 -0
  244. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/prometheus/__init__.py +0 -0
  245. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/prometheus/test_prometheus.py +0 -0
  246. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/prometheus/test_prometheus_base_check.py +0 -0
  247. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/test_agent_check.py +0 -0
  248. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/test_kube_leader.py +0 -0
  249. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/test_kubelet_base.py +0 -0
  250. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/utils.py +0 -0
  251. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/win/__init__.py +0 -0
  252. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/win/test_pdhbasecheck.py +0 -0
  253. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/win/test_winpdh.py +0 -0
  254. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/win/test_wmicheck.py +0 -0
  255. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/win/test_wmisampler.py +0 -0
  256. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/__init__.py +0 -0
  257. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/__init__.py +0 -0
  258. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_aggregation.py +0 -0
  259. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_config.py +0 -0
  260. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_filter.py +0 -0
  261. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_health.py +0 -0
  262. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_integration.py +0 -0
  263. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_legacy_support.py +0 -0
  264. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_localization.py +0 -0
  265. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_refresh.py +0 -0
  266. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/test_subclass.py +0 -0
  267. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
  268. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_count.py +0 -0
  269. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_gauge.py +0 -0
  270. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_monotonic_count.py +0 -0
  271. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_rate.py +0 -0
  272. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_service_check.py +0 -0
  273. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_temporal_percent.py +0 -0
  274. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/transformers/test_time_elapsed.py +0 -0
  275. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/checks/windows/perf_counters/utils.py +0 -0
  276. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/test_constants.py +0 -0
  277. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/test_ddyaml.py +0 -0
  278. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/__init__.py +0 -0
  279. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/concurrency/__init__.py +0 -0
  280. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/concurrency/test_limiter.py +0 -0
  281. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/__init__.py +0 -0
  282. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/common.py +0 -0
  283. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_custom_queries.py +0 -0
  284. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_db_sql.py +0 -0
  285. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_db_statements.py +0 -0
  286. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_query_executor.py +0 -0
  287. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_query_manager.py +0 -0
  288. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_query_result.py +0 -0
  289. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_sql_commenter.py +0 -0
  290. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_timed_cache.py +0 -0
  291. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_transformers.py +0 -0
  292. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/db/test_util.py +0 -0
  293. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/discovery/test_discovery.py +0 -0
  294. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/__init__.py +0 -0
  295. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/common.py +0 -0
  296. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_api.py +0 -0
  297. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_auth.py +0 -0
  298. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_config.py +0 -0
  299. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_headers.py +0 -0
  300. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_kerberos_int.py +0 -0
  301. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_kerberos_unit.py +0 -0
  302. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_proxy.py +0 -0
  303. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_socks5_proxy_integration.py +0 -0
  304. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/http/test_tls_and_certs.py +0 -0
  305. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/replay/__init__.py +0 -0
  306. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/replay/test_check.py +0 -0
  307. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_agent_packages.py +0 -0
  308. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_agent_utils.py +0 -0
  309. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_aws.py +0 -0
  310. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_diagnose.py +0 -0
  311. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_time.py +0 -0
  312. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_tls.py +0 -0
  313. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_tracing.py +0 -0
  314. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_tracking.py +0 -0
  315. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/base/utils/test_utils.py +0 -0
  316. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-agent/Dockerfile +0 -0
  317. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-agent/configurekerberos.sh +0 -0
  318. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-agent/configurenginx.sh +0 -0
  319. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-agent/entrypoint.sh +0 -0
  320. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-agent/nginx.yaml +0 -0
  321. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-agent.yaml +0 -0
  322. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-kdc/Dockerfile +0 -0
  323. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-kdc/init.sh +0 -0
  324. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-kdc/kdc.conf +0 -0
  325. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-kdc/krb5.conf +0 -0
  326. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-nginx/Dockerfile +0 -0
  327. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-nginx/configurekerberos.sh +0 -0
  328. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-nginx/configurenginx.sh +0 -0
  329. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-nginx/entrypoint.sh +0 -0
  330. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-nginx/nginx.conf +0 -0
  331. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos-nginx/setupkeytab.sh +0 -0
  332. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/kerberos/kerberos.yaml +0 -0
  333. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/socks5-proxy.yaml +0 -0
  334. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/uds/uds-nginx/nginx.conf +0 -0
  335. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/uds/uds-nginx/templates/default.conf.template +0 -0
  336. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/compose/uds/uds.yaml +0 -0
  337. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/conftest.py +0 -0
  338. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/bearer_tokens/custom_token +0 -0
  339. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/bearer_tokens/default_token +0 -0
  340. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/dcos/private-key.pem +0 -0
  341. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/dcos/public-key.pem +0 -0
  342. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/ddyaml/valid_conf.yaml +0 -0
  343. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/kerberos/krb5.conf +0 -0
  344. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/kubelet_base/pod_list_raw.dat +0 -0
  345. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/kubelet_base/pod_list_raw.json +0 -0
  346. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/prometheus/amazon_msk_jmx_metrics.txt +0 -0
  347. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/prometheus/deprecated.txt +0 -0
  348. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/prometheus/ksm.txt +0 -0
  349. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/prometheus/metrics.txt +0 -0
  350. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/fixtures/prometheus/protobuf.bin +0 -0
  351. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/__init__.py +0 -0
  352. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/config_models/__init__.py +0 -0
  353. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/config_models/defaults.py +0 -0
  354. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/config_models/deprecations.py +0 -0
  355. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/config_models/instance.py +0 -0
  356. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/config_models/shared.py +0 -0
  357. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/config_models/validators.py +0 -0
  358. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/data/spec.yaml +0 -0
  359. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/test_interface.py +0 -0
  360. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/models/test_types.py +0 -0
  361. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/stubs/test_aggregator_metric_has_tag.py +0 -0
  362. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/stubs/test_aggregator_no_duplicate.py +0 -0
  363. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/stubs/test_aggregator_service_checks.py +0 -0
  364. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/stubs/test_aggregator_similar.py +0 -0
  365. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/stubs/test_datadog_agent.py +0 -0
  366. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/test_config.py +0 -0
  367. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/test_log.py +0 -0
  368. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/test_metadata.py +0 -0
  369. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/test_serialization.py +0 -0
  370. {datadog_checks_base-37.4.0 → datadog_checks_base-37.6.1}/tests/test_zzz_run_last.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datadog-checks-base
3
- Version: 37.4.0
3
+ Version: 37.6.1
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>
@@ -13,40 +13,39 @@ Classifier: License :: OSI Approved :: BSD License
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Topic :: System :: Monitoring
15
15
  Provides-Extra: db
16
- Requires-Dist: mmh3==4.1.0; extra == 'db'
16
+ Requires-Dist: mmh3==5.1.0; extra == 'db'
17
17
  Provides-Extra: deps
18
18
  Requires-Dist: binary==1.0.1; extra == 'deps'
19
- Requires-Dist: cachetools==5.5.0; extra == 'deps'
19
+ Requires-Dist: cachetools==5.5.1; extra == 'deps'
20
20
  Requires-Dist: cryptography==43.0.1; extra == 'deps'
21
21
  Requires-Dist: ddtrace==2.10.6; extra == 'deps'
22
- Requires-Dist: importlib-metadata==2.1.3; (python_version < '3.8') and extra == 'deps'
23
- Requires-Dist: jellyfish==1.1.0; extra == 'deps'
24
- Requires-Dist: prometheus-client==0.20.0; extra == 'deps'
25
- Requires-Dist: protobuf==5.27.3; extra == 'deps'
26
- Requires-Dist: pydantic==2.8.2; extra == 'deps'
22
+ Requires-Dist: jellyfish==1.1.3; extra == 'deps'
23
+ Requires-Dist: prometheus-client==0.21.1; extra == 'deps'
24
+ Requires-Dist: protobuf==5.29.3; extra == 'deps'
25
+ Requires-Dist: pydantic==2.10.6; extra == 'deps'
27
26
  Requires-Dist: python-dateutil==2.9.0.post0; extra == 'deps'
28
- Requires-Dist: pywin32==306; (sys_platform == 'win32') and extra == 'deps'
27
+ Requires-Dist: pywin32==308; (sys_platform == 'win32') and extra == 'deps'
29
28
  Requires-Dist: pyyaml==6.0.2; extra == 'deps'
30
29
  Requires-Dist: requests-toolbelt==1.0.0; extra == 'deps'
31
30
  Requires-Dist: requests-unixsocket2==0.4.2; extra == 'deps'
32
31
  Requires-Dist: requests==2.32.3; extra == 'deps'
33
32
  Requires-Dist: simplejson==3.19.3; extra == 'deps'
34
33
  Requires-Dist: uptime==3.0.1; extra == 'deps'
35
- Requires-Dist: wrapt==1.16.0; extra == 'deps'
34
+ Requires-Dist: wrapt==1.17.2; extra == 'deps'
36
35
  Provides-Extra: http
37
36
  Requires-Dist: aws-requests-auth==0.4.3; extra == 'http'
38
- Requires-Dist: botocore==1.35.10; extra == 'http'
37
+ Requires-Dist: botocore==1.36.16; extra == 'http'
39
38
  Requires-Dist: oauthlib==3.2.2; extra == 'http'
40
- Requires-Dist: pyjwt==2.9.0; extra == 'http'
39
+ Requires-Dist: pyjwt==2.10.1; extra == 'http'
41
40
  Requires-Dist: pyopenssl==24.2.1; extra == 'http'
42
41
  Requires-Dist: pysocks==1.7.1; extra == 'http'
43
42
  Requires-Dist: requests-kerberos==0.15.0; extra == 'http'
44
43
  Requires-Dist: requests-ntlm==1.3.0; extra == 'http'
45
44
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'http'
46
45
  Provides-Extra: json
47
- Requires-Dist: orjson==3.10.7; extra == 'json'
46
+ Requires-Dist: orjson==3.10.15; extra == 'json'
48
47
  Provides-Extra: kube
49
- Requires-Dist: kubernetes==30.1.0; extra == 'kube'
48
+ Requires-Dist: kubernetes==32.0.0; extra == 'kube'
50
49
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'kube'
51
50
  Description-Content-Type: text/markdown
52
51
 
@@ -1,4 +1,4 @@
1
1
  # (C) Datadog, Inc. 2018-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
- __version__ = "37.4.0"
4
+ __version__ = "37.6.1"
@@ -1,21 +1,27 @@
1
1
  # (C) Datadog, Inc. 2020-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
+ from collections import ChainMap
5
+
4
6
  from ....utils.functions import no_op
5
7
 
6
8
 
7
9
  class LabelAggregator:
8
10
  def __init__(self, check, config):
9
11
  share_labels = config.get('share_labels', {})
10
- if not isinstance(share_labels, dict):
11
- raise TypeError('Setting `share_labels` must be a mapping')
12
- elif not share_labels:
12
+ self.target_info = config.get('target_info', False)
13
+ self.target_info_labels = {}
14
+
15
+ self._validate_type(share_labels, dict, "Setting `share_labels` must be a mapping")
16
+ self._validate_type(self.target_info, bool, "Setting `target_info` must be a boolean")
17
+
18
+ if not share_labels and not self.target_info:
13
19
  self.populate = no_op
14
20
  return
15
21
 
16
22
  self.cache_shared_labels = config.get('cache_shared_labels', True)
17
23
  self.shared_labels_cached = False
18
-
24
+ self.info_metric = {'target_info': {}}
19
25
  self.metric_config = {}
20
26
  for metric, config in share_labels.items():
21
27
  data = self.metric_config[metric] = {}
@@ -31,6 +37,7 @@ class LabelAggregator:
31
37
  raise TypeError(f'Option `values` for metric `{metric}` of setting `share_labels` must be an array')
32
38
 
33
39
  allowed_values = set()
40
+
34
41
  for i, value in enumerate(values, 1):
35
42
  value = str(value)
36
43
 
@@ -72,34 +79,32 @@ class LabelAggregator:
72
79
 
73
80
  self.unconditional_labels = {}
74
81
 
82
+ def _validate_type(self, value, expected_type, error_message):
83
+ if not isinstance(value, expected_type):
84
+ raise TypeError(error_message)
85
+
75
86
  def __call__(self, metrics):
76
87
  if self.cache_shared_labels:
77
88
  if self.shared_labels_cached:
78
89
  yield from metrics
79
90
  else:
80
- metric_config = self.metric_config.copy()
91
+ metric_config, target_info_metric = self.copy_configs()
81
92
 
82
93
  for metric in metrics:
83
- if metric_config and metric.name in metric_config:
84
- self.collect(metric, metric_config.pop(metric.name))
85
-
94
+ self.process_metric(metric, metric_config, target_info_metric)
86
95
  yield metric
87
96
 
88
97
  self.shared_labels_cached = True
89
98
  else:
90
99
  try:
91
- metric_config = self.metric_config.copy()
92
-
93
- # Cache every encountered metric until the desired labels have been collected
100
+ metric_config, target_info_metric = self.copy_configs()
94
101
  cached_metrics = []
95
102
 
96
103
  for metric in metrics:
97
- if metric.name in metric_config:
98
- self.collect(metric, metric_config.pop(metric.name))
99
-
104
+ self.process_metric(metric, metric_config, target_info_metric)
100
105
  cached_metrics.append(metric)
101
106
 
102
- if not metric_config:
107
+ if not (metric_config or target_info_metric):
103
108
  break
104
109
 
105
110
  yield from cached_metrics
@@ -108,6 +113,24 @@ class LabelAggregator:
108
113
  self.label_sets.clear()
109
114
  self.unconditional_labels.clear()
110
115
 
116
+ def copy_configs(self):
117
+ return self.metric_config.copy(), self.info_metric.copy()
118
+
119
+ def process_metric(self, metric, *configs):
120
+ """
121
+ Collects labels from shared_labels + target_info metrics
122
+ """
123
+ for config in configs:
124
+ if config and metric.name in config:
125
+ self.collect(metric, config.pop(metric.name))
126
+
127
+ def process_target_info(self, metric):
128
+ """
129
+ Updates cached target info metrics
130
+ """
131
+ if metric.samples[0].labels != self.target_info_labels:
132
+ self.target_info_labels = metric.samples[0].labels
133
+
111
134
  def collect(self, metric, config):
112
135
  allowed_values = config.get('values')
113
136
 
@@ -147,13 +170,28 @@ class LabelAggregator:
147
170
  if label in labels:
148
171
  self.unconditional_labels[label] = value
149
172
  else:
150
- for sample in self.allowed_samples(metric, allowed_values):
151
- for label, value in sample.labels.items():
152
- self.unconditional_labels[label] = value
173
+ # Store target_info metric labels to be applied to other metrics in payload
174
+ if metric.name == 'target_info':
175
+ self.target_info_labels.update(
176
+ {
177
+ label: value
178
+ for sample in self.allowed_samples(metric, allowed_values)
179
+ for label, value in sample.labels.items()
180
+ }
181
+ )
182
+ else:
183
+ # Store shared labels in a seperate attribute
184
+ self.unconditional_labels.update(
185
+ {
186
+ label: value
187
+ for sample in self.allowed_samples(metric, allowed_values)
188
+ for label, value in sample.labels.items()
189
+ }
190
+ )
153
191
 
154
192
  def populate(self, labels):
155
193
  label_set = frozenset(labels.items())
156
- labels.update(self.unconditional_labels)
194
+ labels.update(ChainMap(self.unconditional_labels, self.target_info_labels))
157
195
 
158
196
  for matching_label_set, shared_labels in self.label_sets:
159
197
  # Check for subset without incurring the cost of a `.issubset` lookup and call
@@ -58,6 +58,7 @@ class OpenMetricsScraper:
58
58
 
59
59
  # Parse the configuration
60
60
  self.endpoint = config['openmetrics_endpoint']
61
+ self.target_info = config.get('target_info', False)
61
62
 
62
63
  self.metric_transformer = MetricTransformer(self.check, config)
63
64
  self.label_aggregator = LabelAggregator(self.check, config)
@@ -238,7 +239,13 @@ class OpenMetricsScraper:
238
239
  """
239
240
  runtime_data = {'flush_first_value': self.flush_first_value, 'static_tags': self.static_tags}
240
241
 
241
- for metric in self.consume_metrics(runtime_data):
242
+ # Determine which consume method to use based on target_info config
243
+ if self.target_info:
244
+ consume_method = self.consume_metrics_w_target_info
245
+ else:
246
+ consume_method = self.consume_metrics
247
+
248
+ for metric in consume_method(runtime_data):
242
249
  transformer = self.metric_transformer.get(metric)
243
250
  if transformer is None:
244
251
  continue
@@ -248,23 +255,52 @@ class OpenMetricsScraper:
248
255
  self.flush_first_value = True
249
256
 
250
257
  def consume_metrics(self, runtime_data):
258
+ """
259
+ Yield the processed metrics and filter out excluded metrics, without checking for target_info metrics.
260
+ """
261
+
262
+ metric_parser = self.parse_metrics()
263
+
264
+ if not self.flush_first_value and self.use_process_start_time:
265
+ metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
266
+ if self.label_aggregator.configured:
267
+ metric_parser = self.label_aggregator(metric_parser)
268
+
269
+ for metric in metric_parser:
270
+ # Skip excluded metrics
271
+ if metric.name in self.exclude_metrics or (
272
+ self.exclude_metrics_pattern is not None and self.exclude_metrics_pattern.search(metric.name)
273
+ ):
274
+ self.submit_telemetry_number_of_ignored_metric_samples(metric)
275
+ continue
276
+
277
+ yield metric
278
+
279
+ def consume_metrics_w_target_info(self, runtime_data):
251
280
  """
252
281
  Yield the processed metrics and filter out excluded metrics.
282
+ Additionally, handle target_info metrics.
253
283
  """
254
284
 
255
285
  metric_parser = self.parse_metrics()
286
+
256
287
  if not self.flush_first_value and self.use_process_start_time:
257
288
  metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
258
289
  if self.label_aggregator.configured:
259
290
  metric_parser = self.label_aggregator(metric_parser)
260
291
 
261
292
  for metric in metric_parser:
293
+ # Skip excluded metrics
262
294
  if metric.name in self.exclude_metrics or (
263
295
  self.exclude_metrics_pattern is not None and self.exclude_metrics_pattern.search(metric.name)
264
296
  ):
265
297
  self.submit_telemetry_number_of_ignored_metric_samples(metric)
266
298
  continue
267
299
 
300
+ # Process target_info metrics
301
+ if metric.name == 'target_info':
302
+ self.label_aggregator.process_target_info(metric)
303
+
268
304
  yield metric
269
305
 
270
306
  def parse_metrics(self):
@@ -312,7 +348,6 @@ class OpenMetricsScraper:
312
348
  """
313
349
  Yield a sample of processed data.
314
350
  """
315
-
316
351
  label_normalizer = get_label_normalizer(metric.type)
317
352
 
318
353
  for sample in metric.samples:
@@ -1,12 +1,7 @@
1
1
  # (C) Datadog, Inc. 2019-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
- import sys
5
-
6
- if sys.version_info >= (3, 8):
7
- from importlib.metadata import distributions
8
- else:
9
- from importlib_metadata import distributions
4
+ from importlib.metadata import distributions
10
5
 
11
6
  DATADOG_CHECK_PREFIX = 'datadog-'
12
7
 
@@ -52,6 +52,8 @@ LOGGER = logging.getLogger(__file__)
52
52
  # https://tools.ietf.org/html/rfc2988
53
53
  DEFAULT_TIMEOUT = 10
54
54
 
55
+ DEFAULT_EXPIRATION = 300
56
+
55
57
  # 16 KiB seems optimal, and is also the standard chunk size of the Bittorrent protocol:
56
58
  # https://www.bittorrent.org/beps/bep_0003.html
57
59
  DEFAULT_CHUNK_SIZE = 16
@@ -92,6 +94,7 @@ STANDARD_FIELDS = {
92
94
  'tls_private_key': None,
93
95
  'tls_protocols_allowed': DEFAULT_PROTOCOL_VERSIONS,
94
96
  'tls_verify': True,
97
+ 'tls_ciphers': 'ALL',
95
98
  'timeout': DEFAULT_TIMEOUT,
96
99
  'use_legacy_auth_encoding': True,
97
100
  'username': None,
@@ -153,6 +156,7 @@ class RequestsWrapper(object):
153
156
  'auth_token_handler',
154
157
  'request_size',
155
158
  'tls_protocols_allowed',
159
+ 'tls_ciphers_allowed',
156
160
  )
157
161
 
158
162
  def __init__(self, instance, init_config, remapper=None, logger=None, session=None):
@@ -347,6 +351,14 @@ class RequestsWrapper(object):
347
351
  if config['kerberos_cache']:
348
352
  self.request_hooks.append(lambda: handle_kerberos_cache(config['kerberos_cache']))
349
353
 
354
+ ciphers = config.get('tls_ciphers')
355
+ if ciphers:
356
+ if 'ALL' in ciphers:
357
+ updated_ciphers = "ALL"
358
+ else:
359
+ updated_ciphers = ":".join(ciphers)
360
+ self.tls_ciphers_allowed = updated_ciphers
361
+
350
362
  def get(self, url, **options):
351
363
  return self._request('get', url, options)
352
364
 
@@ -465,6 +477,7 @@ class RequestsWrapper(object):
465
477
  try:
466
478
  context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS)
467
479
  context.verify_mode = ssl.CERT_NONE
480
+ context.set_ciphers(self.tls_ciphers_allowed)
468
481
 
469
482
  with context.wrap_socket(sock, server_hostname=hostname) as secure_sock:
470
483
  der_cert = secure_sock.getpeercert(binary_form=True)
@@ -856,8 +869,16 @@ class AuthTokenOAuthReader(object):
856
869
 
857
870
  # https://www.rfc-editor.org/rfc/rfc6749#section-4.4.3
858
871
  self._token = response['access_token']
859
- self._expiration = get_timestamp() + response['expires_in']
860
-
872
+ self._expiration = get_timestamp()
873
+ try:
874
+ # According to https://www.rfc-editor.org/rfc/rfc6749#section-5.1, the `expires_in` field is optional
875
+ self._expiration += _parse_expires_in(response.get('expires_in'))
876
+ except TypeError:
877
+ LOGGER.debug(
878
+ 'The `expires_in` field of the OAuth2 response is not a number, defaulting to %s',
879
+ DEFAULT_EXPIRATION,
880
+ )
881
+ self._expiration += DEFAULT_EXPIRATION
861
882
  return self._token
862
883
 
863
884
 
@@ -991,6 +1012,21 @@ def quote_uds_url(url):
991
1012
  return urlunparse(parsed)
992
1013
 
993
1014
 
1015
+ def _parse_expires_in(token_expiration):
1016
+ if isinstance(token_expiration, int) or isinstance(token_expiration, float):
1017
+ return token_expiration
1018
+ if isinstance(token_expiration, str):
1019
+ try:
1020
+ token_expiration = int(token_expiration)
1021
+ except ValueError:
1022
+ LOGGER.debug('Could not convert %s to an integer', token_expiration)
1023
+ else:
1024
+ LOGGER.debug('Unexpected type for `expires_in`: %s.', type(token_expiration))
1025
+ token_expiration = None
1026
+
1027
+ return token_expiration
1028
+
1029
+
994
1030
  # For documentation generation
995
1031
  # TODO: use an enum and remove STANDARD_FIELDS when mkdocstrings supports it
996
1032
  class StandardFields(object):
@@ -31,33 +31,32 @@ license = "BSD-3-Clause"
31
31
 
32
32
  [project.optional-dependencies]
33
33
  db = [
34
- "mmh3==4.1.0",
34
+ "mmh3==5.1.0",
35
35
  ]
36
36
  deps = [
37
37
  "binary==1.0.1",
38
- "cachetools==5.5.0",
38
+ "cachetools==5.5.1",
39
39
  "cryptography==43.0.1",
40
40
  "ddtrace==2.10.6",
41
- "importlib-metadata==2.1.3; python_version < '3.8'",
42
- "jellyfish==1.1.0",
43
- "prometheus-client==0.20.0",
44
- "protobuf==5.27.3",
45
- "pydantic==2.8.2",
41
+ "jellyfish==1.1.3",
42
+ "prometheus-client==0.21.1",
43
+ "protobuf==5.29.3",
44
+ "pydantic==2.10.6",
46
45
  "python-dateutil==2.9.0.post0",
47
- "pywin32==306; sys_platform == 'win32'",
46
+ "pywin32==308; sys_platform == 'win32'",
48
47
  "pyyaml==6.0.2",
49
48
  "requests-toolbelt==1.0.0",
50
49
  "requests-unixsocket2==0.4.2",
51
50
  "requests==2.32.3",
52
51
  "simplejson==3.19.3",
53
52
  "uptime==3.0.1",
54
- "wrapt==1.16.0",
53
+ "wrapt==1.17.2",
55
54
  ]
56
55
  http = [
57
56
  "aws-requests-auth==0.4.3",
58
- "botocore==1.35.10",
57
+ "botocore==1.36.16",
59
58
  "oauthlib==3.2.2",
60
- "pyjwt==2.9.0",
59
+ "pyjwt==2.10.1",
61
60
  "pyopenssl==24.2.1",
62
61
  "pysocks==1.7.1",
63
62
  "requests-kerberos==0.15.0",
@@ -65,10 +64,10 @@ http = [
65
64
  "requests-oauthlib==2.0.0",
66
65
  ]
67
66
  json = [
68
- "orjson==3.10.7",
67
+ "orjson==3.10.15",
69
68
  ]
70
69
  kube = [
71
- "kubernetes==30.1.0",
70
+ "kubernetes==32.0.0",
72
71
  "requests-oauthlib==2.0.0",
73
72
  ]
74
73
 
@@ -6,7 +6,6 @@ from datadog_checks.base.checks.logs.crawler.stream import LogRecord, LogStream
6
6
 
7
7
 
8
8
  def test_submission(dd_run_check, datadog_agent):
9
-
10
9
  class TestLogStream(LogStream):
11
10
  def __init__(self, start, **kwargs):
12
11
  super().__init__(**kwargs)
@@ -681,6 +681,200 @@ class TestShareLabels:
681
681
 
682
682
  aggregator.assert_all_metrics_covered()
683
683
 
684
+ def test_target_info_tags_propagation(self, aggregator, dd_run_check, mock_http_response):
685
+
686
+ check = get_check({'metrics': ['.+'], 'target_info': True})
687
+
688
+ mock_http_response(
689
+ """
690
+ # HELP target Target metadata
691
+ # TYPE target info
692
+ target_info{env="prod", region="europe"} 1.0
693
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
694
+ # TYPE go_memstats_alloc_bytes gauge
695
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
696
+ """
697
+ )
698
+
699
+ dd_run_check(check)
700
+
701
+ aggregator.assert_metric(
702
+ 'test.go_memstats_alloc_bytes',
703
+ value=6396288,
704
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
705
+ metric_type=aggregator.GAUGE,
706
+ )
707
+
708
+ aggregator.assert_all_metrics_covered()
709
+
710
+ def test_target_info_tags_propagation_unordered(self, aggregator, dd_run_check, mock_http_response):
711
+
712
+ check = get_check({'metrics': ['.+'], 'target_info': True, 'cache_shared_labels': False})
713
+
714
+ mock_http_response(
715
+ """
716
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
717
+ # TYPE go_memstats_alloc_bytes gauge
718
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
719
+ # HELP target Target metadata
720
+ # TYPE target info
721
+ target_info{env="prod", region="europe"} 1.0
722
+ """
723
+ )
724
+
725
+ dd_run_check(check)
726
+
727
+ aggregator.assert_metric(
728
+ 'test.go_memstats_alloc_bytes',
729
+ value=6396288,
730
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
731
+ metric_type=aggregator.GAUGE,
732
+ )
733
+
734
+ aggregator.assert_all_metrics_covered()
735
+
736
+ def test_target_info_tags_propagation_unordered_w_cache(self, aggregator, dd_run_check, mock_http_response):
737
+
738
+ check = get_check({'metrics': ['.+'], 'target_info': True})
739
+
740
+ mock_http_response(
741
+ """
742
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
743
+ # TYPE go_memstats_alloc_bytes gauge
744
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
745
+ # HELP target Target metadata
746
+ # TYPE target info
747
+ target_info{env="prod", region="europe"} 1.0
748
+ """
749
+ )
750
+
751
+ dd_run_check(check)
752
+
753
+ aggregator.assert_metric(
754
+ 'test.go_memstats_alloc_bytes',
755
+ value=6396288,
756
+ tags=['endpoint:test', 'foo:bar'],
757
+ metric_type=aggregator.GAUGE,
758
+ )
759
+
760
+ dd_run_check(check)
761
+
762
+ aggregator.assert_metric(
763
+ 'test.go_memstats_alloc_bytes',
764
+ value=6396288,
765
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
766
+ metric_type=aggregator.GAUGE,
767
+ )
768
+
769
+ aggregator.assert_all_metrics_covered()
770
+
771
+ def test_target_info_update_cache(self, aggregator, dd_run_check, mock_http_response):
772
+
773
+ check = get_check({'metrics': ['.+'], 'target_info': True})
774
+ check_var = check
775
+
776
+ mock_http_response(
777
+ """
778
+ # HELP target Target metadata
779
+ # TYPE target info
780
+ target_info{env="prod", region="europe"} 1.0
781
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
782
+ # TYPE go_memstats_alloc_bytes gauge
783
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
784
+ """
785
+ )
786
+
787
+ dd_run_check(check_var)
788
+
789
+ aggregator.assert_metric(
790
+ 'test.go_memstats_alloc_bytes',
791
+ value=6396288,
792
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
793
+ metric_type=aggregator.GAUGE,
794
+ )
795
+
796
+ mock_http_response(
797
+ """
798
+ # HELP target Target metadata
799
+ # TYPE target info
800
+ target_info{env="stg", region="asia"} 1.0
801
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
802
+ # TYPE go_memstats_alloc_bytes gauge
803
+ go_memstats_alloc_bytes{foo="bar2"} 6.396288e+06
804
+ """
805
+ )
806
+
807
+ dd_run_check(check_var)
808
+
809
+ aggregator.assert_metric(
810
+ 'test.go_memstats_alloc_bytes',
811
+ value=6396288,
812
+ tags=['endpoint:test', 'foo:bar2', 'env:stg', 'region:asia'],
813
+ metric_type=aggregator.GAUGE,
814
+ )
815
+
816
+ aggregator.assert_all_metrics_covered()
817
+
818
+ def test_target_info_w_shared_labels_cache(self, aggregator, dd_run_check, mock_http_response):
819
+
820
+ check = get_check({'metrics': ['.+'], 'share_labels': {'go_memstats_free_bytes': True}, 'target_info': True})
821
+ check_var = check
822
+
823
+ mock_http_response(
824
+ """
825
+ # HELP target Target metadata
826
+ # TYPE target info
827
+ target_info{env="prod", region="europe"} 1.0
828
+ # HELP go_memstats_free_bytes Number of bytes free and available for use.
829
+ # TYPE go_memstats_free_bytes gauge
830
+ go_memstats_free_bytes{foo="bar"} 6.396288e+06
831
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
832
+ # TYPE go_memstats_alloc_bytes gauge
833
+ go_memstats_alloc_bytes{bar="foo"} 6.396288e+06
834
+ """
835
+ )
836
+
837
+ dd_run_check(check_var)
838
+
839
+ aggregator.assert_metric(
840
+ 'test.go_memstats_alloc_bytes',
841
+ value=6396288,
842
+ tags=['endpoint:test', 'foo:bar', 'bar:foo', 'env:prod', 'region:europe'],
843
+ metric_type=aggregator.GAUGE,
844
+ )
845
+
846
+ mock_http_response(
847
+ """
848
+ # HELP target Target metadata
849
+ # TYPE target info
850
+ target_info{env="stg", region="asia"} 1.0
851
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
852
+ # TYPE go_memstats_alloc_bytes gauge
853
+ go_memstats_alloc_bytes{foo2="bar2"} 6.396288e+06
854
+ # HELP go_memstats_free_bytes Number of bytes free and available for use.
855
+ # TYPE go_memstats_free_bytes gauge
856
+ go_memstats_free_bytes{bar2="baz2"} 6.396288e+06
857
+ """
858
+ )
859
+
860
+ dd_run_check(check_var)
861
+
862
+ aggregator.assert_metric(
863
+ 'test.go_memstats_alloc_bytes',
864
+ value=6396288,
865
+ tags=['endpoint:test', 'foo:bar', 'foo2:bar2', 'env:stg', 'region:asia'],
866
+ metric_type=aggregator.GAUGE,
867
+ )
868
+
869
+ aggregator.assert_metric(
870
+ 'test.go_memstats_free_bytes',
871
+ value=6396288,
872
+ tags=['endpoint:test', 'env:stg', 'region:asia', 'bar2:baz2', 'foo:bar'],
873
+ metric_type=aggregator.GAUGE,
874
+ )
875
+
876
+ aggregator.assert_all_metrics_covered()
877
+
684
878
 
685
879
  class TestIgnoreTags:
686
880
  def test_simple_match(self, aggregator, dd_run_check, mock_http_response):