ddapm-test-agent 1.36.0__tar.gz → 1.37.0__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 (290) hide show
  1. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/PKG-INFO +14 -4
  2. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/README.md +11 -2
  3. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/agent.py +98 -13
  4. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/remoteconfig.py +2 -2
  5. ddapm_test_agent-1.37.0/ddapm_test_agent/static/style.css +1679 -0
  6. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/base.html +31 -0
  7. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/config.html +440 -0
  8. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/dashboard.html +90 -0
  9. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/macros.html +40 -0
  10. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/requests.html +1925 -0
  11. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/session_detail.html +37 -0
  12. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/sessions.html +23 -0
  13. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/snapshot_detail.html +410 -0
  14. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/snapshots.html +86 -0
  15. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/trace_detail.html +37 -0
  16. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/tracer_flares.html +640 -0
  17. ddapm_test_agent-1.37.0/ddapm_test_agent/templates/traces.html +24 -0
  18. ddapm_test_agent-1.37.0/ddapm_test_agent/web.py +1523 -0
  19. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/PKG-INFO +14 -4
  20. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/SOURCES.txt +18 -0
  21. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/requires.txt +2 -1
  22. ddapm_test_agent-1.37.0/releasenotes/notes/add-feature-flags-evp-endpoint-da7786735ac02f50.yaml +4 -0
  23. ddapm_test_agent-1.37.0/releasenotes/notes/add-web-ui-304c84316f2b4818.yaml +6 -0
  24. ddapm_test_agent-1.37.0/releasenotes/notes/fix-otlp-endpoint-response-type-18822a3ac85e1cb7.yaml +4 -0
  25. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/setup.py +2 -1
  26. ddapm_test_agent-1.37.0/test_deps.txt +4 -0
  27. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/conftest.py +4 -0
  28. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/integration_snapshots/test_multi_trace.json +14 -14
  29. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/integration_snapshots/test_single_trace.json +5 -5
  30. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/integration_snapshots/test_trace_distributed_propagated.json +7 -7
  31. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/integration_snapshots/test_trace_distributed_same_payload.json +14 -14
  32. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/integration_snapshots/test_trace_missing_received.json +7 -7
  33. ddapm_test_agent-1.37.0/tests/integration_snapshots/test_trace_stats.json +135 -0
  34. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_agent.py +10 -0
  35. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_checks.py +2 -0
  36. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_logs.py +4 -0
  37. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_metrics.py +4 -0
  38. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_snapshot_integration.py +2 -0
  39. ddapm_test_agent-1.36.0/test_deps.txt +0 -4
  40. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/.dockerignore +0 -0
  41. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/.github/workflows/docker.yml +0 -0
  42. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/.github/workflows/main.yml +0 -0
  43. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/.github/workflows/publish_pypi.yml +0 -0
  44. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/.github/workflows/releasenote.yml +0 -0
  45. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/.gitignore +0 -0
  46. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/Dockerfile +0 -0
  47. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/Dockerfile.windows +0 -0
  48. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/LICENSE.BSD3 +0 -0
  49. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/LICENSE.apache2 +0 -0
  50. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/__init__.py +0 -0
  51. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/apmtelemetry.py +0 -0
  52. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/checks.py +0 -0
  53. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/client.py +0 -0
  54. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/cmd.py +0 -0
  55. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/context.py +0 -0
  56. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/fmt.py +0 -0
  57. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/integration.py +0 -0
  58. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/logs.py +0 -0
  59. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/metrics.py +0 -0
  60. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/trace.py +0 -0
  61. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/trace_checks.py +0 -0
  62. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/trace_snapshot.py +0 -0
  63. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/tracerflare.py +0 -0
  64. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/tracestats.py +0 -0
  65. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/tracestats_snapshot.py +0 -0
  66. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent/vcr_proxy.py +0 -0
  67. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/dependency_links.txt +0 -0
  68. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/entry_points.txt +0 -0
  69. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/not-zip-safe +0 -0
  70. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/ddapm_test_agent.egg-info/top_level.txt +0 -0
  71. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/pyproject.toml +0 -0
  72. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/check-releasenotes +0 -0
  73. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/config.yaml +0 -0
  74. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/1.0-e192f5064e917083.yaml +0 -0
  75. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/Add-metrics.process_id-to-ignored-attributes-62b264f0ea591326.yaml +0 -0
  76. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/Add-values-handling-to-span_event-array_value-to-mirror-agent-ee7483c90c263ff4.yaml +0 -0
  77. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/Checks-changed-to-opt-in-8716cac4ecdbb1c2.yaml +0 -0
  78. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/SNAPSHOT_REGEX_PLACEHOLDERS-1d2c5e2711d1953b.yaml +0 -0
  79. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/SNAPSHOT_REGEX_PLACEHOLDERS-compare-c829e7a4df4fa1f4.yaml +0 -0
  80. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/Settings-endpoint-928ae5b6e8ddc625.yaml +0 -0
  81. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/Telemetry-requests-delay-2586180b286ce393.yaml +0 -0
  82. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/Use-default-value-for-null-fields-in-tracestats-55d465f489efb2ba.yaml +0 -0
  83. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/acceptV1TracePayloads-5435cff37cfb6a85.yaml +0 -0
  84. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-datadog-proxy-7e2e608c101a564b.yaml +0 -0
  85. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-distributed-trace-c35a314698a3b966.yaml +0 -0
  86. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-errors-intake-proxy-endpoint-7e0f31d72a130f1a.yaml +0 -0
  87. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-fmt-command-cc31769942a5fec3.yaml +0 -0
  88. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-nix-build-support-29dc8a347e3bd7c1.yaml +0 -0
  89. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-optional-json-parser-10aac54bd1cbe322.yaml +0 -0
  90. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-otel-metrics-support-a2ebeb28cae2f0ba.yaml +0 -0
  91. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-python-3.13-support-ae7b96f4a10f20f4.yaml +0 -0
  92. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-rcm-endpoints-7e1f949e83e21039.yaml +0 -0
  93. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-request-forwarding-middleware-d3f325166b0f8e9e.yaml +0 -0
  94. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-service-naming-checks-2b68ff51d1b5496d.yaml +0 -0
  95. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-session-to-rcm-endpoints-d97e925a04a99a65.yaml +0 -0
  96. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-span-events-306e697168373899.yaml +0 -0
  97. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-support-for-plain-text-responses-00d20bf7b335e75b.yaml +0 -0
  98. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-support-telemetry-requests-10737cd3da802ca6.yaml +0 -0
  99. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/add-tracer_flare-endpoint-b2c81510920974d7.yaml +0 -0
  100. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/addAgentStateToInfo-f9a179ce88f2ab9e.yaml +0 -0
  101. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/addPeerTagsToInfo-4ccc2539d22c2993.yaml +0 -0
  102. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/allow-attribute-removal-snapshots-314b744b043b97c5.yaml +0 -0
  103. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/args-88f664c83a96075d.yaml +0 -0
  104. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/change-trace-proxy-headers-f9fcbb4efc4fcb95.yaml +0 -0
  105. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/check-http-header-sensitivity-daaa9d9595ae86d6.yaml +0 -0
  106. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/clearing-sessions-now-only-removes-6b0311673d8b37aa.yaml +0 -0
  107. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/client-173dbc6655e42337.yaml +0 -0
  108. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/content_length-e1bab75580aa1dcb.yaml +0 -0
  109. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/disable-error-responses-and-collect-trace-failures-in-memory-4a199bc7be416709.yaml +0 -0
  110. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/docker-arm64-images-a4b6b2cc527327d6.yaml +0 -0
  111. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/evp-proxy-on-info-d65cd077575306ca.yaml +0 -0
  112. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/exception-messages-21ee64461020edd1.yaml +0 -0
  113. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-docker-image-tags-785d40f5bfdb8003.yaml +0 -0
  114. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-fmt-logging-6a323fd8d5d4eb28.yaml +0 -0
  115. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-getting-tested-integrations-multiple-session-tokens-4ee41d545754f87f.yaml +0 -0
  116. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-matching-319744b82d2514c1.yaml +0 -0
  117. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-missing-slim-deps-fa3b0fc0292a09b3.yaml +0 -0
  118. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-partial-chunks-0db14ce3017e6173.yaml +0 -0
  119. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-racecondition-9bd0ef15b7da60fa.yaml +0 -0
  120. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/fix-tracerflare-request-parsing-fae18ff9997c216d.yaml +0 -0
  121. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/genai-vcr-support-b499ec54df84eaa3.yaml +0 -0
  122. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/ignore-dsm-pathway-hash-during-trace-snapshots-f0b99ea267fbad48.yaml +0 -0
  123. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/image-optimization-d614eccb59441217.yaml +0 -0
  124. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/improve-test-agent-debugging-5759413f1fc5f7fa.yaml +0 -0
  125. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/improve-test-agent-proxying-a207f0fc81b3ab2d.yaml +0 -0
  126. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/improve-trace-check-results-endpoints-6ab4132628520793.yaml +0 -0
  127. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/info-34dcd9cbcc382487.yaml +0 -0
  128. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/info-drop-p0s-c207889f590340fb.yaml +0 -0
  129. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/llmobs-eval-metric-endpoint-8b5222491969ab4f.yaml +0 -0
  130. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/llmobs-evp-proxy-1383f4b4962ac7c9.yaml +0 -0
  131. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/meta-struct-2cce08475cb05470.yaml +0 -0
  132. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/more-oai-cass-908eb5ea46bd2985.yaml +0 -0
  133. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/named-pipe-ded0ebbbeee2e7fa.yaml +0 -0
  134. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/new-process-id-tag-f0ab0daf652e05cc.yaml +0 -0
  135. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/oai-incomplete-cass-795ad19b6a226c1f.yaml +0 -0
  136. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/otlp-logs-grpc-45365879c22969aa.yaml +0 -0
  137. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/otlp-logs-support-d5a150d9f5304d7c.yaml +0 -0
  138. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/pipeline_stats_endpoint-e8ad6da735dc2647.yaml +0 -0
  139. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/profiling-endpoint-0cd209e4e5b6cfc0.yaml +0 -0
  140. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/provider-snapshot-server-f6a307acbf11d214.yaml +0 -0
  141. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/proxy-37c94e2fb428c6fc.yaml +0 -0
  142. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/python-3.12-952e06c6158af67d.yaml +0 -0
  143. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/python-support-1c447acc4607abc7.yaml +0 -0
  144. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/python310-025fbc190363de98.yaml +0 -0
  145. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/python310-docker-image-d4e329cfecf6510e.yaml +0 -0
  146. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/rc-encoding-length-fix-cc011edea7f8f5b2.yaml +0 -0
  147. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/rc-get-endpoint-e502f55b7df544e2.yaml +0 -0
  148. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/remoteconfig-requests-1af7abb99c61c069.yaml +0 -0
  149. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/remove-agent-state-header-from-info-87f920bf4ce5785c.yaml +0 -0
  150. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/remove-nix-ec1c4aca7dc002c4.yaml +0 -0
  151. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/remove-old-pythons-4667b182aacf0ce6.yaml +0 -0
  152. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/reuse-session-1670aa569907cf68.yaml +0 -0
  153. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/sample-rate-1e06ae4cdc933b14.yaml +0 -0
  154. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/session-requests-b8057811f976220e.yaml +0 -0
  155. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/session-tracerflares-400ce9b3d3838b40.yaml +0 -0
  156. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/snapshot-cmds-de4a561911afee11.yaml +0 -0
  157. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/snapshot-empty-maps-2cbe8cea3e7112fa.yaml +0 -0
  158. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/snapshot-error-messages-de41d9e3207fa30a.yaml +0 -0
  159. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/snapshot-filename-c068de1bc3e50c04.yaml +0 -0
  160. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/snapshot-order-type-2d6424e380b2c88f.yaml +0 -0
  161. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/snapshot-parent-id-7abb860008702e70.yaml +0 -0
  162. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/span-links-1ec76bd2b47a3880.yaml +0 -0
  163. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/span-ordering-1a7b383aa015bddc.yaml +0 -0
  164. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/span-parent-id-a4d7d63fa623361c.yaml +0 -0
  165. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/support-ant-vcr-1eff9a40caa0aba0.yaml +0 -0
  166. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/support-tracking-of-tested-integrations-ac19ccd1f8333c00.yaml +0 -0
  167. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/throttling-590bf58ecb3cc4a5.yaml +0 -0
  168. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/trace-stats-97da3a478dabfa99.yaml +0 -0
  169. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/trace-stats-snapshot-718ca37385c93e1e.yaml +0 -0
  170. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/traces-endpoint-f4f9c1d94d6ceda2.yaml +0 -0
  171. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/tracestats-fixes-07152c708e73ef96.yaml +0 -0
  172. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/tracestats-post-65ce788f81862532.yaml +0 -0
  173. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/tracestats-service-2a0a178cbd21b07d.yaml +0 -0
  174. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/uds-64b11960931d8b77.yaml +0 -0
  175. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/uds-c99ea5d099e67156.yaml +0 -0
  176. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/uds-container-8138f8b1438b1a0a.yaml +0 -0
  177. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/uds-permissions-903266ac6445b873.yaml +0 -0
  178. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/v0.5-traces-cf469b0b71398d97.yaml +0 -0
  179. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/v0.7-traces-7ea3ebbed7502d01.yaml +0 -0
  180. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-aws-bedrock-proxy-3bf018b1712d5105.yaml +0 -0
  181. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-cassette-name-middleware-fix-9e47c395892a9fe7.yaml +0 -0
  182. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-cassettes-for-openai-v5-6e9d78091de1f0c2.yaml +0 -0
  183. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-cassettes-for-vercel-ai-7a8275f9c2b48bc7.yaml +0 -0
  184. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-ci-mode-99dbd2940fff8d7a.yaml +0 -0
  185. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-custom-providers-map-a43b7e2d62d02015.yaml +0 -0
  186. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-prefix-instead-of-suffix-4c56dcb5038d222e.yaml +0 -0
  187. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-proxy-aws-recalculation-fix-2184c10270a7bca5.yaml +0 -0
  188. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-proxy-use-test-name-bugfix-be758294ba30ac78.yaml +0 -0
  189. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-proxy-use-test-name-e47891994c961c52.yaml +0 -0
  190. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/vcr-support-querystring-b06555fb9a7c90ae.yaml +0 -0
  191. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/version-0c32d2752f154eb9.yaml +0 -0
  192. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/wheels-68a7dc2f4b00e0c4.yaml +0 -0
  193. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/releasenotes/notes/windows-docker-image-1f5d5e894558bb4b.yaml +0 -0
  194. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/riotfile.py +0 -0
  195. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/setup.cfg +0 -0
  196. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/__init__.py +0 -0
  197. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/integration_snapshots/test_trace_stats_tracestats.json +0 -0
  198. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_apmtelemetry.py +0 -0
  199. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_client.py +0 -0
  200. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_container.py +0 -0
  201. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_remoteconfig.py +0 -0
  202. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_session.py +0 -0
  203. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_snapshot.py +0 -0
  204. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_trace.py +0 -0
  205. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_tracerflare.py +0 -0
  206. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_tracestats.py +0 -0
  207. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/test_vcr_proxy.py +0 -0
  208. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/tests/trace_utils.py +0 -0
  209. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/anthropic/anthropic_v1_messages_post_26d618ee.yaml +0 -0
  210. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/anthropic/anthropic_v1_messages_post_595f439c.yaml +0 -0
  211. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/anthropic/anthropic_v1_messages_post_717ba0b4.yaml +0 -0
  212. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/anthropic/anthropic_v1_messages_post_a1af2c12.yaml +0 -0
  213. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/deepseek/deepseek_chat_completions_post_afb6ccab.yaml +0 -0
  214. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_audio_transcriptions_post_173af3e5.yaml +0 -0
  215. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_audio_transcriptions_post_71305a25.yaml +0 -0
  216. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_audio_translations_post_d5b5b8d6.yaml +0 -0
  217. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_audio_translations_post_dd92a18a.yaml +0 -0
  218. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_0f1514e1.yaml +0 -0
  219. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_172294b4.yaml +0 -0
  220. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_193ae44a.yaml +0 -0
  221. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_23558eed.yaml +0 -0
  222. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_2edb59ae.yaml +0 -0
  223. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_3517e44e.yaml +0 -0
  224. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_36bdc0cb.yaml +0 -0
  225. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_3c045664.yaml +0 -0
  226. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_432a8e46.yaml +0 -0
  227. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_4749eff9.yaml +0 -0
  228. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_4dce8db6.yaml +0 -0
  229. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_57612363.yaml +0 -0
  230. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_649d8162.yaml +0 -0
  231. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_655a8ef2.yaml +0 -0
  232. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_66dfc80e.yaml +0 -0
  233. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_67e8e833.yaml +0 -0
  234. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_6df851cc.yaml +0 -0
  235. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_7c2d1ac5.yaml +0 -0
  236. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_82a4bb3c.yaml +0 -0
  237. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_9122b1ae.yaml +0 -0
  238. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_917478d0.yaml +0 -0
  239. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_a73ecd7a.yaml +0 -0
  240. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_a925b737.yaml +0 -0
  241. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_ae4728c2.yaml +0 -0
  242. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_b29f1a87.yaml +0 -0
  243. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_ce69ed91.yaml +0 -0
  244. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_d8fb132a.yaml +0 -0
  245. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_d94d5844.yaml +0 -0
  246. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_d98ce00d.yaml +0 -0
  247. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_chat_completions_post_ebff79da.yaml +0 -0
  248. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_33681ea4.yaml +0 -0
  249. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_5d2418d4.yaml +0 -0
  250. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_619dee1c.yaml +0 -0
  251. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_6224acff.yaml +0 -0
  252. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_87f617af.yaml +0 -0
  253. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_98c30019.yaml +0 -0
  254. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_9bb49464.yaml +0 -0
  255. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_completions_post_b24dbf7d.yaml +0 -0
  256. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_embeddings_post_0381abe4.yaml +0 -0
  257. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_embeddings_post_48694087.yaml +0 -0
  258. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_embeddings_post_541bd4d0.yaml +0 -0
  259. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_files_file-RpTpuvRVtnKpdKZb7DDGto_content_get_60bd10ef.yaml +0 -0
  260. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_files_file-RpTpuvRVtnKpdKZb7DDGto_delete_3ee48409.yaml +0 -0
  261. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_files_file-RpTpuvRVtnKpdKZb7DDGto_get_1afefb93.yaml +0 -0
  262. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_files_get_68efa25d.yaml +0 -0
  263. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_files_post_2fcf9545.yaml +0 -0
  264. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_files_post_957d63ba.yaml +0 -0
  265. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_fine_tuning_jobs_ftjob-q9CUUUsHJemGUVQ1Ecc01zcf_cancel_post_d7c16b38.yaml +0 -0
  266. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_fine_tuning_jobs_ftjob-q9CUUUsHJemGUVQ1Ecc01zcf_events_get_557d820e.yaml +0 -0
  267. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_fine_tuning_jobs_ftjob-q9CUUUsHJemGUVQ1Ecc01zcf_get_265489e7.yaml +0 -0
  268. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_fine_tuning_jobs_get_ebc57c6f.yaml +0 -0
  269. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_fine_tuning_jobs_post_c3b6e4a9.yaml +0 -0
  270. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_075386c4.yaml +0 -0
  271. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_57b4f4da.yaml +0 -0
  272. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_660e9dd7.yaml +0 -0
  273. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_993e0192.yaml +0 -0
  274. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_a2f1eb43.yaml +0 -0
  275. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_ae72c45f.yaml +0 -0
  276. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_cf5af376.yaml +0 -0
  277. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_edits_post_dbefb624.yaml +0 -0
  278. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_generations_post_48272841.yaml +0 -0
  279. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_generations_post_736070ea.yaml +0 -0
  280. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_variations_post_5971e285.yaml +0 -0
  281. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_images_variations_post_f2f62f6c.yaml +0 -0
  282. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_models_ft_gpt-4.1-mini-2025-04-14_datadog-staging__BkaILRSh_delete_c70f2992.yaml +0 -0
  283. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_models_get_e04cf04b.yaml +0 -0
  284. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_models_gpt-4_get_b13c5b23.yaml +0 -0
  285. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_moderations_post_532b3315.yaml +0 -0
  286. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_responses_post_33fb1f66.yaml +0 -0
  287. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_responses_post_5ca556ec.yaml +0 -0
  288. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_responses_post_c05c936e.yaml +0 -0
  289. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_responses_post_c61e3067.yaml +0 -0
  290. {ddapm_test_agent-1.36.0 → ddapm_test_agent-1.37.0}/vcr-cassettes/openai/openai_responses_post_ee2423e6.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ddapm-test-agent
3
- Version: 1.36.0
3
+ Version: 1.37.0
4
4
  Summary: Test agent for Datadog APM client libraries
5
5
  Home-page: https://github.com/Datadog/dd-apm-test-agent
6
6
  Author: Kyle Verhoog
@@ -22,12 +22,13 @@ Requires-Dist: typing_extensions
22
22
  Requires-Dist: yarl
23
23
  Requires-Dist: vcrpy
24
24
  Requires-Dist: requests-aws4auth
25
+ Requires-Dist: jinja2>=3.0.0
25
26
  Requires-Dist: opentelemetry-proto<1.37.0,>1.33.0
26
27
  Requires-Dist: protobuf>=3.19.0
27
28
  Requires-Dist: grpcio<2.0,>=1.66.2
28
29
  Requires-Dist: pywin32; sys_platform == "win32"
29
30
  Provides-Extra: testing
30
- Requires-Dist: ddtrace==3.11.0; extra == "testing"
31
+ Requires-Dist: ddtrace==3.15.0; extra == "testing"
31
32
  Requires-Dist: pytest; extra == "testing"
32
33
  Requires-Dist: riot==0.20.1; extra == "testing"
33
34
  Requires-Dist: PyYAML==6.0.3; extra == "testing"
@@ -67,8 +68,8 @@ The test agent can be installed from PyPI:
67
68
 
68
69
  pip install ddapm-test-agent
69
70
 
70
- # HTTP on port 8126, OTLP HTTP on port 4318, OTLP GRPC on port 4317
71
- ddapm-test-agent --port=8126 --otlp-http-port=4318 --otlp-grpc-port=4317
71
+ # HTTP on port 8126, OTLP HTTP on port 4318, OTLP GRPC on port 4317, with the web-ui enabled
72
+ ddapm-test-agent --port=8126 --otlp-http-port=4318 --otlp-grpc-port=4317 --web-ui-port=8080
72
73
 
73
74
  or from Docker:
74
75
 
@@ -171,6 +172,15 @@ The traces are normalized and output in JSON to a file. The following transforma
171
172
  - The span meta and metrics maps if empty are excluded.
172
173
 
173
174
 
175
+ #### Web UI
176
+
177
+ The test agent includes an optional and **experimental** Web UI that provides a dashboard for inspecting agent configuration, viewing received requests, exploring traces and snapshots, and managing tracer-flare and remote configuration.
178
+
179
+ The UI can be enabled with the `--web-ui-port PORT` command-line argument or by setting the `WEB_UI_PORT` environment variable.
180
+ Once enabled, the Web UI can be accessed at `http://localhost:PORT` (default port is `8080`).
181
+
182
+ There is also a maximum number of requests to store in memory to display in the UI, which can be configured with the `--max-requests` command-line argument or by setting the `MAX_REQUESTS` environment variable (default is `200` requests).
183
+
174
184
  ### Recording 3rd party API requests
175
185
 
176
186
  The test agent can be configured to proxy requests to select provider API endpoints, capturing real requests to
@@ -21,8 +21,8 @@ The test agent can be installed from PyPI:
21
21
 
22
22
  pip install ddapm-test-agent
23
23
 
24
- # HTTP on port 8126, OTLP HTTP on port 4318, OTLP GRPC on port 4317
25
- ddapm-test-agent --port=8126 --otlp-http-port=4318 --otlp-grpc-port=4317
24
+ # HTTP on port 8126, OTLP HTTP on port 4318, OTLP GRPC on port 4317, with the web-ui enabled
25
+ ddapm-test-agent --port=8126 --otlp-http-port=4318 --otlp-grpc-port=4317 --web-ui-port=8080
26
26
 
27
27
  or from Docker:
28
28
 
@@ -125,6 +125,15 @@ The traces are normalized and output in JSON to a file. The following transforma
125
125
  - The span meta and metrics maps if empty are excluded.
126
126
 
127
127
 
128
+ #### Web UI
129
+
130
+ The test agent includes an optional and **experimental** Web UI that provides a dashboard for inspecting agent configuration, viewing received requests, exploring traces and snapshots, and managing tracer-flare and remote configuration.
131
+
132
+ The UI can be enabled with the `--web-ui-port PORT` command-line argument or by setting the `WEB_UI_PORT` environment variable.
133
+ Once enabled, the Web UI can be accessed at `http://localhost:PORT` (default port is `8080`).
134
+
135
+ There is also a maximum number of requests to store in memory to display in the UI, which can be configured with the `--max-requests` command-line argument or by setting the `MAX_REQUESTS` environment variable (default is `200` requests).
136
+
128
137
  ### Recording 3rd party API requests
129
138
 
130
139
  The test agent can be configured to proxy requests to select provider API endpoints, capturing real requests to
@@ -39,7 +39,9 @@ from aiohttp.web import middleware
39
39
  from grpc import aio as grpc_aio
40
40
  from msgpack.exceptions import ExtraData as MsgPackExtraDataException
41
41
  from multidict import CIMultiDict
42
+ from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ExportLogsServiceResponse
42
43
  from opentelemetry.proto.collector.logs.v1.logs_service_pb2_grpc import add_LogsServiceServicer_to_server
44
+ from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ExportMetricsServiceResponse
43
45
  from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2_grpc import add_MetricsServiceServicer_to_server
44
46
 
45
47
  from . import _get_version
@@ -323,12 +325,14 @@ class Agent:
323
325
  "/v1.0/traces",
324
326
  "/v0.6/stats",
325
327
  "/v0.7/config",
328
+ "/info",
326
329
  "/telemetry/proxy/api/v2/apmtelemetry",
327
330
  "/v0.1/pipeline_stats",
328
331
  "/tracer_flare/v1",
329
332
  "/evp_proxy/v2/api/v2/llmobs",
330
333
  "/evp_proxy/v2/api/intake/llm-obs/v1/eval-metric",
331
334
  "/evp_proxy/v2/api/intake/llm-obs/v2/eval-metric",
335
+ "/evp_proxy/v2/api/v2/exposures",
332
336
  "/evp_proxy/v4/api/v2/errorsintake",
333
337
  ]
334
338
 
@@ -722,7 +726,9 @@ class Agent:
722
726
  num_resource_logs,
723
727
  total_log_records,
724
728
  )
725
- return web.HTTPOk()
729
+ return web.Response(
730
+ body=ExportLogsServiceResponse().SerializeToString(), status=200, content_type="application/x-protobuf"
731
+ )
726
732
 
727
733
  async def handle_v1_metrics(self, request: Request) -> web.Response:
728
734
  metrics_data = self._decode_v1_metrics(request)
@@ -737,7 +743,9 @@ class Agent:
737
743
  num_resource_metrics,
738
744
  total_metrics,
739
745
  )
740
- return web.HTTPOk()
746
+ return web.Response(
747
+ body=ExportMetricsServiceResponse().SerializeToString(), status=200, content_type="application/x-protobuf"
748
+ )
741
749
 
742
750
  async def handle_v07_remoteconfig(self, request: Request) -> web.Response:
743
751
  """Emulates Remote Config endpoint: /v0.7/config"""
@@ -802,6 +810,9 @@ class Agent:
802
810
  async def handle_evp_proxy_v2_llmobs_eval_metric(self, request: Request) -> web.Response:
803
811
  return web.HTTPOk()
804
812
 
813
+ async def handle_evp_proxy_v2_api_v2_exposures(self, request: Request) -> web.Response:
814
+ return web.HTTPOk()
815
+
805
816
  async def handle_evp_proxy_v4_api_v2_errorsintake(self, request: Request) -> web.Response:
806
817
  return web.HTTPOk()
807
818
 
@@ -1129,6 +1140,7 @@ class Agent:
1129
1140
  self.handle_v1_tracer_flare,
1130
1141
  self.handle_evp_proxy_v2_api_v2_llmobs,
1131
1142
  self.handle_evp_proxy_v2_llmobs_eval_metric,
1143
+ self.handle_evp_proxy_v2_api_v2_exposures,
1132
1144
  self.handle_evp_proxy_v4_api_v2_errorsintake,
1133
1145
  self.handle_v1_logs,
1134
1146
  self.handle_v1_metrics,
@@ -1423,6 +1435,7 @@ class Agent:
1423
1435
  "/evp_proxy/v2/api/v2/llmobs": self.handle_evp_proxy_v2_api_v2_llmobs,
1424
1436
  "/evp_proxy/v2/api/intake/llm-obs/v1/eval-metric": self.handle_evp_proxy_v2_llmobs_eval_metric,
1425
1437
  "/evp_proxy/v2/api/intake/llm-obs/v2/eval-metric": self.handle_evp_proxy_v2_llmobs_eval_metric,
1438
+ "/evp_proxy/v2/api/v2/exposures": self.handle_evp_proxy_v2_api_v2_exposures,
1426
1439
  "/evp_proxy/v4/api/v2/errorsintake": self.handle_evp_proxy_v4_api_v2_errorsintake,
1427
1440
  "/info": self.handle_info,
1428
1441
  # Test endpoints
@@ -1588,18 +1601,30 @@ def make_app(
1588
1601
  vcr_ci_mode: bool,
1589
1602
  vcr_provider_map: str,
1590
1603
  vcr_ignore_headers: str,
1604
+ enable_web_ui: bool = False,
1591
1605
  ) -> web.Application:
1592
1606
  agent = Agent()
1607
+
1608
+ # Build middleware list conditionally
1609
+ middlewares = []
1610
+ if enable_web_ui:
1611
+ from .web import request_response_capture_middleware
1612
+
1613
+ middlewares.append(request_response_capture_middleware)
1614
+ middlewares.extend(
1615
+ [
1616
+ handle_exception_middleware,
1617
+ agent.check_failure_middleware,
1618
+ agent.store_request_middleware,
1619
+ agent.request_forwarder_middleware,
1620
+ session_token_middleware,
1621
+ agent.vcr_proxy_suffix_middleware,
1622
+ ]
1623
+ )
1624
+
1593
1625
  app = web.Application(
1594
1626
  client_max_size=int(100e6), # 100MB - arbitrary
1595
- middlewares=[
1596
- handle_exception_middleware, # type: ignore
1597
- agent.check_failure_middleware, # type: ignore
1598
- agent.store_request_middleware, # type: ignore
1599
- agent.request_forwarder_middleware, # type: ignore
1600
- session_token_middleware, # type: ignore
1601
- agent.vcr_proxy_suffix_middleware, # type: ignore
1602
- ],
1627
+ middlewares=middlewares,
1603
1628
  )
1604
1629
  app.add_routes(
1605
1630
  [
@@ -1622,6 +1647,7 @@ def make_app(
1622
1647
  web.post("/evp_proxy/v2/api/v2/llmobs", agent.handle_evp_proxy_v2_api_v2_llmobs),
1623
1648
  web.post("/evp_proxy/v2/api/intake/llm-obs/v1/eval-metric", agent.handle_evp_proxy_v2_llmobs_eval_metric),
1624
1649
  web.post("/evp_proxy/v2/api/intake/llm-obs/v2/eval-metric", agent.handle_evp_proxy_v2_llmobs_eval_metric),
1650
+ web.post("/evp_proxy/v2/api/v2/exposures", agent.handle_evp_proxy_v2_api_v2_exposures),
1625
1651
  web.post("/evp_proxy/v4/api/v2/errorsintake", agent.handle_evp_proxy_v4_api_v2_errorsintake),
1626
1652
  web.get("/info", agent.handle_info),
1627
1653
  web.get("/test/session/start", agent.handle_session_start),
@@ -1972,6 +1998,18 @@ def main(args: Optional[List[str]] = None) -> None:
1972
1998
  default=os.environ.get("VCR_IGNORE_HEADERS", ""),
1973
1999
  help="Comma-separated list of headers to ignore when recording VCR cassettes.",
1974
2000
  )
2001
+ parser.add_argument(
2002
+ "--web-ui-port",
2003
+ type=int,
2004
+ default=int(os.environ.get("WEB_UI_PORT", 0)),
2005
+ help="Port to serve the optional web UI (default: disabled). Example: --web-ui-port=8080",
2006
+ )
2007
+ parser.add_argument(
2008
+ "--max-requests",
2009
+ type=int,
2010
+ default=int(os.environ.get("MAX_REQUESTS", 200)),
2011
+ help="Maximum number of requests to keep in memory for the UI (default: 200). Older requests are discarded when limit is reached.",
2012
+ )
1975
2013
  parsed_args = parser.parse_args(args=args)
1976
2014
  logging.basicConfig(level=parsed_args.log_level)
1977
2015
 
@@ -2018,6 +2056,7 @@ def main(args: Optional[List[str]] = None) -> None:
2018
2056
  vcr_ci_mode=parsed_args.vcr_ci_mode,
2019
2057
  vcr_provider_map=parsed_args.vcr_provider_map,
2020
2058
  vcr_ignore_headers=parsed_args.vcr_ignore_headers,
2059
+ enable_web_ui=parsed_args.web_ui_port > 0,
2021
2060
  )
2022
2061
 
2023
2062
  # Validate port configuration
@@ -2027,6 +2066,13 @@ def main(args: Optional[List[str]] = None) -> None:
2027
2066
  raise ValueError("APM and OTLP GRPC ports cannot be the same")
2028
2067
  if parsed_args.otlp_http_port == parsed_args.otlp_grpc_port:
2029
2068
  raise ValueError("OTLP HTTP and GRPC ports cannot be the same")
2069
+ if parsed_args.web_ui_port > 0:
2070
+ if parsed_args.web_ui_port == parsed_args.port:
2071
+ raise ValueError("Web UI and APM ports cannot be the same")
2072
+ if parsed_args.web_ui_port == parsed_args.otlp_http_port:
2073
+ raise ValueError("Web UI and OTLP HTTP ports cannot be the same")
2074
+ if parsed_args.web_ui_port == parsed_args.otlp_grpc_port:
2075
+ raise ValueError("Web UI and OTLP GRPC ports cannot be the same")
2030
2076
 
2031
2077
  # Get the shared agent instance from the main app
2032
2078
  agent = app["agent"]
@@ -2044,15 +2090,41 @@ def main(args: Optional[List[str]] = None) -> None:
2044
2090
 
2045
2091
  otlp_http_app = make_otlp_http_app(agent)
2046
2092
 
2093
+ # Create Web UI app if enabled
2094
+ web_ui_app = None
2095
+ if parsed_args.web_ui_port > 0:
2096
+ from .web import WebUI
2097
+
2098
+ # Pass configuration directly to WebUI
2099
+ web_ui_config = {
2100
+ "snapshot_dir": parsed_args.snapshot_dir,
2101
+ "vcr_cassettes_directory": parsed_args.vcr_cassettes_directory,
2102
+ "disable_error_responses": parsed_args.disable_error_responses,
2103
+ "web_ui_port": parsed_args.web_ui_port,
2104
+ "max_requests": parsed_args.max_requests,
2105
+ }
2106
+ web_ui = WebUI(agent, config=web_ui_config)
2107
+ web_ui_app = web_ui.make_app()
2108
+ # Store WebUI instance reference for middleware access
2109
+ web_ui_app._webui_instance = web_ui
2110
+ # Also store on main app for middleware access
2111
+ app._webui_instance = web_ui
2112
+
2047
2113
  async def run_servers():
2048
2114
  """Run APM and OTLP HTTP servers concurrently."""
2049
- # Create runners for both apps
2115
+ # Create runners for apps
2050
2116
  apm_runner = web.AppRunner(app)
2051
2117
  await apm_runner.setup()
2052
2118
 
2053
2119
  otlp_http_runner = web.AppRunner(otlp_http_app)
2054
2120
  await otlp_http_runner.setup()
2055
2121
 
2122
+ # Create Web UI runner if enabled
2123
+ web_ui_runner = None
2124
+ if web_ui_app is not None:
2125
+ web_ui_runner = web.AppRunner(web_ui_app)
2126
+ await web_ui_runner.setup()
2127
+
2056
2128
  # Start GRPC server if available (async creation)
2057
2129
  otlp_grpc_server = await make_otlp_grpc_server_async(
2058
2130
  agent, parsed_args.otlp_http_port, parsed_args.otlp_grpc_port
@@ -2066,12 +2138,23 @@ def main(args: Optional[List[str]] = None) -> None:
2066
2138
 
2067
2139
  otlp_http_site = web.TCPSite(otlp_http_runner, port=parsed_args.otlp_http_port)
2068
2140
 
2069
- # Start both servers concurrently
2070
- await asyncio.gather(apm_site.start(), otlp_http_site.start())
2141
+ # Create Web UI site if enabled
2142
+ web_ui_site = None
2143
+ if web_ui_runner is not None:
2144
+ web_ui_site = web.TCPSite(web_ui_runner, port=parsed_args.web_ui_port)
2145
+
2146
+ # Start servers concurrently
2147
+ sites_to_start = [apm_site.start(), otlp_http_site.start()]
2148
+ if web_ui_site is not None:
2149
+ sites_to_start.append(web_ui_site.start())
2150
+
2151
+ await asyncio.gather(*sites_to_start)
2071
2152
 
2072
2153
  print(f"======== Running APM server on port {parsed_args.port} ========")
2073
2154
  print(f"======== Running OTLP HTTP server on port {parsed_args.otlp_http_port} ========")
2074
2155
  print(f"======== Running OTLP GRPC server on port {parsed_args.otlp_grpc_port} ========")
2156
+ if web_ui_site is not None:
2157
+ print(f"======== Running Web UI on port {parsed_args.web_ui_port} ========")
2075
2158
  print("(Press CTRL+C to quit)")
2076
2159
 
2077
2160
  try:
@@ -2082,6 +2165,8 @@ def main(args: Optional[List[str]] = None) -> None:
2082
2165
  finally:
2083
2166
  await apm_runner.cleanup()
2084
2167
  await otlp_http_runner.cleanup()
2168
+ if web_ui_runner is not None:
2169
+ await web_ui_runner.cleanup()
2085
2170
  await otlp_grpc_server.stop(grace=5.0)
2086
2171
 
2087
2172
  # Run the servers
@@ -26,7 +26,7 @@ class RemoteConfigServer:
26
26
  self._update_response(token, data)
27
27
 
28
28
  @staticmethod
29
- def _build_config_path_response(path: str, msg: str) -> Dict[str, Any]:
29
+ def _build_config_path_response(path: str, msg: Any) -> Dict[str, Any]:
30
30
  expires_date = datetime.datetime.strftime(
31
31
  datetime.datetime.now() + datetime.timedelta(days=1), "%Y-%m-%dT%H:%M:%SZ"
32
32
  )
@@ -84,7 +84,7 @@ class RemoteConfigServer:
84
84
  }
85
85
  return remote_config_payload
86
86
 
87
- def create_config_path_response(self, token: Optional[str], path: str, msg: str) -> None:
87
+ def create_config_path_response(self, token: Optional[str], path: str, msg: Any) -> None:
88
88
  remote_config_payload = self._build_config_path_response(path, msg)
89
89
  self.create_config_response(token, remote_config_payload)
90
90