datadog-checks-base 37.9.0__tar.gz → 37.10.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 (390) hide show
  1. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/PKG-INFO +10 -9
  2. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/__about__.py +1 -1
  3. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kubelet_base/base.py +3 -3
  4. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/scraper.py +17 -6
  5. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/agent/memory.py +2 -2
  6. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/statement_metrics.py +23 -3
  7. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/pyproject.toml +11 -8
  8. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_first_scrape_handler.py +45 -38
  9. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/test_kube_leader.py +13 -5
  10. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/test_kubelet_base.py +2 -3
  11. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_db_statements.py +121 -0
  12. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_transformers.py +2 -2
  13. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/.gitignore +0 -0
  14. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/README.md +0 -0
  15. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/__init__.py +0 -0
  16. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/__init__.py +0 -0
  17. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/__init__.pyi +0 -0
  18. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/agent.py +0 -0
  19. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/__init__.py +0 -0
  20. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/__init__.pyi +0 -0
  21. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/base.py +0 -0
  22. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kube_leader/__init__.py +0 -0
  23. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kube_leader/__init__.pyi +0 -0
  24. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kube_leader/base_check.py +0 -0
  25. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kube_leader/mixins.py +0 -0
  26. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kube_leader/record.py +0 -0
  27. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kubelet_base/__init__.py +0 -0
  28. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/kubelet_base/__init__.pyi +0 -0
  29. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/__init__.py +0 -0
  30. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/prometheus.py +0 -0
  31. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/thread_pool.py +0 -0
  32. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/timer.py +0 -0
  33. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/vmware/__init__.py +0 -0
  34. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/vmware/all_metrics.py +0 -0
  35. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/libs/vmware/basic_metrics.py +0 -0
  36. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/logs/__init__.py +0 -0
  37. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/logs/crawler/__init__.py +0 -0
  38. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/logs/crawler/base.py +0 -0
  39. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/logs/crawler/stream.py +0 -0
  40. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/network.py +0 -0
  41. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/__init__.py +0 -0
  42. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/__init__.pyi +0 -0
  43. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/base_check.py +0 -0
  44. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/mixins.py +0 -0
  45. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/__init__.py +0 -0
  46. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/base.py +0 -0
  47. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py +0 -0
  48. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/labels.py +0 -0
  49. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/metrics.py +0 -0
  50. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transform.py +0 -0
  51. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/__init__.py +0 -0
  52. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/__init__.pyi +0 -0
  53. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/counter.py +0 -0
  54. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/counter_gauge.py +0 -0
  55. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/gauge.py +0 -0
  56. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py +0 -0
  57. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/metadata.py +0 -0
  58. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/rate.py +0 -0
  59. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py +0 -0
  60. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/summary.py +0 -0
  61. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py +0 -0
  62. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py +0 -0
  63. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/openmetrics/v2/utils.py +0 -0
  64. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/prometheus/__init__.py +0 -0
  65. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/prometheus/__init__.pyi +0 -0
  66. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/prometheus/base_check.py +0 -0
  67. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/prometheus/mixins.py +0 -0
  68. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/prometheus/prometheus_base.py +0 -0
  69. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/__init__.py +0 -0
  70. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/__init__.pyi +0 -0
  71. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/winpdh.py +0 -0
  72. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/winpdh_base.py +0 -0
  73. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/winpdh_stub.py +0 -0
  74. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/wmi/__init__.py +0 -0
  75. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/wmi/__init__.pyi +0 -0
  76. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/wmi/base.py +0 -0
  77. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/wmi/counter_type.py +0 -0
  78. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/wmi/sampler.py +0 -0
  79. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/win/wmi/types.py +0 -0
  80. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/__init__.py +0 -0
  81. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/__init__.py +0 -0
  82. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/base.py +0 -0
  83. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/connection.py +0 -0
  84. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/constants.py +0 -0
  85. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/counter.py +0 -0
  86. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transform.py +0 -0
  87. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
  88. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/count.py +0 -0
  89. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/gauge.py +0 -0
  90. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/monotonic_count.py +0 -0
  91. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/rate.py +0 -0
  92. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py +0 -0
  93. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py +0 -0
  94. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py +0 -0
  95. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/utils.py +0 -0
  96. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/checks/windows/perf_counters/utils_win32pdh_fix.py +0 -0
  97. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/config.py +0 -0
  98. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/constants.py +0 -0
  99. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/errors.py +0 -0
  100. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/log.py +0 -0
  101. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/__init__.py +0 -0
  102. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/_util.py +0 -0
  103. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/aggregator.py +0 -0
  104. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/common.py +0 -0
  105. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/datadog_agent.py +0 -0
  106. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/log.py +0 -0
  107. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/similar.py +0 -0
  108. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/stubs/tagging.py +0 -0
  109. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/types.py +0 -0
  110. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/__init__.py +0 -0
  111. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/_http_utils.py +0 -0
  112. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/agent/__init__.py +0 -0
  113. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/agent/common.py +0 -0
  114. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/agent/debug.py +0 -0
  115. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/agent/packages.py +0 -0
  116. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/agent/utils.py +0 -0
  117. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/aws.py +0 -0
  118. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/common.py +0 -0
  119. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/concurrency/__init__.py +0 -0
  120. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/concurrency/limiter.py +0 -0
  121. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/constants.py +0 -0
  122. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/containers.py +0 -0
  123. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/date.py +0 -0
  124. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/__init__.py +0 -0
  125. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/__init__.pyi +0 -0
  126. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/core.py +0 -0
  127. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/query.py +0 -0
  128. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/sql.py +0 -0
  129. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/sql_commenter.py +0 -0
  130. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/timed_cache.py +0 -0
  131. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/transform.py +0 -0
  132. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/types.py +0 -0
  133. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/db/utils.py +0 -0
  134. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/diagnose.py +0 -0
  135. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/discovery/__init__.py +0 -0
  136. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/discovery/__init__.pyi +0 -0
  137. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/discovery/cache.py +0 -0
  138. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/discovery/discovery.py +0 -0
  139. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/discovery/filter.py +0 -0
  140. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/fips.py +0 -0
  141. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/format/__init__.py +0 -0
  142. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/format/_json.py +0 -0
  143. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/format/json.py +0 -0
  144. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/functions.py +0 -0
  145. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/headers.py +0 -0
  146. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/http.py +0 -0
  147. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/limiter.py +0 -0
  148. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/metadata/__init__.py +0 -0
  149. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/metadata/__init__.pyi +0 -0
  150. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/metadata/constants.py +0 -0
  151. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/metadata/core.py +0 -0
  152. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/metadata/utils.py +0 -0
  153. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/metadata/version.py +0 -0
  154. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/models/__init__.py +0 -0
  155. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/models/types.py +0 -0
  156. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/models/validation/__init__.py +0 -0
  157. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/models/validation/core.py +0 -0
  158. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/models/validation/utils.py +0 -0
  159. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/network.py +0 -0
  160. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/platform.py +0 -0
  161. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/prometheus/__init__.py +0 -0
  162. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/prometheus/__init__.pyi +0 -0
  163. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/prometheus/functions.py +0 -0
  164. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/prometheus/metrics_pb2.py +0 -0
  165. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/replay/__init__.py +0 -0
  166. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/replay/constants.py +0 -0
  167. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/replay/execute.py +0 -0
  168. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/replay/redirect.py +0 -0
  169. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/secrets.py +0 -0
  170. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/serialization.py +0 -0
  171. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/subprocess_output.py +0 -0
  172. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/tagging.py +0 -0
  173. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/tailfile.py +0 -0
  174. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/time.py +0 -0
  175. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/timeout.py +0 -0
  176. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/tls.py +0 -0
  177. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/tracing.py +0 -0
  178. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/base/utils/tracking.py +0 -0
  179. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/__init__.py +0 -0
  180. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/base.py +0 -0
  181. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/__init__.py +0 -0
  182. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/thread_pool.py +0 -0
  183. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/timer.py +0 -0
  184. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/vmware/__init__.py +0 -0
  185. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/vmware/all_metrics.py +0 -0
  186. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/vmware/basic_metrics.py +0 -0
  187. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/wmi/__init__.py +0 -0
  188. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/libs/wmi/sampler.py +0 -0
  189. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/network.py +0 -0
  190. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/network_checks.py +0 -0
  191. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/openmetrics/__init__.py +0 -0
  192. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/openmetrics/base_check.py +0 -0
  193. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/openmetrics/mixins.py +0 -0
  194. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/prometheus/__init__.py +0 -0
  195. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/prometheus/base_check.py +0 -0
  196. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/prometheus/mixins.py +0 -0
  197. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/prometheus/prometheus_base.py +0 -0
  198. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/prometheus_check/__init__.py +0 -0
  199. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/__init__.py +0 -0
  200. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/winpdh.py +0 -0
  201. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/winpdh_base.py +0 -0
  202. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/winpdh_stub.py +0 -0
  203. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/wmi/__init__.py +0 -0
  204. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/wmi/counter_type.py +0 -0
  205. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/win/wmi/sampler.py +0 -0
  206. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/checks/winwmi_check.py +0 -0
  207. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/config.py +0 -0
  208. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/errors.py +0 -0
  209. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/log.py +0 -0
  210. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/py.typed +0 -0
  211. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/stubs/__init__.py +0 -0
  212. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/stubs/_util.py +0 -0
  213. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/stubs/aggregator.py +0 -0
  214. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/stubs/datadog_agent.py +0 -0
  215. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/__init__.py +0 -0
  216. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/common.py +0 -0
  217. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/containers.py +0 -0
  218. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/headers.py +0 -0
  219. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/limiter.py +0 -0
  220. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/platform.py +0 -0
  221. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/prometheus/__init__.py +0 -0
  222. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/prometheus/functions.py +0 -0
  223. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/prometheus/metrics_pb2.py +0 -0
  224. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/proxy.py +0 -0
  225. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/subprocess_output.py +0 -0
  226. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/tailfile.py +0 -0
  227. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/timeout.py +0 -0
  228. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/datadog_checks/utils/tracing.py +0 -0
  229. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/hatch.toml +0 -0
  230. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/__init__.py +0 -0
  231. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/__init__.py +0 -0
  232. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/__init__.py +0 -0
  233. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/logs/__init__.py +0 -0
  234. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/logs/crawler/__init__.py +0 -0
  235. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/logs/crawler/test_base.py +0 -0
  236. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/__init__.py +0 -0
  237. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/bench_utils.py +0 -0
  238. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_legacy/__init__.py +0 -0
  239. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_legacy/test_bench.py +0 -0
  240. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_legacy/test_compat_scraper.py +0 -0
  241. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_legacy/test_openmetrics.py +0 -0
  242. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_legacy/test_openmetrics_base_check.py +0 -0
  243. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_legacy/utils.py +0 -0
  244. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/__init__.py +0 -0
  245. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_bench.py +0 -0
  246. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_config.py +0 -0
  247. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_interface.py +0 -0
  248. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_options.py +0 -0
  249. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/__init__.py +0 -0
  250. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter.py +0 -0
  251. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter_gauge.py +0 -0
  252. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_gauge.py +0 -0
  253. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_histogram.py +0 -0
  254. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_metadata.py +0 -0
  255. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_native_dynamic.py +0 -0
  256. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_rate.py +0 -0
  257. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_service_check.py +0 -0
  258. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_summary.py +0 -0
  259. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_temporal_percent.py +0 -0
  260. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_time_elapsed.py +0 -0
  261. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/test_transformers/test_type_override.py +0 -0
  262. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/openmetrics/test_v2/utils.py +0 -0
  263. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/prometheus/__init__.py +0 -0
  264. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/prometheus/test_prometheus.py +0 -0
  265. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/prometheus/test_prometheus_base_check.py +0 -0
  266. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/test_agent_check.py +0 -0
  267. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/utils.py +0 -0
  268. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/win/__init__.py +0 -0
  269. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/win/test_pdhbasecheck.py +0 -0
  270. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/win/test_winpdh.py +0 -0
  271. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/win/test_wmicheck.py +0 -0
  272. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/win/test_wmisampler.py +0 -0
  273. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/__init__.py +0 -0
  274. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/conftest.py +0 -0
  275. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/__init__.py +0 -0
  276. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_aggregation.py +0 -0
  277. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_config.py +0 -0
  278. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_filter.py +0 -0
  279. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_health.py +0 -0
  280. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_integration.py +0 -0
  281. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_legacy_support.py +0 -0
  282. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_localization.py +0 -0
  283. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_refresh.py +0 -0
  284. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/test_subclass.py +0 -0
  285. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
  286. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_count.py +0 -0
  287. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_gauge.py +0 -0
  288. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_monotonic_count.py +0 -0
  289. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_rate.py +0 -0
  290. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_service_check.py +0 -0
  291. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_temporal_percent.py +0 -0
  292. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/transformers/test_time_elapsed.py +0 -0
  293. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/checks/windows/perf_counters/utils.py +0 -0
  294. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/test_constants.py +0 -0
  295. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/__init__.py +0 -0
  296. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/concurrency/__init__.py +0 -0
  297. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/concurrency/test_limiter.py +0 -0
  298. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/__init__.py +0 -0
  299. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/common.py +0 -0
  300. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_custom_queries.py +0 -0
  301. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_db_sql.py +0 -0
  302. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_query_executor.py +0 -0
  303. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_query_manager.py +0 -0
  304. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_query_result.py +0 -0
  305. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_sql_commenter.py +0 -0
  306. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_timed_cache.py +0 -0
  307. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/db/test_util.py +0 -0
  308. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/discovery/test_discovery.py +0 -0
  309. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/format/__init__.py +0 -0
  310. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/format/test_json.py +0 -0
  311. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/__init__.py +0 -0
  312. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/common.py +0 -0
  313. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_api.py +0 -0
  314. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_auth.py +0 -0
  315. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_authtoken.py +0 -0
  316. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_config.py +0 -0
  317. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_headers.py +0 -0
  318. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_http.py +0 -0
  319. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_kerberos_int.py +0 -0
  320. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_kerberos_unit.py +0 -0
  321. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_proxy.py +0 -0
  322. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_socks5_proxy_integration.py +0 -0
  323. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/http/test_tls_and_certs.py +0 -0
  324. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/replay/__init__.py +0 -0
  325. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/replay/test_check.py +0 -0
  326. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_agent_packages.py +0 -0
  327. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_agent_utils.py +0 -0
  328. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_aws.py +0 -0
  329. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_diagnose.py +0 -0
  330. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_fips.py +0 -0
  331. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_time.py +0 -0
  332. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_tls.py +0 -0
  333. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_tracing.py +0 -0
  334. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_tracking.py +0 -0
  335. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/base/utils/test_utils.py +0 -0
  336. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-agent/Dockerfile +0 -0
  337. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-agent/configurekerberos.sh +0 -0
  338. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-agent/configurenginx.sh +0 -0
  339. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-agent/entrypoint.sh +0 -0
  340. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-agent/nginx.yaml +0 -0
  341. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-agent.yaml +0 -0
  342. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-kdc/Dockerfile +0 -0
  343. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-kdc/init.sh +0 -0
  344. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-kdc/kdc.conf +0 -0
  345. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-kdc/krb5.conf +0 -0
  346. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-nginx/Dockerfile +0 -0
  347. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-nginx/configurekerberos.sh +0 -0
  348. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-nginx/configurenginx.sh +0 -0
  349. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-nginx/entrypoint.sh +0 -0
  350. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-nginx/nginx.conf +0 -0
  351. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos-nginx/setupkeytab.sh +0 -0
  352. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/kerberos/kerberos.yaml +0 -0
  353. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/socks5-proxy.yaml +0 -0
  354. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/uds/uds-nginx/nginx.conf +0 -0
  355. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/uds/uds-nginx/templates/default.conf.template +0 -0
  356. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/compose/uds/uds.yaml +0 -0
  357. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/conftest.py +0 -0
  358. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/bearer_tokens/custom_token +0 -0
  359. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/bearer_tokens/default_token +0 -0
  360. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/dcos/private-key.pem +0 -0
  361. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/dcos/public-key.pem +0 -0
  362. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/kerberos/krb5.conf +0 -0
  363. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/kubelet_base/pod_list_raw.dat +0 -0
  364. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/kubelet_base/pod_list_raw.json +0 -0
  365. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/prometheus/amazon_msk_jmx_metrics.txt +0 -0
  366. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/prometheus/deprecated.txt +0 -0
  367. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/prometheus/ksm.txt +0 -0
  368. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/prometheus/metrics.txt +0 -0
  369. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/fixtures/prometheus/protobuf.bin +0 -0
  370. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/__init__.py +0 -0
  371. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/config_models/__init__.py +0 -0
  372. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/config_models/defaults.py +0 -0
  373. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/config_models/deprecations.py +0 -0
  374. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/config_models/instance.py +0 -0
  375. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/config_models/shared.py +0 -0
  376. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/config_models/validators.py +0 -0
  377. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/data/spec.yaml +0 -0
  378. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/test_interface.py +0 -0
  379. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/models/test_types.py +0 -0
  380. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/stubs/test_aggregator_metric_has_tag.py +0 -0
  381. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/stubs/test_aggregator_no_duplicate.py +0 -0
  382. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/stubs/test_aggregator_service_checks.py +0 -0
  383. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/stubs/test_aggregator_similar.py +0 -0
  384. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/stubs/test_assert_metric.py +0 -0
  385. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/stubs/test_datadog_agent.py +0 -0
  386. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/test_config.py +0 -0
  387. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/test_log.py +0 -0
  388. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/test_metadata.py +0 -0
  389. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.1}/tests/test_serialization.py +0 -0
  390. {datadog_checks_base-37.9.0 → datadog_checks_base-37.10.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.9.0
3
+ Version: 37.10.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>
@@ -17,33 +17,34 @@ Requires-Dist: mmh3==5.1.0; extra == 'db'
17
17
  Provides-Extra: deps
18
18
  Requires-Dist: binary==1.0.1; extra == 'deps'
19
19
  Requires-Dist: cachetools==5.5.2; extra == 'deps'
20
- Requires-Dist: cryptography==44.0.1; extra == 'deps'
21
- Requires-Dist: ddtrace==2.10.6; extra == 'deps'
20
+ Requires-Dist: cryptography==44.0.2; extra == 'deps'
21
+ Requires-Dist: ddtrace==2.21.4; extra == 'deps'
22
22
  Requires-Dist: jellyfish==1.1.3; extra == 'deps'
23
23
  Requires-Dist: lazy-loader==0.4; extra == 'deps'
24
24
  Requires-Dist: prometheus-client==0.21.1; extra == 'deps'
25
- Requires-Dist: protobuf==5.29.3; extra == 'deps'
26
- Requires-Dist: pydantic==2.10.6; extra == 'deps'
25
+ Requires-Dist: protobuf==6.30.2; extra == 'deps'
26
+ Requires-Dist: pydantic==2.11.1; extra == 'deps'
27
27
  Requires-Dist: python-dateutil==2.9.0.post0; extra == 'deps'
28
- Requires-Dist: pywin32==308; (sys_platform == 'win32') and extra == 'deps'
28
+ Requires-Dist: pywin32==310; (sys_platform == 'win32') and extra == 'deps'
29
29
  Requires-Dist: pyyaml==6.0.2; extra == 'deps'
30
30
  Requires-Dist: requests-toolbelt==1.0.0; extra == 'deps'
31
31
  Requires-Dist: requests-unixsocket2==0.4.2; extra == 'deps'
32
32
  Requires-Dist: requests==2.32.3; extra == 'deps'
33
33
  Requires-Dist: simplejson==3.20.1; extra == 'deps'
34
+ Requires-Dist: urllib3==2.3.0; extra == 'deps'
34
35
  Requires-Dist: wrapt==1.17.2; extra == 'deps'
35
36
  Provides-Extra: http
36
37
  Requires-Dist: aws-requests-auth==0.4.3; extra == 'http'
37
- Requires-Dist: botocore==1.36.26; extra == 'http'
38
+ Requires-Dist: botocore==1.37.23; extra == 'http'
38
39
  Requires-Dist: oauthlib==3.2.2; extra == 'http'
39
40
  Requires-Dist: pyjwt==2.10.1; extra == 'http'
40
- Requires-Dist: pyopenssl==24.3.0; extra == 'http'
41
+ Requires-Dist: pyopenssl==25.0.0; extra == 'http'
41
42
  Requires-Dist: pysocks==1.7.1; extra == 'http'
42
43
  Requires-Dist: requests-kerberos==0.15.0; extra == 'http'
43
44
  Requires-Dist: requests-ntlm==1.3.0; extra == 'http'
44
45
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'http'
45
46
  Provides-Extra: json
46
- Requires-Dist: orjson==3.10.15; extra == 'json'
47
+ Requires-Dist: orjson==3.10.16; extra == 'json'
47
48
  Provides-Extra: kube
48
49
  Requires-Dist: kubernetes==32.0.1; extra == 'kube'
49
50
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'kube'
@@ -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.9.0"
4
+ __version__ = "37.10.1"
@@ -2,9 +2,9 @@
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
4
  import json
5
- from datetime import datetime, timedelta
5
+ from datetime import datetime, timedelta, timezone
6
6
 
7
- from ...utils.date import UTC, parse_rfc3339
7
+ from ...utils.date import parse_rfc3339
8
8
  from .. import AgentCheck
9
9
 
10
10
  try:
@@ -70,7 +70,7 @@ class KubeletBase(AgentCheck):
70
70
  seconds = int(get_config("kubernetes_pod_expiration_duration"))
71
71
  if seconds == 0: # Expiration disabled
72
72
  return None
73
- return datetime.utcnow().replace(tzinfo=UTC) - timedelta(seconds=seconds)
73
+ return datetime.now(timezone.utc) - timedelta(seconds=seconds)
74
74
  except (ValueError, TypeError):
75
75
  return None
76
76
 
@@ -230,13 +230,13 @@ class OpenMetricsScraper:
230
230
  self.use_process_start_time = is_affirmative(config.get('use_process_start_time'))
231
231
 
232
232
  # Used for monotonic counts
233
- self.flush_first_value = False
233
+ self.flush_first_value = None
234
234
 
235
- def scrape(self):
235
+ def _scrape(self):
236
236
  """
237
237
  Execute a scrape, and for each metric collected, transform the metric.
238
238
  """
239
- runtime_data = {'flush_first_value': self.flush_first_value, 'static_tags': self.static_tags}
239
+ runtime_data = {'flush_first_value': bool(self.flush_first_value), 'static_tags': self.static_tags}
240
240
 
241
241
  # Determine which consume method to use based on target_info config
242
242
  if self.target_info:
@@ -251,7 +251,18 @@ class OpenMetricsScraper:
251
251
 
252
252
  transformer(metric, self.generate_sample_data(metric), runtime_data)
253
253
 
254
- self.flush_first_value = True
254
+ def scrape(self):
255
+ try:
256
+ self._scrape()
257
+ self.flush_first_value = True
258
+ except:
259
+ # Don't flush new monotonic counts on next scrape:
260
+ # 1. Previous value may have expired in the aggregator, causing a spike
261
+ # 2. New counter itself may be too old and large when we discover it next time.
262
+ # If we didn't have a successful scrape yet, keep the initial value (use process_start_time to decide).
263
+ if self.flush_first_value:
264
+ self.flush_first_value = False
265
+ raise
255
266
 
256
267
  def consume_metrics(self, runtime_data):
257
268
  """
@@ -260,7 +271,7 @@ class OpenMetricsScraper:
260
271
 
261
272
  metric_parser = self.parse_metrics()
262
273
 
263
- if not self.flush_first_value and self.use_process_start_time:
274
+ if self.flush_first_value is None and self.use_process_start_time:
264
275
  metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
265
276
  if self.label_aggregator.configured:
266
277
  metric_parser = self.label_aggregator(metric_parser)
@@ -283,7 +294,7 @@ class OpenMetricsScraper:
283
294
 
284
295
  metric_parser = self.parse_metrics()
285
296
 
286
- if not self.flush_first_value and self.use_process_start_time:
297
+ if self.flush_first_value is None and self.use_process_start_time:
287
298
  metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
288
299
  if self.label_aggregator.configured:
289
300
  metric_parser = self.label_aggregator(metric_parser)
@@ -4,7 +4,7 @@
4
4
  import gc
5
5
  import linecache
6
6
  import os
7
- from datetime import datetime
7
+ from datetime import datetime, timezone
8
8
 
9
9
  from binary import BinaryUnits, convert_units
10
10
 
@@ -44,7 +44,7 @@ def get_sign(n):
44
44
 
45
45
 
46
46
  def get_timestamp_filename(prefix):
47
- return '{}_{}'.format(prefix, datetime.utcnow().strftime('%Y-%m-%dT%H-%M-%S_%f'))
47
+ return '{}_{}'.format(prefix, datetime.now(timezone.utc).strftime('%Y-%m-%dT%H-%M-%S_%f'))
48
48
 
49
49
 
50
50
  def parse_package_path(path):
@@ -13,9 +13,7 @@ class StatementMetrics:
13
13
 
14
14
  - Postgres: pg_stat_statements
15
15
  - MySQL: performance_schema.events_statements_summary_by_digest
16
- - Oracle: V$SQLAREA
17
16
  - SQL Server: sys.dm_exec_query_stats
18
- - DB2: mon_db_summary
19
17
 
20
18
  These tables are monotonically increasing, so the metrics are computed from the difference
21
19
  in values between check runs.
@@ -24,7 +22,7 @@ class StatementMetrics:
24
22
  def __init__(self):
25
23
  self._previous_statements = {}
26
24
 
27
- def compute_derivative_rows(self, rows, metrics, key):
25
+ def compute_derivative_rows(self, rows, metrics, key, execution_indicators=None):
28
26
  """
29
27
  Compute the first derivative of column-based metrics for a given set of rows. This function
30
28
  takes the difference of the previous check run's values and the current check run's values
@@ -41,10 +39,20 @@ class StatementMetrics:
41
39
  :params rows (_List[dict]_): rows from current check run
42
40
  :params metrics (_List[str]_): the metrics to compute for each row
43
41
  :params key (_callable_): function for an ID which uniquely identifies a row across runs
42
+ :params execution_indicators (_List[str]_): list of metrics that must change to consider a query as executed.
43
+ These are typically metrics that increment only when a query actually executes, such as:
44
+ - PostgreSQL: 'calls' from pg_stat_statements
45
+ - MySQL: 'exec_count' from performance_schema.events_statements_summary_by_digest
46
+ - SQL Server: 'execution_count' from sys.dm_exec_query_stats
47
+ This helps filter out cases where a normalized query was evicted then re-inserted with same call count
48
+ (usually 1) and slight duration change. In this case, the new normalized query entry should be treated
49
+ as the baseline for future diffs.
44
50
  :return (_List[dict]_): a list of rows with the first derivative of the metrics
45
51
  """
46
52
  result = []
47
53
  metrics = set(metrics)
54
+ if execution_indicators:
55
+ execution_indicators = set(execution_indicators)
48
56
 
49
57
  merged_rows, dropped_metrics = _merge_duplicate_rows(rows, metrics, key)
50
58
  if dropped_metrics:
@@ -69,6 +77,12 @@ class StatementMetrics:
69
77
  # 2. No changes since the previous run: There is no need to store metrics of 0, since that is implied by
70
78
  # the absence of metrics. On any given check run, most rows will have no difference so this optimization
71
79
  # avoids having to send a lot of unnecessary metrics.
80
+ #
81
+ # 3. Execution indicators: If execution_indicators is specified, only consider a query as changed if at
82
+ # least one of the execution indicator metrics has changed. This helps filter out cases where an old or
83
+ # less frequently executed normalized query was evicted due to the stats table being full, and then
84
+ # re-inserted to the stats table with a small call count and slight duration change. In this case,
85
+ # the new normalized query entry should be treated as the baseline for future diffs.
72
86
 
73
87
  diffed_row = {k: row[k] - prev[k] if k in metric_columns else row[k] for k in row.keys()}
74
88
 
@@ -79,6 +93,12 @@ class StatementMetrics:
79
93
  # of potentially including truncated rows that exceed previous run counts.
80
94
  continue
81
95
 
96
+ # If execution_indicators is specified, check if any of the execution indicator metrics have changed
97
+ if execution_indicators:
98
+ indicator_columns = execution_indicators & metric_columns
99
+ if not any(diffed_row[k] > 0 for k in indicator_columns):
100
+ continue
101
+
82
102
  # No changes to the query; no metric needed
83
103
  if all(diffed_row[k] == 0 for k in metric_columns):
84
104
  continue
@@ -36,35 +36,38 @@ db = [
36
36
  deps = [
37
37
  "binary==1.0.1",
38
38
  "cachetools==5.5.2",
39
- "cryptography==44.0.1",
40
- "ddtrace==2.10.6",
39
+ "cryptography==44.0.2",
40
+ "ddtrace==2.21.4",
41
41
  "jellyfish==1.1.3",
42
42
  "lazy-loader==0.4",
43
43
  "prometheus-client==0.21.1",
44
- "protobuf==5.29.3",
45
- "pydantic==2.10.6",
44
+ "protobuf==6.30.2",
45
+ "pydantic==2.11.1",
46
46
  "python-dateutil==2.9.0.post0",
47
- "pywin32==308; sys_platform == 'win32'",
47
+ "pywin32==310; sys_platform == 'win32'",
48
48
  "pyyaml==6.0.2",
49
49
  "requests-toolbelt==1.0.0",
50
50
  "requests-unixsocket2==0.4.2",
51
51
  "requests==2.32.3",
52
52
  "simplejson==3.20.1",
53
+ # urllib3 is a dependency of requests that we explicitly
54
+ # make use of in a few places
55
+ "urllib3==2.3.0",
53
56
  "wrapt==1.17.2",
54
57
  ]
55
58
  http = [
56
59
  "aws-requests-auth==0.4.3",
57
- "botocore==1.36.26",
60
+ "botocore==1.37.23",
58
61
  "oauthlib==3.2.2",
59
62
  "pyjwt==2.10.1",
60
- "pyopenssl==24.3.0",
63
+ "pyopenssl==25.0.0",
61
64
  "pysocks==1.7.1",
62
65
  "requests-kerberos==0.15.0",
63
66
  "requests-ntlm==1.3.0",
64
67
  "requests-oauthlib==2.0.0",
65
68
  ]
66
69
  json = [
67
- "orjson==3.10.15",
70
+ "orjson==3.10.16",
68
71
  ]
69
72
  kube = [
70
73
  "kubernetes==32.0.1",
@@ -86,8 +86,6 @@ def test_first_scrape_handler(
86
86
  agent_start_time,
87
87
  process_start_time,
88
88
  ):
89
- mock_http_response(_make_test_data(process_start_time))
90
-
91
89
  check = get_check(
92
90
  {
93
91
  'metrics': ['.*'],
@@ -98,53 +96,62 @@ def test_first_scrape_handler(
98
96
 
99
97
  datadog_agent.set_process_start_time(agent_start_time)
100
98
 
101
- for _ in range(0, 5):
99
+ for idx in range(0, 10):
102
100
  aggregator.reset()
103
- dd_run_check(check)
104
101
 
105
- aggregator.assert_metric(
106
- 'test.go_memstats_alloc_bytes.count',
107
- metric_type=aggregator.MONOTONIC_COUNT,
108
- count=1,
109
- flush_first_value=expect_first_flush,
110
- )
111
- aggregator.assert_metric(
112
- 'test.go_gc_duration_seconds.count',
113
- metric_type=aggregator.MONOTONIC_COUNT,
114
- count=1,
115
- flush_first_value=expect_first_flush,
116
- )
102
+ if idx != 5:
103
+ mock_http_response(_make_test_data(process_start_time))
104
+ dd_run_check(check)
117
105
 
118
- if with_buckets:
119
- aggregator.assert_histogram_bucket(
120
- 'test.skydns_skydns_dns_request_duration_seconds',
121
- None,
122
- None,
123
- None,
124
- True,
125
- None,
126
- None,
127
- count=2,
128
- flush_first_value=expect_first_flush,
129
- )
130
- else:
131
- aggregator.assert_metric(
132
- 'test.skydns_skydns_dns_request_duration_seconds.count',
133
- metric_type=aggregator.MONOTONIC_COUNT,
134
- count=1,
135
- flush_first_value=expect_first_flush,
136
- )
137
106
  aggregator.assert_metric(
138
- 'test.skydns_skydns_dns_request_duration_seconds.sum',
107
+ 'test.go_memstats_alloc_bytes.count',
139
108
  metric_type=aggregator.MONOTONIC_COUNT,
140
109
  count=1,
141
110
  flush_first_value=expect_first_flush,
142
111
  )
143
112
  aggregator.assert_metric(
144
- 'test.skydns_skydns_dns_request_duration_seconds.bucket',
113
+ 'test.go_gc_duration_seconds.count',
145
114
  metric_type=aggregator.MONOTONIC_COUNT,
146
115
  count=1,
147
116
  flush_first_value=expect_first_flush,
148
117
  )
149
118
 
150
- expect_first_flush = True
119
+ if with_buckets:
120
+ aggregator.assert_histogram_bucket(
121
+ 'test.skydns_skydns_dns_request_duration_seconds',
122
+ None,
123
+ None,
124
+ None,
125
+ True,
126
+ None,
127
+ None,
128
+ count=2,
129
+ flush_first_value=expect_first_flush,
130
+ )
131
+ else:
132
+ aggregator.assert_metric(
133
+ 'test.skydns_skydns_dns_request_duration_seconds.count',
134
+ metric_type=aggregator.MONOTONIC_COUNT,
135
+ count=1,
136
+ flush_first_value=expect_first_flush,
137
+ )
138
+ aggregator.assert_metric(
139
+ 'test.skydns_skydns_dns_request_duration_seconds.sum',
140
+ metric_type=aggregator.MONOTONIC_COUNT,
141
+ count=1,
142
+ flush_first_value=expect_first_flush,
143
+ )
144
+ aggregator.assert_metric(
145
+ 'test.skydns_skydns_dns_request_duration_seconds.bucket',
146
+ metric_type=aggregator.MONOTONIC_COUNT,
147
+ count=1,
148
+ flush_first_value=expect_first_flush,
149
+ )
150
+
151
+ expect_first_flush = True
152
+ else:
153
+ mock_http_response("", status_code=500)
154
+ with pytest.raises(Exception):
155
+ dd_run_check(check)
156
+
157
+ expect_first_flush = False
@@ -3,7 +3,7 @@
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
4
 
5
5
  import json
6
- from datetime import datetime, timedelta
6
+ from datetime import datetime, timedelta, timezone
7
7
 
8
8
  import mock
9
9
  import pytest
@@ -160,7 +160,9 @@ class TestElectionRecord:
160
160
  make_record(
161
161
  holder="me", duration=30, renew="2018-12-18T12:32:22Z"
162
162
  ): "Invalid record: no acquire time recorded",
163
- make_record(holder="me", duration=30, renew=datetime.utcnow(), acquire="2018-12-18T12:32:22Z"): None,
163
+ make_record(
164
+ holder="me", duration=30, renew=datetime.now(timezone.utc), acquire="2018-12-18T12:32:22Z"
165
+ ): None,
164
166
  make_record(
165
167
  holder="me", duration=30, renew="invalid", acquire="2018-12-18T12:32:22Z"
166
168
  ): "Invalid record: bad format for renewTime field",
@@ -179,7 +181,10 @@ class TestElectionRecord:
179
181
 
180
182
  def test_seconds_until_renew(self):
181
183
  raw = make_record(
182
- holder="me", duration=30, acquire="2018-12-18T12:32:22Z", renew=datetime.utcnow() + timedelta(seconds=20)
184
+ holder="me",
185
+ duration=30,
186
+ acquire="2018-12-18T12:32:22Z",
187
+ renew=datetime.now(timezone.utc) + timedelta(seconds=20),
183
188
  )
184
189
 
185
190
  record = ElectionRecordAnnotation("endpoints", raw)
@@ -187,7 +192,10 @@ class TestElectionRecord:
187
192
  assert record.seconds_until_renew < 21
188
193
 
189
194
  raw = make_record(
190
- holder="me", duration=30, acquire="2018-12-18T12:32:22Z", renew=datetime.utcnow() - timedelta(seconds=5)
195
+ holder="me",
196
+ duration=30,
197
+ acquire="2018-12-18T12:32:22Z",
198
+ renew=datetime.now(timezone.utc) - timedelta(seconds=5),
191
199
  )
192
200
 
193
201
  record = ElectionRecordAnnotation("endpoints", raw)
@@ -246,7 +254,7 @@ class TestBaseCheck:
246
254
 
247
255
  def test_ok_configmap(self, aggregator, mock_read_configmap, mock_incluster):
248
256
  mock_read_configmap.return_value = make_fake_object(
249
- make_record(holder="me", duration=30, renew=datetime.utcnow(), acquire="2018-12-18T12:32:22Z")
257
+ make_record(holder="me", duration=30, renew=datetime.now(timezone.utc), acquire="2018-12-18T12:32:22Z")
250
258
  )
251
259
  c = KubeLeaderElectionBaseCheck()
252
260
  c.check(CM_INSTANCE)
@@ -3,12 +3,11 @@
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
4
  import json
5
5
  import os
6
- from datetime import datetime
6
+ from datetime import datetime, timezone
7
7
 
8
8
  import mock
9
9
 
10
10
  from datadog_checks.base.checks.kubelet_base.base import KubeletBase, urljoin
11
- from datadog_checks.base.utils.date import UTC
12
11
  from datadog_checks.dev import get_here
13
12
 
14
13
  HERE = get_here()
@@ -64,7 +63,7 @@ def test_compute_pod_expiration_datetime(monkeypatch):
64
63
  with mock.patch("datadog_checks.base.checks.kubelet_base.base.get_config", return_value="900"):
65
64
  expire = KubeletBase.compute_pod_expiration_datetime()
66
65
  assert expire is not None
67
- now = datetime.utcnow().replace(tzinfo=UTC)
66
+ now = datetime.now(timezone.utc)
68
67
  assert abs((now - expire).seconds - 60 * 15) < 2
69
68
 
70
69
 
@@ -303,3 +303,124 @@ class TestStatementMetrics:
303
303
  def test_compute_derivative_rows_benchmark(self, benchmark):
304
304
  sm = StatementMetrics()
305
305
  benchmark(self.__run_compute_derivative_rows, sm)
306
+
307
+ def test_compute_derivative_rows_with_execution_indicators(self):
308
+ sm = StatementMetrics()
309
+
310
+ def key(row):
311
+ return (row['query'], row['db'], row['user'])
312
+
313
+ metrics = ['calls', 'total_time', 'rows']
314
+ execution_indicators = ['calls']
315
+
316
+ # Initial state
317
+ rows1 = [
318
+ {'calls': 10, 'total_time': 1000, 'rows': 50, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
319
+ {'calls': 5, 'total_time': 500, 'rows': 25, 'query': 'SELECT 2', 'db': 'test', 'user': 'user1'},
320
+ ]
321
+
322
+ sm.compute_derivative_rows(rows1, metrics, key=key, execution_indicators=execution_indicators)
323
+
324
+ # Second run - only duration changes (should be ignored)
325
+ rows2 = [
326
+ {'calls': 10, 'total_time': 1001, 'rows': 50, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
327
+ {'calls': 5, 'total_time': 501, 'rows': 25, 'query': 'SELECT 2', 'db': 'test', 'user': 'user1'},
328
+ ]
329
+ assert [] == sm.compute_derivative_rows(rows2, metrics, key=key, execution_indicators=execution_indicators)
330
+
331
+ # Third run - calls change (should be included)
332
+ rows3 = [
333
+ {'calls': 11, 'total_time': 1002, 'rows': 51, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
334
+ {'calls': 5, 'total_time': 502, 'rows': 25, 'query': 'SELECT 2', 'db': 'test', 'user': 'user1'},
335
+ ]
336
+ result = sm.compute_derivative_rows(rows3, metrics, key=key, execution_indicators=execution_indicators)
337
+ assert len(result) == 1
338
+ assert result[0]['calls'] == 1
339
+ assert result[0]['total_time'] == 1
340
+ assert result[0]['rows'] == 1
341
+
342
+ def test_compute_derivative_rows_with_multiple_execution_indicators(self):
343
+ sm = StatementMetrics()
344
+
345
+ def key(row):
346
+ return (row['query'], row['db'], row['user'])
347
+
348
+ metrics = ['calls', 'executions', 'total_time', 'rows']
349
+ execution_indicators = ['calls', 'executions']
350
+
351
+ # Initial state
352
+ rows1 = [
353
+ {
354
+ 'calls': 10,
355
+ 'executions': 10,
356
+ 'total_time': 1000,
357
+ 'rows': 50,
358
+ 'query': 'SELECT 1',
359
+ 'db': 'test',
360
+ 'user': 'user1',
361
+ },
362
+ ]
363
+
364
+ sm.compute_derivative_rows(rows1, metrics, key=key, execution_indicators=execution_indicators)
365
+
366
+ # Second run - only one execution indicator changes
367
+ rows2 = [
368
+ {
369
+ 'calls': 11,
370
+ 'executions': 10,
371
+ 'total_time': 1001,
372
+ 'rows': 50,
373
+ 'query': 'SELECT 1',
374
+ 'db': 'test',
375
+ 'user': 'user1',
376
+ },
377
+ ]
378
+ result = sm.compute_derivative_rows(rows2, metrics, key=key, execution_indicators=execution_indicators)
379
+ assert len(result) == 1
380
+ assert result[0]['calls'] == 1
381
+ assert result[0]['executions'] == 0
382
+ assert result[0]['total_time'] == 1
383
+ assert result[0]['rows'] == 0
384
+
385
+ # Third run - both execution indicators change
386
+ rows3 = [
387
+ {
388
+ 'calls': 12,
389
+ 'executions': 11,
390
+ 'total_time': 1002,
391
+ 'rows': 51,
392
+ 'query': 'SELECT 1',
393
+ 'db': 'test',
394
+ 'user': 'user1',
395
+ },
396
+ ]
397
+ result = sm.compute_derivative_rows(rows3, metrics, key=key, execution_indicators=execution_indicators)
398
+ assert len(result) == 1
399
+ assert result[0]['calls'] == 1
400
+ assert result[0]['executions'] == 1
401
+ assert result[0]['total_time'] == 1
402
+ assert result[0]['rows'] == 1
403
+
404
+ def test_compute_derivative_rows_with_invalid_execution_indicators(self):
405
+ sm = StatementMetrics()
406
+
407
+ def key(row):
408
+ return (row['query'], row['db'], row['user'])
409
+
410
+ metrics = ['calls', 'total_time', 'rows']
411
+
412
+ # Test with empty execution indicators
413
+ rows1 = [
414
+ {'calls': 10, 'total_time': 1000, 'rows': 50, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
415
+ ]
416
+ rows2 = [
417
+ {'calls': 11, 'total_time': 1001, 'rows': 51, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
418
+ ]
419
+
420
+ # Empty execution indicators should behave like no execution indicators specified
421
+ _ = sm.compute_derivative_rows(rows1, metrics, key=key, execution_indicators=[])
422
+ result = sm.compute_derivative_rows(rows2, metrics, key=key, execution_indicators=[])
423
+ assert len(result) == 1
424
+ assert result[0]['calls'] == 1
425
+ assert result[0]['total_time'] == 1
426
+ assert result[0]['rows'] == 1
@@ -2,7 +2,7 @@
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
4
  import time
5
- from datetime import datetime, timedelta
5
+ from datetime import datetime, timedelta, timezone
6
6
 
7
7
  from dateutil.tz import gettz
8
8
 
@@ -466,7 +466,7 @@ class TestColumnTransformers:
466
466
  ],
467
467
  'tags': ['test:bar'],
468
468
  },
469
- executor=mock_executor([['tag1', datetime.utcnow() + timedelta(hours=-1)]]),
469
+ executor=mock_executor([['tag1', datetime.now(timezone.utc) + timedelta(hours=-1)]]),
470
470
  tags=['test:foo'],
471
471
  )
472
472
  query_manager.compile_queries()